ios - Facebook AppLinks 在 iOS 上究竟如何工作?

标签 ios objective-c iphone facebook applinks

我发现了一个相关问题:Cannot get the new AppLinks to work on iOS or Android但我不确定它是否与我面临的问题完全相似。因此,我提出了这个问题。

如果我从以下位置理解正确:https://developers.facebook.com/docs/applinks/ios

How exactly Facebook AppLinks work on iOS?

当我点击带有正确元数据的正确应用链接时:-

案例 1:我安装了应用:

预期操作 1:它将导航到应用内的特定页面。

情况 2:我没有安装该应用:

预期操作 2:它将引导我到应用的应用商店页面进行下载。

以下是我到目前为止所做的配置:-

应用程序链接 URL: http://watchoverme.parseapp.com/

应用链接元数据:

<html>
<head>
  <title>Watch Over Me</title>
<meta property="al:ios:app_store_id" content="431208868"/>
<meta property="al:ios:app_name" content="Watch Over Me" />
<meta property="al:ios:url" content="watchoverme://promotion" />
<meta property="al:web:url"
      content="https://itunes.apple.com/app/id431208868?mt=8" />
</head>
<body>
Yo!
</body>
</html>

在应用端,我添加了自定义 url 方案,如下面的屏幕截图所示:- watchoverme app link url scheme

到目前为止,我已经测试了以下几个场景:-

场景 1:我创建了另一个简单的应用程序,使用一个按钮打开应用程序链接。

按钮的代码:-

- (IBAction)appLinkTapped:(UIButton *)sender {

    NSLog(@"appLinkTapped");

    UIApplication *app = [UIApplication sharedApplication];
    NSString *path = @"watchoverme://promotion";
    NSURL *ourURL = [NSURL URLWithString:path];
    /*
    if(![app
         canOpenURL:ourURL]){
        path = @"http://watchoverme.parseapp.com/";
        ourURL = [NSURL URLWithString:path];
    }*/

    [app openURL:ourURL];
}

结果 1:如果我安装了 WatchOverMe 应用程序并点击按钮,我可以打开 WatchOverMe 应用程序。伟大的!。但是,如果未安装 WatchOverMe 应用程序并且我点击按钮,则什么也不会发生。我应该被定向到 iTunes 应用程序商店下载该应用程序吗?还是我做错了什么?

场景 2: 我在 Facebook 上发布了链接 ( http://watchoverme.parseapp.com/ ),并尝试在我的手机上点击该链接。

结果 2: 无论我是否安装了该应用程序,它都只显示空白网站。

问题:我是否在配置中遗漏了一些东西,直到它无法触发上述预期的应用程序链接行为?

谢谢

更新#1

感谢 Ming Li 为我指明了正确的方向。我想更好地了解应用程序链接的工作原理。所以,我做了更多的测试,这是我发现的:-

Facebook App Link

从上面的屏幕截图:

案例 A:我使用 Watch Over Me 应用分享应用链接(您将看到“通过 Watch Over Me”)

结果 A: 当我点击 Facebook 应用程序上的链接时。如果我安装了 Watch Over Me 应用程序,它会将我重定向到该应用程序。如果我没有安装该应用程序,它会将我重定向到 iTunes 应用程序商店进行下载。效果很好!

案例 B:我仅使用状态更新分享应用链接。 (没有通过 Watch Over Me)

结果B:只会打开空白网页。

那么,只有当我们通过 Facebook 发布应用链接时,应用链接才有效?而不是通过我们的状态更新发布应用链接?

更新#2

我在 2014 年 9 月 1 日再次进行了测试。以上两种情况都运行良好!非常感谢李明。

最佳答案

对于不在 Facebook 工作并理解“表明您的应用仅适用于移动设备”的含义的其他人,以下是我从测试中发现的内容:

看来他们正在使用“al:web:should_fallback”元属性来检查您的应用是否“仅限移动”并且没有网络存在。据我所知,根据 App Links spec defines it 的方式,这没有意义。但我知道什么。

无论如何,如果您希望您的 Facebook 帖子直接转到您应用中的深层链接,而不是通过 Facebook 随机应用链接 UX 处理打开不和谐的 WebView ,请将以下元属性添加到您的 html 页面:

<meta property="al:web:should_fallback" content="false" />

当然,这现在可以防止您将未安装该应用程序的用户发送到应用程序商店以外的任何地方。然而,由于 webview 通常只是 Facebook 帖子的重复,这可能是一个值得权衡的地方。

关于ios - Facebook AppLinks 在 iOS 上究竟如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25501412/

相关文章:

iphone - 在 iOS 中呈现模态视图 Controller 不起作用

iphone - 我可以在不手动转换所有顶点的情况下进行 openGL 几何批处理吗?

uitableview - 点击单元格时如何播放视频?

ios - 如何获取缓存图像 SDWebImage 的数据

ios - block 语法 Objective-C

ios - AVFoundation 自定义相机导致崩溃/内存压力?

objective-c - 在 objective-c 中是否有一些我们可以用来设置断点的 no op 操作

iphone - 通过动画从 A 图像过渡到 B 图像

ios - 如何使用 Reachability.m/.h 强制检查互联网可达性

ios - 带有 Cocoa Pods 的 Swift 框架