我正在尝试创建一个环境,以便能够从电子邮件中打开iPhone应用程序。如果我使用Facebook的托管服务appLink (Facebook AppLink托管API),只要我点击它在Facebook移动应用程序中生成的链接,我就可以成功地打开该应用程序。但是,如果我试图从另一个移动应用程序(如Notes或Mail)中单击相同的链接,它只会重定向到Facebook,而不会指向我的应用程序。此外,Facebook AppLink托管API只允许您为单个应用程序创建一个链接。我希望能够自动打开我的付费版本的应用程序或免费版本的应用程序(按这个顺序),这取决于用户在移动设备上的应用程序。
因此,我遵循了在(applinks.org)中找到的关于如何在自己的服务器上设置元标记以执行打开AppLink的任务的描述。因此,我有一个包含以下html的网页:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>MyApp</title>
<meta property="al:iphone:url" content="myAppLinkScheme://Home">
<meta property="al:iphone:app_name" content="MyApp">
<meta property="al:iphone:app_store_id" content="471147787">
<meta property="al:iphone:url" content="myAppLinkLiteScheme://Home">
<meta property="al:iphone:app_name" content="MyApp Lite">
<meta property="al:iphone:app_store_id" content="518829102">
<meta property="al:ipad:url" content="myAppLinkLiteScheme://Home">
<meta property="al:ipad:app_name" content="MyApp Lite">
<meta property="al:ipad:app_store_id" content="518829102">
<meta property="al:web:should_fallback" content="false">
</head>
<body>Redirecting...</body>
</html>然后,我使用Facebook的工具创建了一个AppLink,用于托管appLink。使用他们的开放式图形对象调试器,我能够抓取我用他们的工具创建的AppLink的内容。Facebook的元标签与我的元标签非常相似,但有一些不同之处。正如我前面提到的,第一个不同之处是,您只能使用Facebook工具指定一个应用程序,因此只有一个iPhone url、app_name和app_store_id元标记。另外两个不同之处是我在下面的标记中用.替换了我的app_id。
<meta property="fb:app_id" content="28...........64">
<meta http-equiv="refresh" content="0;url=https://apps.facebook.com/28...........64/?fb_source=mobile">显然,将“刷新”元标记重定向到apps.facebook.com。我不知道那里发生了什么,但即使我把所有这些标签都放在我的网页标题标签中,结果也是一样的。如果您单击移动应用程序(如Mail或Notes )的链接,您将只打开我的网页。我的应用程序和Facebook都不会出现重定向的情况。
注意,我还将所需的方案信息添加到我的应用程序的info.plists和appDelegates中。也就是说,在我的info.plist的URL类型中,我添加了com.myApp.myAppLinkScheme的标识符和myAppLinkScheme的方案。info.plist的精馏版也有类似的添加。此外,我还为应用程序的付费和免费版本向我的appDelegate添加了必要的更改:
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if ([[url scheme] isEqualToString:@"myAppLinkScheme"]) {
return YES;
}
...
}所以,我显然遗漏了什么。设置我的服务器需要什么额外的实现,以便当用户单击指向iPhone邮件应用程序中指向我的服务器的链接时,它们被重定向到我的应用程序?
发布于 2016-03-15 21:47:42
这些<meta>标签被应用程序(比如Facebook)所尊重,这些应用程序实现了Applinks协议并知道如何查找它们。其他应用程序,如Mail和Safari完全忽略了它们,而是打开了备用URL。
当您使用时,将注册该回退URL以打开Facebook应用程序。不幸的是,Facebook之后并没有转发给你自己的应用程序。
当您使用您自己的服务器时,回退只是您的website...which上的一个URL没有注册到任何东西。目前还没有。
为了解决这个问题,你需要以一种不依赖于Facebook的方式执行链接到应用程序的重定向。有几种选择:
最好的解决方案是以上方法的结合:支持任何地方的通用链接和Applinks,以及智能JavaScript重定向作为后盾。这需要处理很多问题,所以最好的选择是提供一个免费的服务,比如Branch.io (完全公开:我和团队一起工作)来处理所有的技术方面。
https://stackoverflow.com/questions/36014989
复制相似问题