iosswiftspotlightcorespotlight

CSSearchableAttributeset supportPhoneCall, Navigation are not working


I'm trying to expose my app on Spotlight

Basic Info is now exposed but phone call and navigation are not working

This is my code below

    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")
        }
    }

While searching on Spotlight there are title and contentDescription but not phoneCall Button and navigation Button

How can I add them to result


Solution

  • You need to set the properties to true, not 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)
    }