如何编写移动链接,以便在Android和iOS上的应用程序中打开(如果该应用程序存在),但如果应用程序不存在则使用http链接?

时间:2015-09-15 15:09:15

标签: android ios facebook windows-phone linkedin

我已经看到很多关于这个问题的问题,但总是针对特定的平台或用例。我想知道如何创建一个链接,例如Facebook页面,以便它可以在iOS和Android(以及Windows手机,黑莓手机等)上的应用程序(facebook,linkedin等)中打开,但如果没有可用的应用程序,将在浏览器中打开?

2 个答案:

答案 0 :(得分:0)

我们目前使用的是一项活动:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="@string/deeplink.scheme"
            android:host="@string/deeplink.host"
        />
    </intent-filter>

<string name="deeplink.scheme" translatable="false">http</string>
<string name="deeplink.host"   translatable="false">something.com</string>

然后在活动中我们检查活动是否是从网址开始的:

protected boolean startedExternally() {
    return
        (getIntent() != null) &&
        (Intent.ACTION_VIEW.equals(getIntent().getAction()) &&
        (getIntent().getData() != null));
}

然后如果返回true:

String route = getIntent().getData().getPath();

然后我们做了一些魔术来分析路线,所以应用程序知道如何处理它。

顶部的intent-filter确定我们是否希望应用拦截网址,或让Android执行此操作(这可能意味着启动浏览器)。

答案 1 :(得分:0)

您可以查看amqp_queue.c:963

它实现了Bolts Framework

Facebook和FacebookSDK推荐的螺栓基于它。

请检查以下示例:

AppLinks protocol https://developers.facebook.com/docs/applinks/ios