75 lines
1.9 KiB
Objective-C
75 lines
1.9 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];
|
||
}
|
||
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, :(NSString *)appid :(NSString *)universalLink resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||
if ([WXApi registerApp: appid universalLink: universalLink]) {
|
||
self.appId = appid;
|
||
resolve(@[[NSNull null]]);
|
||
} else {
|
||
reject(@"-10404", INVOKE_FAILED, nil);
|
||
}
|
||
}
|
||
|
||
// 检查微信是否已被用户安装, 微信已安装返回YES,未安装返回NO。
|
||
RCT_REMAP_METHOD(isWXAppInstalled, :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) {
|
||
if ([WXApi isWXAppInstalled]) {
|
||
resolve(@YES);
|
||
} else {
|
||
resolve(@NO);
|
||
}
|
||
}
|
||
|
||
// 判断当前微信的版本是否支持OpenApi,支持返回YES,不支持返回NO。
|
||
RCT_REMAP_METHOD(isWXAppSupportApi, resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||
if ([WXApi isWXAppSupportApi]) {
|
||
resolve(@YES);
|
||
} else {
|
||
resolve(@NO);
|
||
}
|
||
}
|
||
|
||
@end
|