2020-07-31 14:47:29 +08:00
|
|
|
|
#import "RNWechat.h"
|
|
|
|
|
|
2020-08-01 18:05:40 +08:00
|
|
|
|
// Define error messages
|
|
|
|
|
#define INVOKE_FAILED (@"WeChat API invoke returns false.")
|
|
|
|
|
|
|
|
|
|
@implementation RNWechat {
|
|
|
|
|
BOOL *_api;
|
|
|
|
|
}
|
2020-07-31 14:47:29 +08:00
|
|
|
|
|
|
|
|
|
RCT_EXPORT_MODULE()
|
2020-08-01 18:05:40 +08:00
|
|
|
|
- (instancetype)init {
|
|
|
|
|
self = [super init];
|
|
|
|
|
if (self) {
|
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOpenURL:) name:@"RCTOpenURLNotification" object:nil];
|
|
|
|
|
}
|
|
|
|
|
return self;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)dealloc
|
|
|
|
|
{
|
|
|
|
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (BOOL)handleOpenURL:(NSNotification *)aNotification
|
|
|
|
|
{
|
|
|
|
|
NSString * aURLString = [aNotification userInfo][@"url"];
|
|
|
|
|
NSURL * aURL = [NSURL URLWithString:aURLString];
|
|
|
|
|
|
|
|
|
|
if ([WXApi handleOpenURL:aURL delegate:self])
|
|
|
|
|
{
|
|
|
|
|
return YES;
|
|
|
|
|
} else {
|
|
|
|
|
return NO;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-07-31 14:47:29 +08:00
|
|
|
|
|
2020-08-01 18:05:40 +08:00
|
|
|
|
- (dispatch_queue_t)methodQueue
|
2020-07-31 14:47:29 +08:00
|
|
|
|
{
|
2020-08-01 18:05:40 +08:00
|
|
|
|
return dispatch_get_main_queue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
+ (BOOL)requiresMainQueueSetup {
|
|
|
|
|
return YES;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 注册 appid
|
2020-08-01 19:44:52 +08:00
|
|
|
|
RCT_REMAP_METHOD(registerApp, :(NSString *)appid :(NSString *)universalLink resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
|
|
|
|
if ([WXApi registerApp: appid universalLink: universalLink]) {
|
|
|
|
|
self.appId = appid;
|
2020-08-01 18:05:40 +08:00
|
|
|
|
resolve(@[[NSNull null]]);
|
|
|
|
|
} else {
|
|
|
|
|
reject(@"-10404", INVOKE_FAILED, nil);
|
|
|
|
|
}
|
2020-07-31 14:47:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
2020-08-01 19:44:52 +08:00
|
|
|
|
// 检查微信是否已被用户安装, 微信已安装返回YES,未安装返回NO。
|
|
|
|
|
RCT_REMAP_METHOD(isWXAppInstalled, :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) {
|
|
|
|
|
if ([WXApi isWXAppInstalled]) {
|
|
|
|
|
resolve(@YES);
|
|
|
|
|
} else {
|
|
|
|
|
resolve(@NO);
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-08-01 19:47:56 +08:00
|
|
|
|
|
|
|
|
|
// 判断当前微信的版本是否支持OpenApi,支持返回YES,不支持返回NO。
|
|
|
|
|
RCT_REMAP_METHOD(isWXAppSupportApi, resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
|
|
|
|
if ([WXApi isWXAppSupportApi]) {
|
|
|
|
|
resolve(@YES);
|
|
|
|
|
} else {
|
|
|
|
|
resolve(@NO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-07-31 14:47:29 +08:00
|
|
|
|
@end
|