xcode iOS ShareContext点击extensionContext的Suggestion Intent属性为nil

apeeds0o  于 2023-06-24  发布在  iOS
关注(0)|答案(1)|浏览(103)

我的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应该包含意图。

enyaitl3

enyaitl31#

我遇到了同样的问题,并通过使用真实的的IOS设备修复了它。看起来像是IOS模拟器的问题。对于真实的的设备,意图值不再是零。

相关问题