在反应移动应用程序上设置应用程序链接
Setup app links on a react mobile application
我实际上正在制作一个移动应用程序,我想设置链接以在您单击它时打开它。
我尝试设置应用程序链接,但我似乎没有用...这是我的代码:
Manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.didierurban.testLenny">
...
<activity
android:name="MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait">
...
<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="https" android:host="example.net" />
</intent-filter>
</activity>
</application>
</manifest>
我的 assetlink.json(在 https://example.net/.well-known/assetlinks.json 上)
// 20210407190840
// https://lenny-girardot.fr/.well-known/assetlinks.json
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.didierurban.testLenny",
"sha256_cert_fingerprints": [
"D4:DC:31:60:E9:B2:3F:2B:DF:23:33:31:49:D3:10:9F:3C:3A:6F:E6:1D:41:6E:DB:17:A3:3E:DD:1C:9C:6A:46"
]
}
}
]
app.json
{
"expo": {
"scheme": "...",
"name": "...",
"slug": "...",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "..."
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF"
},
"package": "..."
},
"web": {
"favicon": "./assets/favicon.png"
}
}
}
如果应用程序链接无法与 React 一起使用,我应该如何设置才能使其正常工作?
我也尝试使用 https://www.npmjs.com/package/node-deeplink 但它似乎过时了。
谢谢
在博览会上,您首先需要在 app.json
中指定一个 scheme
。例如 myawesomeapp
.
您的清单文件也应该具有与此相同的方案
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.didierurban.testLenny">
...
<activity
android:name="MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait">
...
<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="myawesomeapp" />
</intent-filter>
</activity>
</application>
</manifest>
在 ios 上,将其添加到 info.plist
此处
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myawesomeapp</string>
</array>
</dict>
</array>
然后您可以使用 url myawesomeapp://
打开指向您的应用程序的链接
您还可以查看此 library 以从您的 React 本机应用程序链接到其他应用程序
有关 expo 中深度链接的更多信息,请查看文档 here
我实际上正在制作一个移动应用程序,我想设置链接以在您单击它时打开它。 我尝试设置应用程序链接,但我似乎没有用...这是我的代码:
Manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.didierurban.testLenny">
...
<activity
android:name="MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait">
...
<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="https" android:host="example.net" />
</intent-filter>
</activity>
</application>
</manifest>
我的 assetlink.json(在 https://example.net/.well-known/assetlinks.json 上)
// 20210407190840
// https://lenny-girardot.fr/.well-known/assetlinks.json
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.didierurban.testLenny",
"sha256_cert_fingerprints": [
"D4:DC:31:60:E9:B2:3F:2B:DF:23:33:31:49:D3:10:9F:3C:3A:6F:E6:1D:41:6E:DB:17:A3:3E:DD:1C:9C:6A:46"
]
}
}
]
app.json
{
"expo": {
"scheme": "...",
"name": "...",
"slug": "...",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "..."
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF"
},
"package": "..."
},
"web": {
"favicon": "./assets/favicon.png"
}
}
}
如果应用程序链接无法与 React 一起使用,我应该如何设置才能使其正常工作? 我也尝试使用 https://www.npmjs.com/package/node-deeplink 但它似乎过时了。
谢谢
在博览会上,您首先需要在 app.json
中指定一个 scheme
。例如 myawesomeapp
.
您的清单文件也应该具有与此相同的方案
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.didierurban.testLenny">
...
<activity
android:name="MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait">
...
<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="myawesomeapp" />
</intent-filter>
</activity>
</application>
</manifest>
在 ios 上,将其添加到 info.plist
此处
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myawesomeapp</string>
</array>
</dict>
</array>
然后您可以使用 url myawesomeapp://
您还可以查看此 library 以从您的 React 本机应用程序链接到其他应用程序
有关 expo 中深度链接的更多信息,请查看文档 here