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