如何获取所有已安装路由应用程序的列表?

5
如何在iOS上以编程方式获取已安装的“路由应用程序”列表?
这样做的原因是,iOS提供了大量导航应用程序,我不想手动维护列表。
自iOS 6以来,苹果提供了一种新功能,可以将您的应用程序注册为路由应用程序,如此处所述http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/ProvidingDirections/ProvidingDirections.html#//apple_ref/doc/uid/TP40009497-CH8-SW7 然后,如果您在常规地图应用程序中启动路由,则会显示能够为您提供路线的应用程序列表,如下所示:

enter image description here

我找不到获取列表的方法。当然,我可以使用UIApplication中的canOpenURL:查询是否安装了某个特定的应用程序,但这将非常繁琐。
我知道这一定是可能的,因为著名的"Where to?"应用程序提供了这样的功能。
任何提示都将不胜感激!

我的第一个猜测是,他们使用应用程序URL模式来检查应用程序是否已安装,即使这看起来很繁琐。 - rckoenes
1
在哪里还提供了一个“来自App Store”的路由应用程序列表。这不能通过查询URL方案来完成 ;( - Klaas
你可以通过查询应用商店中的路由应用来获取这些信息。http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html - rckoenes
据我所知,没有任何关键字可以让您搜索处理特定URL方案的应用程序。如果自从我上次查看以来他们已经添加了这个功能...那太酷了。 (当然,您可以进行搜索以查找用户国家/地区的App Store中提供哪些知名路由应用程序,但这并不能避免需要拥有知名应用程序列表并逐一检查列表的需求。) - abarnert
有没有可能列表是由MapKit本身显示的,而不是由Where to? 换句话说,您无法获取路由应用程序列表,但可以调用一个方法,弹出与Maps相同的“选择路由应用程序”表单。 - abarnert
@abarnert 嗯,我进行了进一步的研究,发现SKStoreProductViewController看起来很有前途。但不幸的是,它没有过滤路由应用程序的参数。 - Klaas
2个回答

0
由于iOS6的沙盒机制,没有真正的方法可以实现这一点,因为您无法访问不在自己地址空间中的任何内容。地图应用程序可以做到这一点,因为苹果保留了访问您手机上任何数据(包括已安装的应用程序)的权利。

哦,但是链接的“去哪里?”应用程序正是我所要求的。 - Klaas
你需要拥有一个包含所有(或大部分)在App Store上可用的路由应用程序列表,以便可以查询这些应用程序的URL。 - amarkon

0

好的,我自己试试看。也许“Where to?”的作者维护了一个路由应用程序列表,并通过查询该应用程序的URL方案来检查是否安装了应用程序。对于他找到的所有应用程序,他都会显示一个“ROUTE”按钮。对于他找不到的所有应用程序,他都会提供一个链接到应用商店的条目。

当然,这不会列出所有的路由应用程序,但通过拥有一个长的自编译的路由应用程序列表,它创造了这样的印象。

编辑:这是“Where to?”的屏幕截图:

Screenshot from "Where to?" It looks quite similar, but you can actually see the difference


你是使用商店搜索来查找价格,还是将其硬编码到数据中?(如果以0.89欧元而不是0.99美元向美国用户提供街景服务,或者向美国用户提供TomTom Europa,这可能有点奇怪,因为她无法在美国商店购买它。) - abarnert
还有一件事:你的表格显然和苹果的不一样。在“Where To”中的表格是否与苹果的完全相同?它是否提供了相同的应用程序?如果两个答案中的任意一个是“否”,那么这似乎就是他们正在有效地做的事情。 - abarnert
抱歉,我只是在推测“Where to”问题的解决方案,而截图实际上来自我在德国手机上安装的“Where to”。 - Klaas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接