未检测到iOS App URL

我为我的iOS应用程序创建了一个自定义应用程序URL。 URL格式与此类似:

myappname://texttobeparsed 

当我在Safari中粘贴URL时,这可以正常工作,我的应用程序打开并正确处理URL。 问题是其他应用程序(如iMessage或Notes)无法将其识别为URL。

为什么这个URL方案不被识别为URL ? 它可能与我在info.plist文件中设置的方式有关吗?

或者,URL是否需要采用不同的格式才能识别?

我知道系统可以将其识别为网络浏览器以外的应用程序中的URL,因为我之前已经看过其他应用程序(例如iTunes: itms://itunes.com/apps/appname或Twitter: twitter://或Facebook: fb:// )。

你无能为力。 如果链接不明确(例如在HTML电子邮件中),这些应用程序可以识别内置的一组标准URL方案。 itms://是Apple自己的一个方案(对于iTu​​nes Store),所以除了标准的mailto://http://tel:// … scheme之外,它还是有意义的。

编辑:我猜想用于确定文本视图中有效URL的构成的信息是以某种方式缓存的。 与我最初猜测的相反,似乎特定于应用程序的URL在Notes等中工作。我用tweetbot://测试了这个例子(我已安装)和twitter:// (我没有已安装)validation它不仅检查像*://这样的模式,而是实际使用有关已安装应用程序的信息。

我建议您尝试重启设备。 如果这是一个缓存的问题,这可能会有所帮助,如果您的URL方案已经在Safari中运行,我认为还有很多其他事情可以做。

更新:我已经安装了正式的Twitter应用程序来测试这个,在Notes中没有立即识别twitter://方案,但在杀死并重新启动Notes应用程序之后,它起作用了。

更新2:我使用myappname://作为自定义URL方案完成了一个最小测试应用程序。 再次,与Twitter应用程序一样,它在重新启动Notes应用程序后起作用,因此它似乎与应用程序的受欢迎程度无关或是否已提交。

我无法回答为什么它不起作用(除了猜测链接解释器是硬编码的,只能识别某些URL方案),但我可以说,典型的方法是链接到一个网页,并且网页重定向到您的自定义方案。

它稍微不那么优雅,因为用户会在转发到您的应用程序之前看到Safari短暂打开,但它也更强大,因为如果用户没有安装应用程序,网页可以提供指向应用程序商店的链接以安装应用程序电话。