我的应用程序中有2个siri快捷方式.我使用NSUserActivity来捐赠这些快捷方式.我还在info.plist中创建了2个NSUserActivityTypes.
有2个视图控制器可以处理这些快捷方式(1个快捷方式的视图控制器).
如果我从1个视图控制器添加1个siri快捷方式,然后转到第2个视图控制器,第2个视图控制器上的原生siri快捷按钮(INUIAddVoiceShortcutButton)会自动选择第一个快捷方式(从第1个视图控制器创建)并显示"添加到Siri"并显示建议的短语而不是显示"添加到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)
Run Code Online (Sandbox Code Playgroud)
查看控制器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) …Run Code Online (Sandbox Code Playgroud)