CSSearchableAttributeset supportPhoneCall, навигация не работает - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь выставить свое приложение на 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 есть заголовок и описание контента, но нет кнопки вызова телефона и кнопки навигации

Как я могу добавить их к результату

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Вам необходимо установить свойства 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)
}
0 голосов
/ 09 апреля 2019

Вы можете попытаться установить ключевые слова, которые вы хотите найти. например searchItemAttributeSet.keywords = ["xxx", "xxx"];

...