【发布时间】:2016-03-15 15:05:25
【问题描述】:
我正在尝试创建一个环境来启用从电子邮件中打开 iPhone 应用程序。如果我为 appLink (Facebook AppLink Hosting API) 使用 Facebook 的托管服务,只要单击它在 Facebook 移动应用程序中生成的链接,我就可以成功打开该应用程序。但是,如果我尝试从另一个移动应用程序(例如 Notes 或 Mail)中单击相同的链接,它只会重定向到 Facebook,而不会重定向到我的应用程序。此外,Facebook AppLink Hosting 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。使用他们的Open Graph Object Debugger,我能够抓取我用他们的工具创建的 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。我不知道那里发生了什么,但是即使我将所有这些标签都放在我的网页头标签中,结果也是一样的。如果您从“邮件”或“便笺”等移动应用程序中单击链接,则只会打开我的网页。我的应用程序或 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 的邮件应用程序中点击指向我的服务器的链接时,他们会被重定向到我的应用程序?
【问题讨论】:
标签: html ios iphone facebook applinks