如何从Facebook帖子打开我的原生Android应用程序

时间:2013-10-11 12:55:24

标签: android facebook native deep-linking

我有一个名为Jamama的android应用程序。它从我的云中播放声音。 其intent过滤器处理以http://jamama.com开头的所有URL。 当我在Facebook上发布Jamama URL时,以及在Android设备上从FB应用程序点击链接时,我希望它能够打开应用程序,或者跳转到Google Play应用程序进行下载。 我已经看到它与许多应用程序(Soundcloud,CandyCrush等)合作。难点在于FB将我的URL包装为FB url的参数。

现在,我一直在网上调查这个问题。 我在StackOverflow中看到过类似的问题,但从来没有真正表达过我的意思,也从未提供过有用的答案。所以我在这里再次抓住机会。

我确实创建了一个FB应用程序,我为此定义了以下内容:

  • 基本信息(没有命名空间),
  • 在Facebook上使用http [s]:// jamama.com/作为URL原生Android应用程序,具有正确的包,活动和密钥哈希(调试和发布),并启用了Facebook登录和深层链接。

然而,点击我在FB帖子中发送的链接仍然会导致在浏览器中打开一个页面而不是打开我的应用程序。

我还听说Facebook SDK中的API为Android打开一个专门的对话框来发布故事。这可能很好,但我真的需要它来处理一个简单的文本。现在我分享一个文本,Android打开正确的Intent选择器给我选择通过Facebook,谷歌,邮件等分享它这就是我想要的。我不想为每个共享应用程序进行特殊处理。

我认为它适用于许多网站,例如YouTube,SoundCloud,MuseScore等。我错过了什么,所以它对我也有效?

由于

迈克尔

2 个答案:

答案 0 :(得分:0)

我有一个Facebook应用程序和Android应用程序几乎完全相同的事情,听起来你想拦截浏览器中的链接/字符串从在facebook回调端生成的点击(因为这是什么来首先,使用基本的操作顺序。)

更明确的是,用户在Facebook上(使用标准的Facebook应用程序)点击您的Facebook应用程序(可能是一个标题为“免费注册”),来自您的Facebook应用程序的回调网址(在这种情况下为“免费注册“横幅”需要提醒机器人通过其网址/字符串投掷浏览器以打开您的Android应用程序。

如果以上是正确的,我使用了javaScript,我的facebook应用程序回调url转到自定义html页面(在计时器上使用JavaScript),然后将广播发送到Android并启动我的应用程序。可能有很多其他方法可以做到这一点,但这就是我如何做到这一点,为了遵循我的道路你必须开始here。步骤如下

1:Facebook Mobile 2:CLICK导致的Facebook应用程序 3:使用Android webkit定义的here的Html / javaScript(该交互/ CLICK) 4:通过Intent启动Android应用程序(就像点击菜单中的图标一样)

同样,我不是许多方法的执政权威。希望能在某种程度上帮助你。如果它确实像我的回答。

答案 1 :(得分:0)

更新和正确的方法是通过名为AppLinks的东西。 AppLinks是由Facebook开发的,以便完全按照您所描述的内容进行操作

  1. Facebook文档页面:https://developers.facebook.com/docs/applinks/overview

  2. 官方网站:http://applinks.org

  3. 那么,你如何使用它 (我之前正在描述,因为这个问题就在其中,但在iOS中是可行的)

    因此,在您的HTML页面中,您必须添加以下内容

    <head>
    ...
    <meta property="al:android:url" content="sample://yourapp/deep_linking_uri">
    <meta property="al:android:package" content="com.yourapp.package">
    <meta property="al:android:app_name" content="NameOnTheStore">
    ...
    </head>
    

    在您的Android应用中,您需要将刚发送的URI绑定到活动

    <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="sample" />
       </intent-filter>
    </activity>