9

アプリに 2 つの siri ショートカットがあります。私は NSUserActivity を使用して、これらのショートカットを提供しています。また、info.plist に 2 つの NSUserActivityTypes を作成しました。

これらのショートカットを処理する 2 つのビュー コントローラーがあります (1 つのショートカットに対して 1 つのビュー コントローラー)。

1 つのビュー コントローラーから 1 つの siri ショートカットを追加してから 2 番目のビュー コントローラーに移動すると、2 番目のビュー コントローラーのネイティブ siri ショートカット ボタンINUIAddVoiceShortcutButton( 「Siriに追加」ボタンを表示する代わりに。それぞれNSUserActivityが異なる識別子を持っていることを再確認しましたが、それでもどういうわけか間違ったショートカットを選択しています。

ビュー コントローラー 1:

let userActivity = NSUserActivity(activityType: "com.activity.type1")
userActivity.isEligibleForSearch = true
userActivity.isEligibleForPrediction = true
userActivity.title = shortcut.title
userActivity.suggestedInvocationPhrase = suggestedPhrase

let attributes = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributes.contentDescription = description
userActivity.contentAttributeSet = attributes
let shortcut = INShortcut(userActivity: userActivity)
let siriButton = INUIAddVoiceShortcutButton(style: .whiteOutline)
siriButton.translatesAutoresizingMaskIntoConstraints = false
siriButton.shortcut = shortcut
self.view.addSubview(siriButton)

ビューコントローラー 2:

let userActivity2 = NSUserActivity(activityType: "com.activity.type2")
userActivity2.isEligibleForSearch = true
userActivity2.isEligibleForPrediction = true
userActivity2.title = shortcut.title
userActivity2.suggestedInvocationPhrase = suggestedPhrase

let attributes = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributes.contentDescription = description
userActivity2.contentAttributeSet = attributes

let shortcut = INShortcut(userActivity: userActivity2)
let siriButton = INUIAddVoiceShortcutButton(style: .whiteOutline)
siriButton.translatesAutoresizingMaskIntoConstraints = false
siriButton.shortcut = shortcut
self.view.addSubview(siriButton)

電話の設定アプリからショートカットを削除せずに、アプリを削除して再インストールすると、同様のことが起こります。

4

7 に答える 7

0

BOOL パラメータは Siri ボタンを壊します。「追加...」は表示されません。なんてバグだらけの混乱。

于 2022-03-02T20:00:42.733 に答える