【问题标题】:chrome android unknown schemechrome android 未知方案
【发布时间】:2016-03-04 08:56:21
【问题描述】:

我在我的应用程序中使用带有 branch.io 的深度链接。应用程序生成 url 并使用自定义方案打开它。在原生 android brawser、firefox 和 opera-mini 上运行正常,但在带有 ERR_UNKNOWN_URL_SCHEME 的 chrome-android 上失败

代码如下: 清单

        <activity
        android:launchMode="singleTask"
        android:name=".ui.activity.ShareActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <data android:scheme="myapp" 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>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

生成url的代码(doc:https://dev.branch.io/getting-started/creating-links-in-apps/guide/android/):

    public static void generateShortUrl(@NonNull Context aContext,
                                    @Nullable String aMediaId,
                                    @Nullable String aCollectionId,
                                    @NonNull CanonicalIdentifier aCanonicalIdentifier,
                                    @NonNull String aDesktopUrl,
                                    @NonNull Branch.BranchLinkCreateListener aListener){

    BranchUniversalObject branchUniversalObject = new BranchUniversalObject()
            .setCanonicalIdentifier(String.valueOf(aCanonicalIdentifier.ordinal() + 1))
            .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
            .addContentMetadata(SHARE_MEDIA_ID, aMediaId);


    if(BuildConfig.DEBUG){
        Log.e("BranchConfigTest","share date:"+branchUniversalObject.convertToJson().toString());
    }

    if(!TextUtils.isEmpty(aCollectionId))
        branchUniversalObject.addContentMetadata(SHARE_COLLECTION_ID,aCollectionId);

    if(!TextUtils.isEmpty(aMediaId))
        branchUniversalObject.addContentMetadata(SHARE_MEDIA_ID,aMediaId);

    LinkProperties linkProperties = new LinkProperties()
            .setFeature("sharing")
            .addControlParameter("$desktop_url", aDesktopUrl);

    branchUniversalObject.generateShortUrl(aContext,linkProperties,aListener);
}

【问题讨论】:

  • 来自 Branch 的 Alex here...几个快速问题: 1. 你的应用中是否配置了 App Links? 2. 如果您将链接直接粘贴到 Chrome 地址栏中(不是从外部应用程序打开它),您是否仍然收到 ERR_UNKNOWN_URL_SCHEME 错误?
  • 嗨,Alex,我刚刚配置了 App Links,所以现在我有两个原因: 1. 我将生成的链接直接粘贴到 chrome 地址栏中 - 并得到了方案错误。 2 我粘贴到其他地方(错误跟踪器),然后用我的设备上的 chrome 打开它 - 在 playmarket 页面上重定向
  • 嗯...这些是我们的标准bnc.lt 链接,还是您使用的是自定义域?你能确认你打开的链接是httpS,而不仅仅是http吗?
  • 我使用 bnc.lt 域。这是我在应用程序端生成的链接示例bnc.lt/P2Gk/TgPzPohdvr 测试设备是 sm-t311 Android 4.4.1

标签: android google-chrome deep-linking branch.io


【解决方案1】:

Alex with Branch here:不幸的是,这是 Chrome 的一个已知问题。基本上,在 Chrome 40 的某些版本中,已决定键入和粘贴的 URL 应防止自动重定向,例如 Branch 用于打开 Play 商店或启动您的应用程序的重定向。我们worked on a solution with the Chromium team last summer,但几周前引起了我们的注意,该问题仅针对输入 URL 得到修复,而不是针对用户直接粘贴到 Chrome 地址栏中的 URL。

好消息是,在野外,这非常非常罕见。它通常仅由开发人员在分支集成的测试阶段触发 - 您的绝大多数用户只会单击链接(而不是粘贴 URL),因此永远不会遇到这种情况。显然,这仍然不是一个理想的解决方案,所以如果您愿意,请随时 file a radar with Chromium。我们可以支持它并要求我们的团队也提供示例。

【讨论】:

  • 谢谢你,亚历克斯,我认为这可以被接受为答案
  • 我的荣幸。如果您发现其他任何内容,请随时再次跟进
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多