// 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初始化"); */ NSLog(@"Unity iOS didFinishLaunching 正常启动"); return YES; } // - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions // { // [super application:application didFinishLaunchingWithOptions:launchOptions]; // // 启动微信SDK日志 // [WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) { // NSLog(@"WeChatSDK: %@", log); // }]; // NSString *weichatId = [NSString stringWithFormat:@"%s", "wxfe29f3f64e3c5d16"]; // NSString *universalLink = @"https://xmjssvr.cn/BowArrow/"; // BOOL installed = [WXApi isWXAppInstalled]; // NSLog(@"installed result: %@", installed ? @"true" : @"false"); // // 注册微信App // BOOL result = [WXApi registerApp:weichatId universalLink:universalLink]; // NSLog(@"registerApp result: %@", result ? @"true" : @"false"); // // 检查UniversalLink是否配置正确 // [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) { // NSLog(@"ULCheck Step: %ld, success: %d, error: %@, suggestion: %@", (long)step, result.success, result.errorInfo, result.suggestion); // }]; // NSLog(@"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 _RegisterWeChat(const char* appid, const char* link) { NSString *nsAppId = [NSString stringWithUTF8String:appid]; NSString *nsLink = [NSString stringWithUTF8String:link]; BOOL installed = [WXApi isWXAppInstalled]; NSLog(@"微信是否安装: %@", installed ? @"是" : @"否"); BOOL result = [WXApi registerApp:nsAppId universalLink:nsLink]; NSLog(@"微信注册结果: %@", result ? @"成功" : @"失败"); } //微信登录 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]; } }