Используйте NSUserActivity или Core Spotlight

Я прочитал какой-то учебник и обнаружил, что NSUserActivity для индексной информации, когда пользователь выполняет действие, Core Spotlight для индексации набора данных контента в приложении.

Использовать NSUserActivity

var activity = NSUserActivity(activityType: "com.example.demo.searchapi")
activity.title = contactEntity.name
activity.userInfo = ["id": contactEntity.uid]
activity.eligibleForSearch = true
activity.keywords = NSSet(array: [contactEntity.name,contactEntity.phoneNumber, contactEntity.email]) as! Set

activity.becomeCurrent()

Использовать основное внимание

let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeContact as String)
attributeSet.title = contactEntity.name
attributeSet.relatedUniqueIdentifier = contactEntity.uid

let searchableItem = CSSearchableItem(uniqueIdentifier: contactEntity.uid, domainIdentifier: "com.example.demo.searchapi", attributeSet: attributeSet)

CSSearchableIndex.defaultSearchableIndex().indexSearchableItems(searchableItems) { error in  
if let error = error { 
    print("Error indexing: \(error)")
} else {
    print("Indexed.")
}

Но я не думаю, что есть разница между двумя результатами решения. Если пользователь совершает действие, я могу использовать Core Spotlight вместо NSUserActivity. Это дает мне тот же результат.

Итак, почему Apple должна предоставлять два разных решения, которые дают одинаковый результат?


person huync    schedule 07.01.2016    source источник
comment
NSUserActivity в iOS 9 имеет contentAttributeSet типа CSSearchableItemAttributeSet   -  person onmyway133    schedule 07.01.2016
comment
Я знаю это. Но CSSearchableItem также инициализируется с параметром CSSearchableItemAttributeSet. Итак, почему Apple предоставляет два API (NSUserActivity и Core Spotlight) с одинаковым результатом. не нахожу отличий   -  person huync    schedule 08.01.2016
comment
Core Spotlight не поддерживает общедоступное индексирование, в отличие от NSUserActivity. NSUserActivity можно использовать как для индексации на устройстве, так и для общедоступной.   -  person PGDev    schedule 19.01.2016


Ответы (1)


Теперь я включаю Core Spotlight и NSUserActivity в свои приложения и пришел к выводу, что есть некоторые различия.

Как сказал @PGDev в ваших комментариях, NSUserActivity можно сделать общедоступным индексом (на серверах Apple), что затем может быть полезно для отображения в результатах поиска других пользователей. В то время как Core Spotlight доступен только для каждого устройства.

Самая большая выгодная разница с NSUserActivity, которая применима к моим приложениям, заключается в том, что чем больше пользователей выполняют одно и то же activity, например читают одну и ту же новость, тем популярнее становится этот индекс и может иметь полезные результаты. Apple: улучшите результаты поиска

  • Частота, с которой пользователи просматривают ваш контент (которая фиксируется, когда вы используете NSUserActivity)
  • Уровень взаимодействия пользователей с вашим контентом (определяется коэффициентом взаимодействия, который основан на количестве раз, когда пользователи нажимают на элемент, связанный с вашим приложением, и на количестве элементов, связанных с приложением, которые отображаются в результатах поиска).
  • Популярность URL-адреса на вашем веб-сайте и объем доступных структурированных данных
person RoLYroLLs    schedule 13.06.2016