Я пытаюсь опубликовать свое приложение в Spotlight
Основная информация теперь доступна, но телефонный звонок и навигация не работают.
Это мой код ниже
var searchableItems = [CSSearchableItem]()
let hospitals = contents.compactMap { $0 as? Hospital }
for hospital in hospitals {
let searchItemAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeData as String)
searchItemAttributeSet.title = hospital.name
searchItemAttributeSet.contentDescription = "visited"
searchItemAttributeSet.phoneNumbers = ["00-0000-0000"]
searchItemAttributeSet.latitude = NSNumber(value: hospital.coordinate.latitude)
searchItemAttributeSet.longitude = NSNumber(value: hospital.coordinate.longitude)
searchItemAttributeSet.supportsPhoneCall = 1
searchItemAttributeSet.supportsNavigation = 1
let searchableItem = CSSearchableItem(uniqueIdentifier: "\(hospital.identifier)", domainIdentifier: "hospitals", attributeSet: searchItemAttributeSet)
searchableItems.append(searchableItem)
}
CSSearchableIndex.default().indexSearchableItems(searchableItems) { (error) -> Void in
if error != nil {
print(error?.localizedDescription ?? "Error")
}
}
При поиске в Spotlight есть title и contentDescription, но нет кнопки phoneCall и кнопки навигации.
Как я могу добавить их в результат
Вы можете попробовать задать ключевые слова для поиска. например, searchItemAttributeSet.keywords = ["xxx", "xxx"];
Вам нужно установить свойства на true
, а не 1
for hospital in hospitals {
let searchItemAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeData as String)
searchItemAttributeSet.title = hospital.name
searchItemAttributeSet.contentDescription = "visited"
searchItemAttributeSet.phoneNumbers = ["00-0000-0000"]
searchItemAttributeSet.latitude = NSNumber(value: hospital.coordinate.latitude)
searchItemAttributeSet.longitude = NSNumber(value: hospital.coordinate.longitude)
searchItemAttributeSet.supportsPhoneCall = true
searchItemAttributeSet.supportsNavigation = true
let searchableItem = CSSearchableItem(uniqueIdentifier: "\(hospital.identifier)", domainIdentifier: "hospitals", attributeSet: searchItemAttributeSet)
searchableItems.append(searchableItem)
}
Спасибо!! оно работает!! тогда почему Apple предлагает NSNumber, а не Bool?
Это NSNumber. NSNumber может заключать в себе ряд числовых типов, включая bool. Swift автоматически переносит числовой литерал в NSNumber.
У меня еще такой вопрос, если я поддерживаю только навигацию, то работает, а если я поддерживаю и звонок и навигацию, то обе иконки не видны что делать?
Из моего тестирования кажется, что вы можете поддерживать один или другой, но не оба, для определенного результата поиска.
не ключевые слова, я хочу, чтобы кнопка навигации и телефонного звонка отображалась справа от результата прожектора