- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望我的设备能够根据聚光灯人物索引预测谁在给我打电话。我已将人员信息上传到聚光灯索引,并且系统在我搜索时提供信息,但在有人打电话时则不提供信息。下面的代码做了所有这些事情,我不明白出了什么问题
if people.count > 0 {
var peopleArray = [CSSearchableItem]()
var peopleGUIDs = [String]()
for person in people {
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
// Basic AttributeSet setup
attributeSet.title = person.nameForList
attributeSet.contentDescription = person.division?.title
// Add first phone number to AttributeSet
var phoneNumber: NSString?
let contacts = Array(person.contacts)
for contact in contacts {
if contact.type == "phone" {
phoneNumber = contact.value as NSString
break
}
}
if phoneNumber != nil {
if let preparedNumber = phoneNumber!.removingPercentEncoding {
attributeSet.phoneNumbers = [preparedNumber]
attributeSet.supportsPhoneCall = true
}
}
attributeSet.displayName = person.name
// Add photo number to AttributeSet
if let photoPath = person.photo {
let key = SDWebImageManager.shared().cacheKey(for: NSURL(string: photoPath) as URL!)
let image = SDImageCache.shared().imageFromDiskCache(forKey: key)
var data = Data()
if let image = image {
if let dataFromImage = UIImagePNGRepresentation(image) {
data = dataFromImage
}
} else {
data = dataFromImage
}
attributeSet.thumbnailData = data
}
peoplesGUIDs.append(person.id)
let item = CSSearchableItem(uniqueIdentifier: person.id, domainIdentifier: "com.it.companySpotlight", attributeSet: attributeSet)
peopleArray.append(item)
}
CSSearchableIndex.default().indexSearchableItems(peopleArray) { (error) in
DispatchQueue.main.async(execute: {
if let error = error {
print("Indexing error: \(error.localizedDescription)")
} else {
print("Search for people successfully indexed")
}
})
}
}
有人知道如何解决这个问题吗?
最佳答案
过了一会儿,Paulw11说我需要使用CallKit扩展,所以有解决方案:
将联系人写入文件
if #available(iOS 10.0, *) {
let numbers = ["79175870629"]
let labels = ["Stranger name"]
// Replace it with your id
let groupId = "group.YOUR.ID"
let container = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: groupId)
guard let fileUrl = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: groupId)?
.appendingPathComponent("contacts") else { return }
var string = ""
for (number, label) in zip(numbers, labels) {
string += "\(number),\(label)\n"
}
try? string.write(to: fileUrl, atomically: true, encoding: .utf8)
CXCallDirectoryManager.sharedInstance.reloadExtension(
withIdentifier: groupId)
} else {
// Fallback on earlier versions
}
调用reloadExtension时会调用该方法
override func beginRequest(with context: CXCallDirectoryExtensionContext) {
context.delegate = self
if #available(iOSApplicationExtension 11.0, *) {
if context.isIncremental {
addOrRemoveIncrementalBlockingPhoneNumbers(to: context)
addOrRemoveIncrementalIdentificationPhoneNumbers(to: context)
} else {
addAllBlockingPhoneNumbers(to: context)
addAllIdentificationPhoneNumbers(to: context)
}
} else {
addAllBlockingPhoneNumbers(to: context)
addAllIdentificationPhoneNumbers(to: context)
}
context.completeRequest()
}
就我而言,我只实现了 addAllIdentificationPhoneNumbers 并从文件中读取联系人。您需要向默认生成的所有其他方法添加逻辑
guard let fileUrl = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: "group.YOUR.ID")?
.appendingPathComponent("contacts") else { return }
guard let reader = CBLineReader(path: fileUrl.path) else { return }
print("\(#function) \(fileUrl)")
for line in reader {
autoreleasepool {
let line = line.trimmingCharacters(in: .whitespacesAndNewlines)
var components = line.components(separatedBy: ",")
guard let phone = Int64(components[0]) else { return }
let name = components[1]
context.addIdentificationEntry(withNextSequentialPhoneNumber: phone, label: name)
print(#function + name)
}
}
转到“设置”->“电话”->“调用阻止和识别”-> 在应用程序对面打开 swift
测试您的应用:-)希望它会对某人有所帮助
关于ios - 如何让 CoreSpotlight 预测谁来电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789756/
文档提到: https://developer.apple.com/reference/corespotlight/cssearchableindex?language=objc In batch m
我想让我的应用程序为 Spotlight 索引做好准备,所以我得到了下面的代码来向 Core Spotlight 添加一个项目: CSSearchableItemAttributeSet *attri
在我的 IOS9 应用程序中,我可以使用 CoreSpotlight 库将数据添加到 Spotlight 的索引(即,当我使用 Spotlight 搜索框进行搜索时,我添加到索引的内容会显示出来)。
您好,我正在尝试在我的应用中实现 CoreSpotlight。 索引时我需要每次都运行这个还是在第一次安装应用程序时运行一次就足够了?如果应用被删除,我需要重新索引吗? 这是我使用的代码: - (vo
我正在使用 CoreSpotLight api 来索引一些内容。出于某种原因,我在搜索时找不到数据聚光灯。 let atset:CSSearchableItemAttributeSet = CSSea
我希望我的设备能够根据聚光灯人物索引预测谁在给我打电话。我已将人员信息上传到聚光灯索引,并且系统在我搜索时提供信息,但在有人打电话时则不提供信息。下面的代码做了所有这些事情,我不明白出了什么问题 if
在 WWDC session 中搜索 API 简介。他们显示带有调用按钮的 Airbnb 应用程序的搜索结果。据我所见,我认为结果是使用 CSSearchableItemAttributeSet 创建
我正在使用 CoreSpolight 框架为 CSSearchableItem 赋值。我想优化图片加载。 func setupSearchableContent(moviesInfo:NSMutabl
我正在尝试将聚光灯集成添加到我的 Mac 应用程序,但出现错误。步骤如下: 我创建了一个新的 cocoa 应用 我已将 CoreSpotlight 和 CoreServices 框架添加到项目buil
我正尝试在 Core Spotlight 的帮助下让我的应用内内容可搜索。一切正常,标题和描述都出现了,但没有缩略图。 这是我正在尝试的: CSSearchableItemAttributeSet *
CoreSpotlight 示例: https://applidium.com/en/news/ios9_search_api/ Spotlight 索引扩展示例: http://apprize.in
我花了很多时间来寻找 NSUserActivity 相对于 CoreSpotlight 的好处,但实际上我找不到任何东西。 实际上,它无法索引我们通过 NSUserActivity 设置的项。我在下面
我正在尝试构建一个测试应用程序,该应用程序使用 CoreSpotlight 使内容可在 iOS Spotlight 中搜索。目前,我将其设置为每当用户点击刷新按钮时,它都会发出服务器请求,然后 del
我正在使用“半静态”CoreSpotlight db 在需要时动态创建和替换 Spotlight Search 的概念证明。 这是我用于删除和重新创建整个内容的代码(假设 items 是 CSSear
如何在 CoreSpotlight 框架和 NSUserActivity 中选择最适合搜索编程的框架。 最佳答案 核心聚光灯 不要求用户访问内容以对其进行索引(在任何时候索引内容) 私有(privat
我有以下几行代码: var attributes = new CSSearchableItemAttributeSet (); attributes.Title = "Title"; attribut
是否可以使用iOS9的新特性如NSUserActivity和CoreSpotlight,但还是将我的Development Target设置为8.2,这样iOS8的用户仍然可以使用应用程序? 我假设我
是否有 corespotlight 搜索功能的示例代码 - iOS 9 API?如果可以查看示例代码来实现/测试,我将不胜感激。 最佳答案 创建一个新的 iOS 项目并将 CoreSpotlight
我正在努力将 CoreSpotlight 框架功能与应用程序集成,并尝试在 iOS 8.3 设备上运行它。每次我得到: dyld: Library not loaded: /System/Librar
我是一名优秀的程序员,十分优秀!