react native - 瀏覽器通過(guò)deeplink打開(kāi)app后,app如何接收URL上的參數(shù)

1形耗、Android 如何接收URL參數(shù)

? ? ? ? 在文件android/app/src/main/java/.../MainActivity.java?重寫(xiě)方法?onNewIntent茂浮,代碼如下

public class MainActivity extends ReactActivity {? ??????

...

????@Override

????public void onNewIntent(Intent intent) {

? ??????super.onNewIntent(intent);

? ??????String action = intent.getAction();

? ??????Uri data = intent.getData();? // 獲取URL上的所有數(shù)據(jù)

? ??????if (data != null) {

? ??????????WritableMap params = Arguments.createMap();

? ??????????params.putString("url_query", data.getQuery());? // 獲取URL上的參數(shù)

? ??????????params.putString("url_scheme", data.getScheme());? // 獲取scheme

? ? ? ? ? ? params.putString("url_host", data.getHost());? // 獲取host? ? ? ? ? ????????????sendEvent(Objects.requireNonNull(getReactNativeHost().getReactInstanceManager().getCurrentReactContext()), "XXX", params);? // ‘xxx'這個(gè)可以自己隨便定義,react native監(jiān)聽(tīng)的名字渗常,建議跟ios保持一致

? ? ? ? }

? ? }


? ??private void sendEvent(ReactContext reactContext,?String eventName,?@Nullable WritableMap params) {

? ??????reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, params);

? ? }

...

}

2、IOS 如何接收URL參數(shù)

? ? ? ? 2.1 在ios/文件夾下新建文件 XXX.m 汗盘,最好在xcode下新建皱碘, 此處的XXX建議與上面Android的'xxx'保持一致, 以下所有XXX均表示同一意思隐孽,建議使用同一個(gè)名稱癌椿。

@implementation XXX? ? ??

RCT_EXPORT_MODULE();

- (NSArray<NSString *> *)supportedEvents

{

? ??return @[@"XXX"];

}


- (instancetype)init {

? ??????if (self = [super init]) {

? ??????????//初始化的時(shí)候注冊(cè)事件

? ? ? ? ? ??[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fireData:) name:@"fireData" object:nil];

? ? ? ? }

? ??????return self;

}


+ (BOOL)requiresMainQueueSetup{

? ??return YES;

}

+ (id)allocWithZone:(NSZone *)zone {

? ??static XXX *sharedInstance = nil;

? ??static dispatch_once_t onceToken;

? ??dispatch_once(&onceToken, ^{

? ??????sharedInstance = [super allocWithZone:zone];

? ??});

? ??return sharedInstance;

}


- (void)fireData:(NSMutableDictionary *)callbackMap{

? ? // 給React Native發(fā)送數(shù)據(jù),RN監(jiān)聽(tīng)XXX菱阵,建議與Android名稱保持一致

? ??[self sendEventWithName:@"XXX" body:callbackMap];

}

????2.2?在ios/文件夾下新建文件 XXX.h

#ifndef XXX_h

#define XXX_h

#import <React/RCTBridgeModule.h>

#import <React/RCTEventEmitter.h>


@interface XXX : RCTEventEmitter <RCTBridgeModule>

- (void)fireData:(NSMutableDictionary *)notification;

@end

#endif

? ? 2.3 更新 ios/projectName/AppDelegate.m

...

#import "XXX.h"? // 引入2.2的文件

...

...

- (BOOL)application:(UIApplication *)application

????openURL:(NSURL *)url

? ??options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options

{

? ??NSMutableDictionary * callbackMap = [NSMutableDictionary dictionary];

????[callbackMap setObject:url.query forKey:@"url_query"];

? ??[callbackMap setObject:url.scheme forKey:@"url_scheme"];

? ??[callbackMap setObject:url.host forKey:@"url_host"];

? ??XXX * xxx = [XXX allocWithZone:nil];? // xxx隨意起參數(shù)名

? ??[xxx fireData:(callbackMap)]; // xxx是上一行的參數(shù)名

? ??return [RCTLinkingManager application:application openURL:url options:options];

}

...

// 注意:一定要在這個(gè)@end之前寫(xiě)上面的代碼踢俄,可以緊挨著,但一定要在它的前面

@end

3晴及、React Native接收數(shù)據(jù) (我是在App.tsx里監(jiān)聽(tīng)的)

import { NativeEventEmitter, NativeModules } from 'react-native';

...

const XXX = new NativeEventEmitter(NativeModules.XXX);

XXX.addListener('XXX', async (callBackMap: any) => {

????// 處理接收到的數(shù)據(jù)

????...

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末都办,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琳钉,老刑警劉巖势木,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異歌懒,居然都是意外死亡啦桌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)歼培,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)震蒋,“玉大人,你說(shuō)我怎么就攤上這事躲庄〔槠剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵噪窘,是天一觀的道長(zhǎng)笋庄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)倔监,這世上最難降的妖魔是什么直砂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮浩习,結(jié)果婚禮上静暂,老公的妹妹穿的比我還像新娘。我一直安慰自己谱秽,他們只是感情好洽蛀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著疟赊,像睡著了一般郊供。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上近哟,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天驮审,我揣著相機(jī)與錄音,去河邊找鬼吉执。 笑死疯淫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戳玫。 我是一名探鬼主播峡竣,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼量九!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荠列,失蹤者是張志新(化名)和其女友劉穎类浪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肌似,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡费就,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了川队。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片力细。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖固额,靈堂內(nèi)的尸體忽然破棺而出眠蚂,到底是詐尸還是另有隱情,我是刑警寧澤斗躏,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布逝慧,位于F島的核電站,受9級(jí)特大地震影響啄糙,放射性物質(zhì)發(fā)生泄漏笛臣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一隧饼、第九天 我趴在偏房一處隱蔽的房頂上張望沈堡。 院中可真熱鬧,春花似錦燕雁、人聲如沸诞丽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)率拒。三九已至,卻和暖如春禁荒,著一層夾襖步出監(jiān)牢的瞬間猬膨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工呛伴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勃痴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓热康,卻偏偏與公主長(zhǎng)得像沛申,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姐军,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容