samira gheibipour
samira gheibipour
خواندن ۱ دقیقه·۳ سال پیش

Deep link in react native

گاهی پیش اومده که بخواید از اپتون برید به یه مرورگر و سپس وقتی روی دکمه بازگشت درون صفحه وب تعریف کردید برگردید به اپ با یه سری پارامتر

بیشتر این برای حالتی پیش میاد که بخواید از اپ قسمت درگاه رو صدا بزنید و بعدش که برمیگردید به اپ پیغام یا وب سرویس خاصی رو براساس اطلاعات پاس داده شده از مرورگر رو هندل کنید

ابتدا در

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);
}
});
};



react nativeریکت نیتیو
شاید از این پست‌ها خوشتان بیاید