MyAppController.mm 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. // MyAppController.mm
  2. #import "WXApi.h"
  3. #import "UnityAppController.h"
  4. typedef void (*WXResultHandler) (const char *object);
  5. static WXResultHandler wxHandler;
  6. @interface MyAppController : UnityAppController < WXApiDelegate >
  7. @end
  8. IMPL_APP_CONTROLLER_SUBCLASS (MyAppController)
  9. @implementation MyAppController
  10. - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
  11. {
  12. [super application:application didFinishLaunchingWithOptions:launchOptions];
  13. // TODO
  14. /* NSString *weichatId = [NSString stringWithFormat:@"%s", "wxfe29f3f64e3c5d16"];
  15. BOOL installed = [WXApi isWXAppInstalled];
  16. NSLog(@"installed result: %@", installed?@"true":@"false");
  17. BOOL result = [WXApi registerApp:weichatId universalLink:(@"https://xmjssvr.cn/BowArrow/")];
  18. NSLog(@"result: %@", result?@"true":@"false");
  19. NSLog(@"result: %@",@"didFinishLaunchingWithOptions MyAppController初始化"); */
  20. NSLog(@"Unity iOS didFinishLaunching 正常启动");
  21. return YES;
  22. }
  23. // - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
  24. // {
  25. // [super application:application didFinishLaunchingWithOptions:launchOptions];
  26. // // 启动微信SDK日志
  27. // [WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
  28. // NSLog(@"WeChatSDK: %@", log);
  29. // }];
  30. // NSString *weichatId = [NSString stringWithFormat:@"%s", "wxfe29f3f64e3c5d16"];
  31. // NSString *universalLink = @"https://xmjssvr.cn/BowArrow/";
  32. // BOOL installed = [WXApi isWXAppInstalled];
  33. // NSLog(@"installed result: %@", installed ? @"true" : @"false");
  34. // // 注册微信App
  35. // BOOL result = [WXApi registerApp:weichatId universalLink:universalLink];
  36. // NSLog(@"registerApp result: %@", result ? @"true" : @"false");
  37. // // 检查UniversalLink是否配置正确
  38. // [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
  39. // NSLog(@"ULCheck Step: %ld, success: %d, error: %@, suggestion: %@", (long)step, result.success, result.errorInfo, result.suggestion);
  40. // }];
  41. // NSLog(@"MyAppController 初始化完成");
  42. // return YES;
  43. // }
  44. // - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
  45. // NSLog(@"result: %@",@"handleOpenURL 执行");
  46. // return [WXApi handleOpenURL:url delegate:self];
  47. // }
  48. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
  49. NSLog(@"result: %@",@"openURL options 执行");
  50. return [WXApi handleOpenURL:url delegate:self];
  51. }
  52. // - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  53. // NSLog(@"result: %@",@"openURL 执行");
  54. // return [WXApi handleOpenURL:url delegate:self];
  55. // }
  56. - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
  57. {
  58. NSLog(@"result: %@",@"continueUserActivity 执行");
  59. return [WXApi handleOpenUniversalLink:userActivity delegate:self];
  60. }
  61. - (void)onResp:(BaseResp *)resp {
  62. // TODO 微信回调,调用微信SDK的sendReq,会回调此方法,登录、分享等都是回调到这里
  63. if([resp isKindOfClass:[SendAuthResp class]])
  64. {
  65. SendAuthResp *temp = (SendAuthResp*)resp;
  66. int errorCode = temp.errCode;
  67. switch (errorCode) {
  68. case 0:
  69. {
  70. NSString* str =@"0;";
  71. NSString* str1=[str stringByAppendingString: temp.code];
  72. //callUnity("WXLoginCallback",[str1 UTF8String]);
  73. wxHandler([str1 UTF8String]);
  74. break;
  75. }
  76. case -2:
  77. //callUnity("WXLoginCallback","-2;用户取消");
  78. wxHandler("-2;用户取消");
  79. break;
  80. case -4:
  81. //callUnity("WXLoginCallback","-4;用户拒绝授权");
  82. wxHandler("-4;用户拒绝授权");
  83. break;
  84. default:
  85. //callUnity("WXLoginCallback","-1;登录失败");
  86. wxHandler("-1;登录失败");
  87. break;
  88. }
  89. }
  90. }
  91. - (void)onReq:(BaseReq *)req {
  92. // TODO 微信回调,从微信端主动发送过来的请求
  93. }
  94. @end
  95. #pragma mark - 接口
  96. // 为回避C++命名粉碎,以C linkage进行声明
  97. extern "C" {
  98. //动态注册信息
  99. void _RegisterWeChat(const char* appid, const char* link)
  100. {
  101. NSString *nsAppId = [NSString stringWithUTF8String:appid];
  102. NSString *nsLink = [NSString stringWithUTF8String:link];
  103. BOOL installed = [WXApi isWXAppInstalled];
  104. NSLog(@"微信是否安装: %@", installed ? @"是" : @"否");
  105. BOOL result = [WXApi registerApp:nsAppId universalLink:nsLink];
  106. NSLog(@"微信注册结果: %@", result ? @"成功" : @"失败");
  107. }
  108. //微信登录
  109. void _WechatLogin(WXResultHandler resultHandler)
  110. {
  111. wxHandler = resultHandler;
  112. if([WXApi isWXAppInstalled] ==false)
  113. {
  114. NSLog(@"请先安装微信客户端");
  115. return;
  116. }
  117. //登录
  118. SendAuthReq* req = [[SendAuthReq alloc] init];
  119. req.scope = @"snsapi_userinfo";
  120. req.state = [NSString stringWithFormat:@"%s", "wechat_sdk"];
  121. //[WXApi sendReq:req];
  122. [WXApi sendReq:req completion:^(BOOL success) { NSLog(@"唤起微信:%@", success ? @"成功" : @"失败"); }];
  123. }
  124. //判断是否安装微信
  125. bool IsWechatInstalled_iOS()
  126. {
  127. return [WXApi isWXAppInstalled];
  128. }
  129. }