facebook App links 接入

背景:游戏产品需要接入facebook分享,这就要使用到facebook的App links功能,查看官方网站,遇到了一些坑,发现国内很少有人有这方面的介绍,记录下来供后来人使用。

 

首先了解一下:facebook的App links与Deep links不是一个东东,

Deep Link 是facebook专门为广告提供的

参考:https://developers.facebook.com/docs/app-ads/deep-linking/

而App links是我们想在facebook上,分享我们自己的应用,别人点击的时候,如果已经安装跳转到指定页面,没有安装则到下载页面,下面进入正题:

1.App links 分为两个部分:

        1)当已经安装的时候,我们需要让facebook识别我们的scheme,跳转到我们指定的页面。这个配置就让android和ios都支持了,

<html>
<head>
<meta property="al:ios:url" content="applinks://docs" /> //ios的scheme地址,在plist中配置
<meta property="al:ios:app_store_id" content="12345" /> //ios的应用商店id
<meta property="al:ios:app_name" content="App Links" /> //ios应用名字
<meta property="al:android:url" content="applinks://docs" />  //android的scheme地址
<meta property="al:android:app_name" content="App Links" /> //android应用名字
<meta property="al:android:package" content="org.applinks" /> 应用包名
<meta property="al:web:url"
content="http://applinks.org/documentation" /> //web端的,我直接干掉了
</head>
<body>
Hello, world! //这个不需要,我们想直接跳转
</body>
</html>

对于android我们需要在一个activity中配置scheme让facebook能找到我们

<activity android:name=".MainActivity"
    android:label="@string/app_name" >
    ...
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="sharesample" />
    </intent-filter>
</activity>

ios则需要在plist中配置:

applinks://docs?al_applink_data=%7B%22user_agent%22%3A%22Bolts%20iOS%201.0.0%22%2C%22target_url%22%3A%22http%3A%5C%2F%5C%2Fexample.com%5C%2Fapplinks%22%2C%22extras%22%3A%7B%22myapp_token%22%3A%22t0kEn%22%7D%7D

参考:https://developers.facebook.com/docs/applinks/metadata-reference/

2)当应用没有安装的时候,我们需要跳转到应用商店,一种比较好的用户体验就是直接配置refresh,这个的含义就是自动跳转到一个员工商店。

<html>
<head>
<meta property="al:ios:url" content="applinks://docs" /> //ios的scheme地址,在plist中配置
<meta property="al:ios:app_store_id" content="12345" /> //ios的应用商店id
<meta property="al:ios:app_name" content="App Links" /> //ios应用名字
<meta property="al:android:url" content="applinks://docs" />  //android的scheme地址
<meta property="al:android:app_name" content="App Links" /> //android应用名字
<meta property="al:android:package" content="org.applinks" /> 应用包名

<meta http-equiv="refresh" content="0;url=https://play.google.com/store/apps/details?id=com.machsystem.amrsh">

<meta property="al:web:url"
content="http://applinks.org/documentation" /> //web端的,我直接干掉了
</head>
<body>
Hello, world! //这个不需要,我们想直接跳转
</body>
</html>
这种体验很好,当有应用的时候,跳转到指定页面,没有的时候,直接跳转到应用商店,但是问题出现了,android和ios对应两个应用商店,这里只能配置一个,一开始打算通过js判断android和ios来修改refresh的content,但是这种方案不生效。

前端并不是我的专长,所以我想到了折中方案,就是修改location进行二次跳转。

    <script>
        var u = navigator.userAgent;
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

        var refer = getQueryVariable("referrer");
        if(isAndroid){
            location.href='https://play.google.com/store/apps/details?id=com.machsystem.amrsh'
        } else {
            location.href='https://itunes.apple.com/cn/app/amo-rush/id1454089647?l=zh&ls=1&mt=8'
        }
    </script>

这样就实现了我们的需求。

 

接下来就是丰富完善的过程了,

例如:我们需要定制我们分享的内容:(下面这几个配置是让facebook显示我们的指定样式,不至于只显示一个url)

    <meta property="og:type"               content="article" /> 类型
    <meta property="og:title"              content="Amo jump" /> 显示的名字
    <meta property="og:description"        content="Amo jump 游戏更精彩" /> 显示的描述
    <meta property="og:image"              content="http://static01.nyt.com/images/2015/02/19/arts/international/19iht-btnumbers19A/19iht-btnumbers19A-facebookJumbo-v2.jpg" />显示的图片
 

下面我们还想将一些信息传给应用市场,这样就可以知道用户之间的推荐关系了,

 

所以最终的app links配置如下:

<html prefix="og: http://ogp.me/ns#">
<head>
    <title>gamecenter</title>
    <meta property="og:type"               content="article" />
    <meta property="og:title"              content="Amo jump" />
    <meta property="og:description"        content="Amo jump 游戏更精彩" />
    <meta property="og:image"              content="http://static01.nyt.com/images/2015/02/19/arts/international/19iht-btnumbers19A/19iht-btnumbers19A-facebookJumbo-v2.jpg" />
    <meta property="al:android:url" content="machbird://story/1234">
    <meta property="al:android:package" content="com.sdfh.min">
    <meta property="al:android:app_name" content="gomining">
    <meta property="al:ios:url" content="machbird://applinks" />
    <meta property="al:ios:app_store_id" content="1454089647" />
    <meta property="al:ios:app_name" content="Amo rush" />

    <script>
        var u = navigator.userAgent;
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

        var refer = getQueryVariable("referrer");
        if(isAndroid){
            location.href='https://play.google.com/store/apps/details?id=com.machsystem.amrsh&referrer='+refer
        } else {
            location.href='https://itunes.apple.com/cn/app/amo-rush/id1454089647?l=zh&ls=1&mt=8&referrer='+refer
        }

        function getQueryVariable(variable)
        {
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var i=0;i<vars.length;i++) {
                var pair = vars[i].split("=");
                if(pair[0] == variable){return pair[1];}
            }
            return(false);
        }
    </script>

</head>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值