4

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

myappname://texttobeparsed

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

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

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

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

4

2 回答 2

4

你对此无能为力。如果链接不是明确的(例如在 HTML 电子邮件中),这些应用程序只能识别一组内置的标准 URL 方案。是 Apple 自己的方案之一(适用于 iTunes Store),因此除了标准的, , ... 方案itms://外,它还受支持是有道理的。mailto://http://tel://

编辑:我猜想用于确定什么构成文本视图等中的有效 URL 的信息以某种方式被缓存。与我最初的猜测相反,似乎特定于应用程序的 URL在 Notes 等中确实tweetbot://有效。我已经用例如(我已安装)和twitter://(我尚未安装)对此进行了测试,以验证它是否不只是检查类似的模式*://,而是实际使用有关已安装应用程序的信息。

我建议您尝试重新启动设备。如果某些缓存有问题,那可能会有所帮助,如果您的 URL 方案已经在 Safari 中工作,我认为您无能为力。

更新:我已经安装了官方 Twitter 应用程序来测试这一点,该twitter://方案没有立即在 Notes 中被识别,但在杀死并重新启动 Notes 应用程序后,它可以工作。

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

于 2012-05-19T16:53:03.253 回答
1

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

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

于 2013-07-14T00:30:56.023 回答