在 iOS 的 phone 来电中显示联系人图像

Get contact image displayed in incoming phone calls on iOS

我正在使用 Apple 的联系人框架插入新联系人。该图像是资产目录中的 .png。成功插入后,新联系人会在联系人应用程序中显示正确的图像。但是,当有来自新插入的联系人的来电时,图像不显示。

我找不到任何关于 iOS 显示联系人图像的确切情况的可靠信息。图像只有在用户手动设置时才会出现吗?我错过了什么?你能给我指出一份好的文件或给我一个解释吗? (唯一相关的信息在这篇文章中:https://support.apple.com/en-us/HT202158 但我满足了每一个要求,它可能不是紧密相关的。)

触点插入代码:

let newContact = CNMutableContact()  
...  
if let image = UIImage(named: "ContactImage") {  
  newContact.imageData = UIImagePNGRepresentation(image)  
}  
...  
let saveRequest = CNSaveRequest()  
saveRequest.addContact(newContact, toContainerWithIdentifier: nil)  

do {  
  try contactStore.executeSaveRequest(saveRequest)  
  log.debug("New contact successfully saved!")  
} catch let error as NSError {  
  log.error(error.localizedDescription)  
} catch {  
  log.error("Unknown error happened during contact saving.")  
}

我已经联系了 Apple 开发人员技术支持,他们的工程师认为这最好作为错误报告来处理。提交的错误 ID 是 26033574.

更新

Apple 问了我以下问题。

Can you please share the vcard and image you’re using on the contact card?

我与他们分享了 vCard,不幸的是里面没有图像,尽管在 iOS(和 macOS)上图像清晰可见。

我发现连续两次保存联系人就解决了问题。

  1. 保存联系人
  2. 将图像添加到联系人
  3. 重新保存联系人