我有一个使用react-native-inappbrowser-reborn 的身份验证流程。我已经设置了重定向深层链接,并且适用于 Android 和 iOS 调试构建。然而,在 Android 上,当我构建版本时,登录成功后,浏览器立即关闭并响应:
{"message": "chrome tabs activity destroyed", "type": "dismiss"}
重定向深层链接是 demo://success?token='abc'
它在 iOS 和 Android 调试版本以及 iOS 发布版本(Android 除外)上都可以正常工作
AndroidManifest.xml
<intent-filter android:label="demo app">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="demo" android:host="success"/>
</intent-filter>
我的登录
onPress={async () => {
try {
//when login success web will redirect to this demo://sucess?token='abc'
//Config.baseUrlTwo = "https://demo.com/"
const browser = await InAppBrowser.openAuth(Config.baseUrlTwo + "oauth/authenticate",
"demo://success",
{ forceCloseOnRedirection: false, showInRecents: true }
);
if (browser && browser.type === "success") {
let token = "";
let getToken = browser.url.match(/'([^']+)'/g) || [];
if (getToken.length) {
getToken = getToken.map((match) => match.slice(1, -1));
token = getToken[0];
} else if (browser.url.includes("%27")) {
getToken = browser.url.split("%27") || [];
if (getToken.length) {
token = getToken[1];
}
}
if (token !== "") {
props.dispatch(Login({ token, ...props }));
}
} else {
Alert.alert(JSON.stringify(browser));
}
} catch (error) {
Alert.alert(error.message);
}
}}
我不知道这个bug从哪里来
请确认:
await InAppBrowser.isAvailable()
demo://success
正在发布应用程序中工作。尝试在笔记应用程序中输入该网址并按链接forceCloseOnRedirection
更改为 true 或 false。奖励:根据他们的文档,还请尝试添加
RNInAppBrowserModule.onStart(this);
,这将有助于检查浏览器是否受支持/可用,并在应用程序启动时立即启动它。