第一次使用Url scheme时App中iOS自定义Url Scheme打不开

Posted

技术标签:

【中文标题】第一次使用Url scheme时App中iOS自定义Url Scheme打不开【英文标题】:iOS Custom Url Scheme in App does not open the first time Url scheme is used 【发布时间】:2014-01-27 21:26:06 【问题描述】:

在我的应用程序中,我配置了一个自定义 URL 方案“TestScheme”。一切正常,但有一个问题。

当我打开例如Safari 中的“TestScheme://xyz”,有时会打开一个对话框,询问我是否要在我的应用程序中打开该站点。当我点击打开时,没有任何反应。当我再次在 safari 中打开同一个站点时,应用程序正确打开,但不显示对话框。

谁能解释这种奇怪的行为?为什么当我在对话框中点击打开时应用程序不打开?

html 中使用 href 重定向到自定义 URL 方案时,我没有遇到此问题。只是在浏览器中输入网址时问题仍然存在。

【问题讨论】:

内置 ios 应用程序是否会发生这种行为?还是只是您的应用? 我也面临这样的问题。就我而言,我正在尝试使用自定义 urlscheme 打开我的应用程序,有时它可以完美运行。有时它只显示消息而没有任何反应。还在想办法。 【参考方案1】:

由于您处于开发阶段,听起来每次您在设备上编译和重新部署应用程序时,都需要时间向系统注册。此外,在部署后,您可能需要确保终止 Safari,以便它可以加载自定义 Url 方案。

只是我的两分钱。

【讨论】:

我不认为这是实际的问题,因为对话框也会出现在只是在 url 方案之后更改内容时,而不仅仅是在第一次进入自定义 url 方案时。 您是否对应用中的 info.plist 进行了必要的修改? URL 类型/ URL 标识符/ URL 方案...当您单击取消时会发生什么?!我在单击该对话框上的取消时遇到问题,然后我需要刷新页面才能再次使用同一对话框提示。 我们遇到了同样的问题。重新创建我们只是强制关闭应用程序并尝试链接。 openURL 中的处理程序永远不会被调用。该链接只是启动应用程序,就好像没有传入任何内容一样。如果应用程序已打开,或者最近已打开,它会得到很好的处理并执行它应该做的事情。我在 android 上也发生了这种情况......也许现在已经发生了......仍在寻找答案。【参考方案2】:

如果应用程序在重新启动后从未运行过、被强制关闭或在某些时候被操作系统看门狗杀死,那么我们让它工作的唯一方法是在 didFinishLaunchingWithOptions 调用中处理并检查启动选项.我还没有偶然发现一个让我想起这个的 openURL 教程......

您可以在启动选项中看到 url,当您放置一个小警报框以查看您在启动时得到的内容时,因为我还没有弄清楚如何(或花时间弄清楚如何)连接调试器并使用链接启动应用程序。顺便说一句,我现在正在使用 iOS 7.1.2 进行测试。

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Launch With Options"
                                                message:[launchOptions description]
                                               delegate:nil
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
[alert show];
[alert release];

然后您可以看到发送的内容并决定在那里采取行动/解析它。

[具有讽刺意味的是,我在 Android 上也有同样的 exact 启动行为问题要解决...我想我需要在 onCreate 中解析包...]

【讨论】:

以上是关于第一次使用Url scheme时App中iOS自定义Url Scheme打不开的主要内容,如果未能解决你的问题,请参考以下文章

转通过自定义的URL Scheme启动你的App

React Native之配置URL Scheme(iOS Android)

iOS url schemes应用

如何找出iOS App的URL Scheme

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

ios 自定义URL Scheme启动App