通过应用程序ID启动iOS应用程序?

6

在iOS 5及其之前的版本,如果要从一个iOS应用程序中启动另一个iOS应用程序,则需要使用openUrl和自定义scheme/protocol。 (没有自定义scheme就无法启动应用程序,如果有两个使用相同scheme/protocol的应用程序,则无法确定哪个应用程序将启动)

iOS 6支持从Safari(通过智能应用程序横幅)和Siri中启动应用程序。智能应用程序横幅可以通过应用程序ID启动,但是如何通过Siri启动应用程序目前并不清楚。

“通过应用程序ID启动应用程序”是否为公共/受支持的API调用?这是否可用于从一个自定义应用程序启动另一个自定义应用程序?

(如果是这样,这可以解决启动没有支持scheme/protocol的现有应用程序的问题,并解决两个具有相同scheme的应用程序的问题)


我没有你问题的答案,但我非常非常想知道。这是一个很棒的问题。只是警告一下,iOS6仍然受到NDA的限制,不确定现在是否适合讨论。不过还是给这个超棒的问题点赞。 - Ryan Poolos
1个回答

3

这个过程被称为:智能应用横幅。

David Smith写了一篇详尽的关于它们的文章。 http://david-smith.org/blog/2012/09/20/implementing-smart-app-banners/

基本上,你只需要在你的网站页面中添加这个元标签(其中#######是你的应用程序ID):

<meta name="apple-itunes-app" content="app-id=#########"/></code>

如果您想向调用传递更多参数,例如在应用程序中执行某些特定操作而不仅仅是打开它,请使用以下方法:
<meta name="apple-itunes-app" content="app-id=#########, foo=xxxxxx&bar=yyyyyyy"/>

然后在你的应用程序委托中处理回调URL:

-(BOOL)application:(UIApplication*)application
        openURL:(NSURL*)url
        sourceApplication:(NSString*)sourceApplication
        annotation:(id)annotation

原始问题提到了应用横幅,但是询问是否有一种方式可以通过相同的API 直接 启动应用程序,该API似乎正在使用横幅。 - Alex Pretzlav

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