在应用程序中定义默认 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 方案,请执行以下步骤:
- 打开 Xcode 并在左窗格中单击您的项目。
- Select 您的目标(您的应用),然后导航至
Info
选项卡。
- 向下滚动到
URL Types
部分,然后单击加号添加一个新部分。
- 在
identifier
字段中输入您的应用程序包标识符(例如:com.your.app.name)
- 保留编辑者角色,并在 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
我的用户在 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 方案,请执行以下步骤:
- 打开 Xcode 并在左窗格中单击您的项目。
- Select 您的目标(您的应用),然后导航至
Info
选项卡。 - 向下滚动到
URL Types
部分,然后单击加号添加一个新部分。 - 在
identifier
字段中输入您的应用程序包标识符(例如:com.your.app.name) - 保留编辑者角色,并在 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