如何关闭/恢复对openURL方法的调用

时间:2016-03-18 17:10:08

标签: ios url-scheme openurl

当应用程序通过URL方案打开时(第一次,当应用程序甚至不在后台时),应用程序中的didFinishLaunchingWithOptions将被调用,我们可以从UIApplicationLaunchOptionsURLKey获取字典launchOptions

我试图在didFinishLaunchingWithOptions中返回NO,但它没有任何区别。

我想要做的是在网址中的params出现问题时关闭应用,此网址是打开应用的网址。

让我们说网址myapp://&param1=2&param2=2打开我的应用。

在app委托中,我检查有效的参数。如果参数值错误,我不希望URL打开我的应用。我想暂停这一行动并回到我来自的地方。

我尝试在NOdidFinishLaunchingWithOptions中撤回openURL,但没有人给我我想要的内容。

if (![self checkURL:launchOptions[UIApplicationLaunchOptionsURLKey]]) {
        DLog(@"Don't launch the app/close the app");
        return NO;
    }

如果网址无效,有没有办法关闭应用(或至少让应用变为背景)?

1 个答案:

答案 0 :(得分:2)

以编程方式关闭应用程序在技术上违反了Apple的人机界面指南(source)。官方推理:

  

永远不要以编程方式退出iOS应用。人们倾向于将此解释为崩溃。如果某些内容阻止您的应用按预期运行,您需要告诉用户有关情况并解释他们可以采取的措施。以下是两种很好的方法:

     
      
  1. 如果所有应用功能都不可用,请显示描述情况的屏幕并建议更正。该信息会向用户提供反馈,并向他们保证您的应用没有任何问题。它还可以让用户掌控,让他们决定是否要采取纠正措施并继续使用您的应用或切换到其他应用。
  2.   
  3. 如果只有部分应用功能不可用,则在人们尝试使用此功能时显示屏幕或提醒。否则,人们应该能够使用应用程序的其余部分。如果您决定使用警报,请务必仅在人们尝试访问无法正常运行的功能时显示该警报。
  4.   

听起来您可能需要提供某种错误,然后让用户自行采取行动。如果您确切知道用​​户所在的位置(或者可以通过传入的URL参数找到),那么您可以提供某种自动路由回到其他应用程序。