如何从iOS应用程序中删除Siri快捷方式意图?

问题描述

使用iOS13.6.1,Swift5.2.4,XCode11.6,

Apple's documentation之后,我尝试从我的应用程序中删除特定的Siri快捷方式。

以下代码显示了我如何首先创建Siri快捷方式。

下面的代码进一步显示了我尝试从我的应用中再次删除同一Siri快捷方式的尝试。

不幸的是,Siri快捷方式并未从我的应用程序中删除。

有什么主意我可以将其永久删除吗?

extension EditMediaViewController {
    @available(iOS 12.0,*)
    func createSiriButton(documentID: String,invitationCode: String) -> INUIAddVoiceShortcutButton {
        
        let siriShortcutButton = INUIAddVoiceShortcutButton(style: .whiteOutline)
        
        let activity = NSUserActivity(activityType: "MyIdentifierStringCodeABCDEF")
        
        activity.title = "Test"
        activity.suggestedInvocationPhrase = "Test"
        
        activity.isEligibleForSearch = true
        activity.isEligibleForPrediction = true
        activity.persistentIdentifier = NSUserActivityPersistentIdentifier("MyIdentifierStringCodeABCDEF")
        activity.becomeCurrent()
        
        siriShortcutButton.shortcut = INShortcut(userActivity: activity)
        
        return siriShortcutButton
    }
}

extension EditMediaViewController: INUIAddVoiceShortcutButtonDelegate {
    @available(iOS 12.0,*)
    func present(_ addVoiceShortcutViewController: INUIAddVoiceShortcutViewController,for addVoiceShortcutButton: INUIAddVoiceShortcutButton) {
        addVoiceShortcutViewController.delegate = self
        addVoiceShortcutViewController.modalPresentationStyle = .formSheet
        present(addVoiceShortcutViewController,animated: true,completion: nil)
    }
    
    @available(iOS 12.0,*)
    func present(_ editVoiceShortcutViewController: INUIEditVoiceShortcutViewController,for addVoiceShortcutButton: INUIAddVoiceShortcutButton) {
        editVoiceShortcutViewController.delegate = self
        editVoiceShortcutViewController.modalPresentationStyle = .formSheet
        present(editVoiceShortcutViewController,completion: nil)
    }
}

extension EditMediaViewController: INUIAddVoiceShortcutViewControllerDelegate {
    @available(iOS 12.0,*)
    func addVoiceShortcutViewController(_ controller: INUIAddVoiceShortcutViewController,didFinishWith voiceShortcut: INVoiceShortcut?,error: Error?) {
        controller.dismiss(animated: true,*)
    func addVoiceShortcutViewControllerDidCancel(_ controller: INUIAddVoiceShortcutViewController) {
        controller.dismiss(animated: true,completion: nil)
    }
}

extension EditMediaViewController: INUIEditVoiceShortcutViewControllerDelegate {
    @available(iOS 12.0,*)
    func editVoiceShortcutViewController(_ controller: INUIEditVoiceShortcutViewController,didUpdate voiceShortcut: INVoiceShortcut?,didDeleteVoiceShortcutWithIdentifier deletedVoiceShortcutIdentifier: UUID) {
        controller.dismiss(animated: true,*)
    func editVoiceShortcutViewControllerDidCancel(_ controller: INUIEditVoiceShortcutViewController) {
        controller.dismiss(animated: true,completion: nil)
    }
}

我在这里尝试删除相同的Siri快捷方式(但不起作用-为什么?):

let activity = NSUserActivity(activityType: "MyIdentifierStringCodeABCDEF")
let activityPersistentIdentifier = NSUserActivityPersistentIdentifier("MyIdentifierStringCodeABCDEF")
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: [activityPersistentIdentifier]) {
    print("one deleted")
}
INInteraction.deleteAll { (error) in
    print("all deleted")
}
INInteraction.delete(with: [activityPersistentIdentifier]) { (error) in
    print(error)
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...