在应用程序中定义默认 link 处理行为

Defining default link handling behaviour in app

我的用户在 Whatsapp/Slack 中打开我的应用程序的 link,它在 Whatsapp/Slack 中的网络视图中打开。我怎样才能让它在我的应用程序中打开,而不是在 Whatsapp 中打开?

如果有link我应该阅读,请post。我搜索了一下,然后问了。

正如 React Navigation documentation 中所建议的那样: 在YourAppName/android/app/src/main/AndroidManifest.xml中,进行以下调整:

1.Set MainActivity 的 launchMode 为 singleTask,以便接收现有 MainActivity 的意图。 2.Add MainActivity 条目中的新 intent-filter 具有 VIEW 类型的操作。

现在,您的清单文件应该如下所示:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <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="mychat" />
    </intent-filter>
</activity>

既然你提到了打开你的 React Native 应用程序,当点击 link 时,我假设你是在谈论深入link在应用程序上处理你的内容。

在 iOS 中有两种方法可以实现这一点,android 也必须有类似的方法。

第一种方法是为您的应用定义自定义 url。通过为您的应用程序注册自定义 url 方案,任何以 your-custom-url:// 开头的 url 将自动重定向到您的 iOS 应用程序。 要注册自定义 url 方案,请执行以下步骤:

  1. 打开 Xcode 并在左窗格中单击您的项目。
  2. Select 您的目标(您的应用),然后导航至 Info 选项卡。
  3. 向下滚动到 URL Types 部分,然后单击加号添加一个新部分。
  4. identifier 字段中输入您的应用程序包标识符(例如:com.your.app.name)
  5. 保留编辑者角色,并在 URL 方案中为您的应用添加自定义 url 前缀。 (例如:myawesomapp)。

这些步骤将注册您的自定义 url 方案。

在应用程序中处理深度 link 的第二种方法是使用 UNIVERSAL LINKS。 这是 apple 建议的处理 deeplinking 的方式。据苹果称,

添加对通用 links 的支持很容易。您需要执行三个步骤:

创建一个 apple-app-site-association 文件,其中包含关于您的应用可以处理的 URL 的 JSON 数据。

将 apple-app-site-association 文件上传到您的 HTTPS 网络服务器。您可以将文件放在服务器的根目录或 .well-known 子目录中。

准备您的应用以处理通用 links。

现在任何 link 到您的网站,例如 www.example。com/user/username,将被重定向到您注册的应用程序。

可以参考docs