گاهی پیش اومده که بخواید از اپتون برید به یه مرورگر و سپس وقتی روی دکمه بازگشت درون صفحه وب تعریف کردید برگردید به اپ با یه سری پارامتر
بیشتر این برای حالتی پیش میاد که بخواید از اپ قسمت درگاه رو صدا بزنید و بعدش که برمیگردید به اپ پیغام یا وب سرویس خاصی رو براساس اطلاعات پاس داده شده از مرورگر رو هندل کنید
ابتدا در
AndroidManifest.xml
درون تگ
Activity
این مقدار رو بزارید
android:launchMode="singleTask"
به اینصورت
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
android:launchMode="singleTask"
>
درون تگ
intent-filter
این کد رو بزارید
android:autoVerify="true">
به اینصورت
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
سپس یه
intent-filter
درست کنید و این قطعه کد رو بزارید
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="unic_name" android:host="test.com" />
</intent-filter>
توجه داشته باشید که به جای
unic_name
هر اسمی که میخواید بزارید که هرموقع یا این اسم شما بیرون اپ صدا زده بشه بیاد داخل اپ و
test.com
رو هرچی دوست دارید بزارید
هرموقع که هرجای موبایل بودید و این آی دی رو زدید که بگه میخواید از مرورگر یا از اپ نگاه کنید این صفحه رو می بایست توی برنامه اینکار کنی توی
App.js
تنظمات رو انجام میدید که تقریبا اینطوره،
سپس در جای که میخواهید استفاده کنید در قسمت
componentDidMount
اون صفحه این کد را نوشته
Linking.getInitialURL().then((url) => console.log("in initial url:", url));
Linking.addEventListener("url", this.handleOpenUrl);
و در قسمت
componentWillUnmount
BackHandler.removeEventListener('handleOpenUrl', this.handleOpenUrl);
که تابع
handleOpenUrl
به این صورت می باشد
handleOpenUrl(e) {
console.log("on handle open url:", e.url);
var urlStr=e.url;
if(urlStr.includes('return_from_payment')){
const arrValue = urlStr.match(/\d+/g);
var TransactionId=arrValue[0];
var BookletId=arrValue[1];
console.log("_arr:::::::::"+JSON.stringify(TransactionId ));
.....
}
}
و موقعی که میخواد از توی اپ اون لینک رو باز کنه هم کدش مشخص
handleClick = (url) => {
Linking.canOpenURL(url).then(supported => {
if (supported) {
Linking.openURL(url);
// Linking.openURL('http://172.10.20.98:8000/Redirect.html');
} else {
console.log("Don't know how to open URI: " + url);
}
});
};