Hello, Habr!
Yandex has been struggling lately to screw up its mobile apps, turning them into "superapp", if that word is wrong. And one of the two applications of the company, for which this direction of development is most noticeable, is a taxi.
Not so long ago, it was renamed "Yandex Go", at the same time pushing inside Food, Shop, public transport, a bunch of advertising. And here I treacherously, without declaring war, came across a problem that ultimately served as the idea for writing this micro-article.
I have quite a few different applications on my iPhone, and I'm used to launching those that are not on the first page through the Spotlight system search - the one on the iOS home screen. The trouble is that with the aforementioned renaming of the Yandex application, the main keyword βtaxiβ has disappeared from its name. It has now become impossible to find Yandex Go using it. It's hard to guess how much of this could have affected the launch statistics or the app's revenues, but at least the UX was definitely a loser, and quite stupid at that. By the way, in the same way you will not be able to find a taxi "Maxim" by the keyword "maxim", and Delivery Club is not searched for by the query "food".
At the same time, a quick analysis of the problem shows that the "VK" application is normally detected by the request "VKontakte", iOS offers to launch "Investments" when you enter "tinkoff", and Okko very appropriately pops up for the keywords "movie", "eye" and even "ivie". How did you achieve this? In fact, very simple ...
Spotlight keywords are easily added if you already support Handoff, that is, seamless user switching between your different Apple devices, or Siri Shortcuts. You just need to set a property keywords
for the object NSUserActivity
with which you are already working.
let activity = NSUserActivity(activityType: typeID)
activity.keywords = ["", " "]
If, for some reason, you are not on the way with Handoff and Siri, or you want to support Spotlight on a more serious level, use it CoreSpotlight
.
import CoreSpotlight
let attributes = CSSearchableItemAttributeSet(contentType: .application)
attributes.title = " "
attributes.contentDescription = " "
attributes.thumbnailData = image.pngData()
attributes.keywords = ["", "", ""]
let searchableItem = CSSearchableItem(uniqueIdentifier: "pizza", domainIdentifier: "readyMeal", attributeSet: attributes)
CSSearchableIndex.default().indexSearchableItems([searchableItem]) { _ -> Void in }
, ...
, iOS, , , .
, , , , . , , Spotlight, .
!