我阅读了一些教程,并在用户进行活动时发现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()
使用Core Spotlight
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必须提供两个具有相同结果的差异解决方案呢?
答案 0 :(得分:1)
我现在将Core Spotlight和NSUserActivity
纳入我的应用程序中,并且我开始学习一些差异。
正如@PGDev在您的评论中所述,NSUserActivity
可以设置为公开索引(在Apple服务器上),这样可以有助于在其他用户的搜索结果中显示。虽然Core Spotlight仅适用于每个设备。
适用于我的应用的NSUserActivity
的最大好处是,用户执行相同activity
的用户越多,比如说相同的新闻报道,该索引变得越流行且可以拥有有益的结果。 Apple - Enhance Your Search Results
- 用户查看您的内容的频率(使用
NSUserActivity
时捕获的内容)- 用户对您的内容的参与度(由参与率决定,这取决于用户点按与您的应用相关的项目的次数以及搜索结果中显示的应用相关项目的数量)
- 您网站中网址的受欢迎程度以及可用的结构化数据量