95 lines
2.6 KiB
Objective-C
95 lines
2.6 KiB
Objective-C
#import "RNWechat.h"
|
||
|
||
// Define error messages
|
||
#define INVOKE_FAILED (@"WeChat API invoke returns false.")
|
||
|
||
@implementation RNWechat {
|
||
BOOL *_api;
|
||
}
|
||
|
||
RCT_EXPORT_MODULE()
|
||
- (instancetype)init {
|
||
self = [super init];
|
||
if (self) {
|
||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOpenURL:) name:@"RCTOpenURLNotification" object:nil];
|
||
// 在register之前打开log, 后续可以根据log排查问题
|
||
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
|
||
NSLog(@"WeChatSDK: %@", log);
|
||
}];
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
|
||
- (dispatch_queue_t)methodQueue
|
||
{
|
||
return dispatch_get_main_queue();
|
||
}
|
||
|
||
+ (BOOL)requiresMainQueueSetup {
|
||
return YES;
|
||
}
|
||
|
||
// 注册 appid
|
||
RCT_REMAP_METHOD(registerApp, appid:(NSString *)appid universalLink:(NSString*)universalLink resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||
@try {
|
||
self.appId = appid;
|
||
resolve(@([WXApi registerApp: appid universalLink: universalLink]));
|
||
} @catch (NSException *exception) {
|
||
reject(@"-10404", [NSString stringWithFormat:@"%@ %@", exception.name, exception.userInfo], nil);
|
||
}
|
||
}
|
||
|
||
// 检查微信是否已被用户安装, 微信已安装返回YES,未安装返回NO。
|
||
RCT_EXPORT_METHOD(isWXAppInstalled: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||
if ([WXApi isWXAppInstalled]) {
|
||
resolve(@YES);
|
||
} else {
|
||
resolve(@NO);
|
||
}
|
||
}
|
||
|
||
/*! @brief 打开微信
|
||
* @return 成功返回YES,失败返回NO。
|
||
*/
|
||
RCT_EXPORT_METHOD(openWXApp: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||
if ([WXApi openWXApp]) {
|
||
resolve(@YES);
|
||
} else {
|
||
resolve(@NO);
|
||
}
|
||
}
|
||
|
||
// 判断当前微信的版本是否支持OpenApi,支持返回YES,不支持返回NO。
|
||
RCT_EXPORT_METHOD(isWXAppSupportApi: (RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) {
|
||
if ([WXApi isWXAppSupportApi]) {
|
||
resolve(@YES);
|
||
} else {
|
||
resolve(@NO);
|
||
}
|
||
}
|
||
|
||
// 获取当前微信SDK的版本号
|
||
RCT_EXPORT_METHOD(getApiVersion: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||
resolve([WXApi getApiVersion]);
|
||
}
|
||
|
||
@end
|