// MyAppController.mm #import "WXApi.h" #import "UnityAppController.h" typedef void (*WXResultHandler) (const char *object); static WXResultHandler wxHandler; @interface MyAppController : UnityAppController < WXApiDelegate > @end IMPL_APP_CONTROLLER_SUBCLASS (MyAppController) @implementation MyAppController - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { [super application:application didFinishLaunchingWithOptions:launchOptions]; // TODO NSString *weichatId = [NSString stringWithFormat:@"%s", "wxfe29f3f64e3c5d16"]; BOOL installed = [WXApi isWXAppInstalled]; NSLog(@"installed result: %@", installed?@"true":@"false"); BOOL result = [WXApi registerApp:weichatId universalLink:(@"https://xmjssvr.cn/BowArrow/")]; NSLog(@"result: %@", result?@"true":@"false"); NSLog(@"result: %@",@"didFinishLaunchingWithOptions MyAppController初始化"); return YES; } - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { NSLog(@"result: %@",@"handleOpenURL 执行"); return [WXApi handleOpenURL:url delegate:self]; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{ NSLog(@"result: %@",@"openURL options 执行"); return [WXApi handleOpenURL:url delegate:self]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSLog(@"result: %@",@"openURL 执行"); return [WXApi handleOpenURL:url delegate:self]; } - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler { NSLog(@"result: %@",@"continueUserActivity 执行"); return [WXApi handleOpenUniversalLink:userActivity delegate:self]; } - (void)onResp:(BaseResp *)resp { // TODO 微信回调,调用微信SDK的sendReq,会回调此方法,登录、分享等都是回调到这里 if([resp isKindOfClass:[SendAuthResp class]]) { SendAuthResp *temp = (SendAuthResp*)resp; int errorCode = temp.errCode; switch (errorCode) { case 0: { NSString* str =@"0;"; NSString* str1=[str stringByAppendingString: temp.code]; //callUnity("WXLoginCallback",[str1 UTF8String]); wxHandler([str1 UTF8String]); break; } case -2: //callUnity("WXLoginCallback","-2;用户取消"); wxHandler("-2;用户取消"); break; case -4: //callUnity("WXLoginCallback","-4;用户拒绝授权"); wxHandler("-4;用户拒绝授权"); break; default: //callUnity("WXLoginCallback","-1;登录失败"); wxHandler("-1;登录失败"); break; } } } - (void)onReq:(BaseReq *)req { // TODO 微信回调,从微信端主动发送过来的请求 } @end #pragma mark - 接口 // 为回避C++命名粉碎,以C linkage进行声明 extern "C" { //微信登录 void _WechatLogin(WXResultHandler resultHandler) { wxHandler = resultHandler; if([WXApi isWXAppInstalled] ==false) { NSLog(@"请先安装微信客户端"); return; } //登录 SendAuthReq* req = [[SendAuthReq alloc] init]; req.scope = @"snsapi_userinfo"; req.state = [NSString stringWithFormat:@"%s", "wechat_sdk"]; //[WXApi sendReq:req]; [WXApi sendReq:req completion:^(BOOL success) { NSLog(@"唤起微信:%@", success ? @"成功" : @"失败"); }]; } //判断是否安装微信 bool IsWechatInstalled_iOS() { return [WXApi isWXAppInstalled]; } }