如果用户最初拒绝为您的应用支持Siri,那么他们以后如何启用它?

时间:2017-06-21 15:35:15

标签: ios swift sirikit

开始玩SiriKit。我想测试权限作为第一步,所以我设置我的应用程序使用Siri,得到了预期的提示,但有意拒绝了使用Siri的请求。正如所料,状态返回“未授权”。

然而,随后尝试通过更改设置中的切换来重新启用Siri似乎对重新启用应用程序的Siri没有任何影响。

这是我用来检查的代码......

override func viewDidLoad()
{
    super.viewDidLoad()

    // Prompt for Siri support   
    INPreferences.requestSiriAuthorization
    {
        status in

        switch status
        {
            case .notDetermined: print("Not yet determined.")
            case .restricted:    print("Restricted. The app is not authorized to use Siri services.")
            case .denied:        print("Not authorized. The user explicitly denied authorization for this app.")
            case .authorized:    print("Authorized. Siri is enabled and your app is authorized to interact with it.")
        }
    }
}

如上所述,我认为答案就像进入设置应用程序并在那里启用Siri对该应用程序的支持一样简单,但有趣的是,应用程序似乎已经获得了访问权限(交换机显示为'on')即使我通过提示拒绝了它。

更令人困惑的是,即使当我关闭那个开关,然后再打开,希望“重置”它可以说,我的应用程序仍然,并且总是报告Siri不受支持。

即使重写Siri开关,或重置模拟器的内容和设置,然后重新安装应用程序,我仍然没有得到提示,这意味着它仍然记得我的选择,并且它报告它仍然没有被授权。

那么在Siri支持方面,如何将他们的初始选择从No改为Yes?

这可能是模拟器始终报告“未经授权”的问题,这必须在实际设备上进行测试吗?

更新

一定是模拟器中的一个小故障。我在设置或代码中没有做任何事情,甚至重置模拟器完全改变了它。但是,我更改了包ID,一切都按预期开始工作。我甚至改回来了,现在旧的正在按预期工作。

1 个答案:

答案 0 :(得分:1)

正如官方文件所述,   第一次发出此请求时,Siri会提示用户授予或拒绝您的应用与Siri集成的权限。对该方法的后续调用不会再次提示用户。 因此,一旦用户拒绝权限,他们只能通过“设置”启用它。您所能做的就是向用户显示警报,以便在他们拒绝Siri权限的情况下从设置中启用Siri。