react-native-wechat-lib
react-native-wechat-lib copied to clipboard
H5唤起app wx-open-launch-app标签 , Ios冷启动进不到回调函数里 拿不到参数
"react-native-wechat-lib": "^1.1.25", "react-native": "0.63.4",
热启动可以 冷启动不行
给你一个最简单的解决方案:
// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
// Add wechat
[WXApi registerApp:@"XXX" universalLink:@"XXX"];
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault removeObjectForKey:@"weChatInit"];
[userDefault synchronize];
return YES;
}
// 增加新的方法
-(void) onReq:(BaseReq*)req{
if ([req isKindOfClass:[LaunchFromWXReq class]]) {
LaunchFromWXReq *launchReq = (LaunchFromWXReq *)req;
NSString *appParameter = launchReq.message.messageExt;
NSMutableDictionary *body = @{@"errCode":@0}.mutableCopy;
body[@"type"] = @"LaunchFromWX.Req";
body[@"lang"] = launchReq.lang;
body[@"country"] = launchReq.country;
body[@"extMsg"] = appParameter;
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setObject:body forKey:@"weChatInit"];
[userDefault synchronize];
}
}
// node_modules 的 RCTWeChat.m
RCT_EXPORT_METHOD(registerApp:(NSString *)appid :(NSString *)universalLink :(RCTResponseSenderBlock)callback){
self.appId = appid;
callback(@[[NSNull null]]);
// 不需要再注册了
// callback(@[[WXApi registerApp:appid universalLink:universalLink] ? [NSNull null] : INVOKE_FAILED]);
}
// 增加这个方法
RCT_EXPORT_METHOD(getInitReq:(RCTResponseSenderBlock)callback){
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSDictionary *content = [userDefault objectForKey:@"weChatInit"];
if(content){
callback(@[content]);
}
else{
callback(@[[NSNull null]]);
}
}
// JS 端
NativeModules.WeChat.getInitReq((req: any) => {
})
要确保在handleOpenURl或者handleOpenUniversalLink之前调用register才能处理
onReq
能留个联系方式么,想请教下,我用react-native-wechat-lib 直接打开app以后连onreq都没触发