我的iOS应用程序中有ShareExtension。我正在尝试使用建议。我可以使用苹果开发者网站上的以下代码成功地“捐赠”Intent:
let groupName = INSpeakableString(spokenPhrase: "Juan Chavez")
let sendMessageIntent = INSendMessageIntent(recipients: nil,
content: nil,
speakableGroupName: groupName,
conversationIdentifier: "sampleConversationIdentifier",
serviceName: nil,
sender: nil)
// Add the user's avatar to the intent.
let image = INImage(named: "Juan Chavez")
sendMessageIntent.setImage(image, forParameterNamed: \.speakableGroupName)
// Donate the intent.
let interaction = INInteraction(intent: sendMessageIntent, response: nil)
interaction.donate(completion: { error in
if error != nil {
// Add error handling here.
} else {
// Do something, e.g. send the content to a contact.
}
})
这工作正常,我能够看到我的应用程序图标在顶部的建议行为每个对话。然而,当我点击这个建议时,extensionContext的intent属性为nil:
override func viewDidLoad() {
super.viewDidLoad()
// Populate the recipient property with the metadata in case the user tapped a suggestion from the share sheet.
let intent = self.extensionContext?.intent as? INSendMessageIntent
if intent != nil { // this is nil despite selecting suggestion
let conversationIdentifier = intent!.conversationIdentifier
self.recipient = recipient(identifier: conversationIdentifier!)
}
}
我的ShareExtension plist如下:
另一个奇怪的行为是,我可以从主应用程序中捐赠,但不能从应用程序扩展中捐赠。在主应用程序中,plist中的唯一相关条目是相同的NSUserActivityTypes条目。不是NSExtension条目。
我的理解是,根据建议,extensionContext应该包含意图。
1条答案
按热度按时间enyaitl31#
我遇到了同样的问题,并通过使用真实的的IOS设备修复了它。看起来像是IOS模拟器的问题。对于真实的的设备,意图值不再是零。