小编Lex*_*ers的帖子

iOS Swift 5 - 如何实现 Siri VoIP 命令“使用示例应用程序呼叫人员”支持,而无需添加快捷方式?

目标

我希望能够通过 Siri 说“使用 Next 应用程序呼叫 Emily”来触发 VoIP 呼叫,而无需添加快捷方式。

Emily 是我添加到我的联系人中的联系人,其中包含我自己的电话号码。我在日常司机手机上测试了示例应用程序,因此它有一张用于通话的 SIM 卡。

问题细分

  • 1 种场景有效:如果应用程序的捆绑(显示)名称与我所说的相同,例如“下一步”,Siri 将正确打开应用程序并启动呼叫代码,太棒了!
  • 但是,应用程序包名称必须保留 Nextext。
  • 如果我启动应用程序名称为 Nexxt 的应用程序并说“使用 Next 应用程序呼叫 Emily”,Siri 将回复:

我在你的通讯录中没有看到“Emily”。

  • 我添加了替代应用程序名称,即 CFBundleSpokenName,又名 Accessibility Bundle Name 和 INAlternativeAppNames:
    • 下一个
  • 替代应用程序名称有效!如果我说“打开下一个应用程序”、“打开狗应用程序”或“打开猫应用程序”,即使实际应用程序名称是 Nexxt,该应用程序也会打开。
  • 但是,如果我说“使用 Dog 应用程序呼叫 Emily”,Siri 会回复:

我没有看到这样的应用程序。您需要下载一个。搜索应用商店

  • 我似乎无法让它实现我的特定目标。考虑到替代应用程序名称的工作原理,我认为我的“INStartCallIntent”实现中可能存在根本性错误或缺失。

请注意,如果您在更改显示名称时遇到问题。选择项目,更改显示名称,然后单击项目之外的位置(任何文件)并再次选择项目。运行应用程序,名称应该会更新。

代码

这是代码。如果我的显示名称是下一个,它适用于“使用下一个应用程序呼叫艾米丽”。如果我的显示名称是 Dog,它也适用于“使用 Dog 应用程序呼叫 Emily”。

该示例应用程序是用 SwiftUI 代码编写的,只需进行最少的设置即可测试 Siri 功能。

TestSiriSimple -> TestSiriSimpleIntents -> IntentHandler:

import Intents

class IntentHandler: INExtension {
    
    override func handler(for intent: …
Run Code Online (Sandbox Code Playgroud)

voip shortcut ios siri swift

6
推荐指数
1
解决办法
1048
查看次数

标签 统计

ios ×1

shortcut ×1

siri ×1

swift ×1

voip ×1