MyAppController.mm 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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 handleOpenURL:(NSURL *)url {
  23. NSLog(@"result: %@",@"handleOpenURL 执行");
  24. return [WXApi handleOpenURL:url delegate:self];
  25. }
  26. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
  27. NSLog(@"result: %@",@"openURL options 执行");
  28. return [WXApi handleOpenURL:url delegate:self];
  29. }
  30. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  31. NSLog(@"result: %@",@"openURL 执行");
  32. return [WXApi handleOpenURL:url delegate:self];
  33. }
  34. - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
  35. {
  36. NSLog(@"result: %@",@"continueUserActivity 执行");
  37. return [WXApi handleOpenUniversalLink:userActivity delegate:self];
  38. }
  39. - (void)onResp:(BaseResp *)resp {
  40. // TODO 微信回调,调用微信SDK的sendReq,会回调此方法,登录、分享等都是回调到这里
  41. if([resp isKindOfClass:[SendAuthResp class]])
  42. {
  43. SendAuthResp *temp = (SendAuthResp*)resp;
  44. int errorCode = temp.errCode;
  45. switch (errorCode) {
  46. case 0:
  47. {
  48. NSString* str =@"0;";
  49. NSString* str1=[str stringByAppendingString: temp.code];
  50. //callUnity("WXLoginCallback",[str1 UTF8String]);
  51. wxHandler([str1 UTF8String]);
  52. break;
  53. }
  54. case -2:
  55. //callUnity("WXLoginCallback","-2;用户取消");
  56. wxHandler("-2;用户取消");
  57. break;
  58. case -4:
  59. //callUnity("WXLoginCallback","-4;用户拒绝授权");
  60. wxHandler("-4;用户拒绝授权");
  61. break;
  62. default:
  63. //callUnity("WXLoginCallback","-1;登录失败");
  64. wxHandler("-1;登录失败");
  65. break;
  66. }
  67. }
  68. }
  69. - (void)onReq:(BaseReq *)req {
  70. // TODO 微信回调,从微信端主动发送过来的请求
  71. }
  72. @end
  73. #pragma mark - 接口
  74. // 为回避C++命名粉碎,以C linkage进行声明
  75. extern "C" {
  76. //微信登录
  77. void _WechatLogin(WXResultHandler resultHandler)
  78. {
  79. wxHandler = resultHandler;
  80. if([WXApi isWXAppInstalled] ==false)
  81. {
  82. NSLog(@"请先安装微信客户端");
  83. return;
  84. }
  85. //登录
  86. SendAuthReq* req = [[SendAuthReq alloc] init];
  87. req.scope = @"snsapi_userinfo";
  88. req.state = [NSString stringWithFormat:@"%s", "wechat_sdk"];
  89. //[WXApi sendReq:req];
  90. [WXApi sendReq:req completion:^(BOOL success) { NSLog(@"唤起微信:%@", success ? @"成功" : @"失败"); }];
  91. }
  92. //判断是否安装微信
  93. bool IsWechatInstalled_iOS()
  94. {
  95. return [WXApi isWXAppInstalled];
  96. }
  97. }