在Android

时间:2015-07-15 06:13:56

标签: android facebook deep-linking

当我点击在FB上发布的深层链接时,我尝试使用FB deep link来获取App安装后的推荐信息。但是,只有在已安装app的情况下,我才会收到深层链接数据。

如下文所述 https://developers.facebook.com/docs/applinks/android

应用程序应在安装应用程序后从深层链接接收数据。 但原生FB应用程序仅发送给GooglePlay:

  

市场://细节ID = my.app.package&安培;引荐= utm_source = apps.facebook.com&安培; utm_campaign = fb4a&安培;的utm_content =%7B%22app%22%3A0%2C%22吨%22%3A1436879844%? 7D

深层链接没有信息

第一次启动时,我尝试在我的启动屏幕中使用下一个方法

AppLinks.getTargetUrlFromInboundIntent

AppLinkData.fetchDeferredAppLinkData 但他们让我无效。

一步一步

  1. 我为android创建了托管api链接。其中包括android https://developers.facebook.com/docs/graph-api/reference/v2.0/app/app_link_hosts
  2. 的所有可能数据
  3. 然后通过FB SDK发布此链接。
  4. 删除我的申请
  5. 点击我在原始FB应用程序中使用深层链接的帖子
  6. FB让我安装app。我已经安装了来自GooglePLay的应用程序
  7. 预期: 安装后,在启动应用程序上接收深层链接数据。

    但是如果FB Docs中描述的使用方法我没有收到任何信息

1 个答案:

答案 0 :(得分:-4)

我帮助构建了分支(branch.io),这是一个链接工具,有助于通过Play商店进行深层链接。我们在让Facebook的方法可靠地工作方面遇到了很多麻烦。如果您使用分支深层链接来托管您的Facebook应用程序链接,它将通过页面帖子,广告和邀请100%的时间工作。我们有一个服务器到服务器与Facebook的集成,但如果失败,我们会回到我们的指纹识别机制,我们将浏览器指纹与设备指纹相匹配。 (更多关于here

以下是如何进行设置的说明,以便Branch通过安装托管您的Facebook App链接和深层链接:

  1. 前往start.branch.io获取您的分行密钥并配置您的链接路由
  2. 从Maven Central
  3. 添加io.branch.sdk.android
  4. 设置清单以进行深层链接。你将从这开始:
  5. <application>
        <!-- Other existing entries -->
        <activity
            android:name="com.yourapp.SplashActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    
    • 添加应用程序子类,以便Branch可以监视生命周期更改以检测新的深层链接。
    <application
        android:name="io.branch.referral.BranchApp">
    
    • 添加您的意图过滤器,以便在已安装应用时接收深层链接
    <intent-filter>
        <data android:scheme="yourapp" android:host="open" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
    
    • 添加分支键
    <meta-data android:name="io.branch.sdk.BranchKey" android:value="your_key_here" />
    

    最终的Manifest应该是这样的:

    <application
        android:name="io.branch.referral.BranchApp">
    
        <!-- Other existing entries -->
        <activity
            android:name="com.yourapp.SplashActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data android:scheme="yourapp" android:host="open" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
        </activity>
    
        <meta-data android:name="io.branch.sdk.BranchKey" android:value="your_key_here" />
    
    </application>
    
    1. 注册以从分支深度链接点击接收参数。这通常放在您要用于深层链接路由的onStart of Activity中。
    2. Branch branch = Branch.getInstance(getApplicationContext());
      branch.initSession(new BranchReferralInitListener(){
          @Override
          public void onInitFinished(JSONObject referringParams, BranchError error) {
              if (error == null) {
                  // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
                  // params will be empty if no data found
                  // ... insert custom logic here ...
              } else {
                  Log.i("MyApp", error.getMessage());
              }
          }
      }, this.getIntent().getData(), this);
      
      1. 最后,您可以通过100种不同的方式创建分支托管的Facebook App链接。以下是如何从您的应用动态创建它们:
      2. Branch branch = Branch.getInstance();
        JSONObject obj = new JSONObject(); obj.putString("foo", "bar");
        branch.getShortUrl(obj, "sms", "share", new BranchLinkCreateListener() {
            @Override
            public void onLinkCreate(String url, BranchError error) {
                Log.i("MyApp", "Ready to share my link = " + url);
            }
        });
        

        快乐链接!