react-native-wechat-lib icon indicating copy to clipboard operation
react-native-wechat-lib copied to clipboard

H5唤起app wx-open-launch-app标签 , Ios冷启动进不到回调函数里 拿不到参数

Open chenshaxuanjing opened this issue 3 years ago • 3 comments

"react-native-wechat-lib": "^1.1.25", "react-native": "0.63.4",

热启动可以 冷启动不行

chenshaxuanjing avatar Mar 18 '21 01:03 chenshaxuanjing

给你一个最简单的解决方案:

// 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) => {

})

amazingCoding avatar Jul 08 '21 14:07 amazingCoding

要确保在handleOpenURl或者handleOpenUniversalLink之前调用register才能处理

lvan-zhang avatar Nov 24 '21 09:11 lvan-zhang

onReq

能留个联系方式么,想请教下,我用react-native-wechat-lib 直接打开app以后连onreq都没触发

xuanweiH avatar Sep 02 '22 10:09 xuanweiH