MyAppController.mm 5.0 KB

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