1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

feat: Add openWXApp props.

This commit is contained in:
jaywcjlove
2020-08-05 12:42:05 +08:00
parent 864d940513
commit edd515f42b
6 changed files with 67 additions and 17 deletions

View File

@@ -47,6 +47,19 @@ public class RNWechatModule extends ReactContextBaseJavaModule {
promise.reject("-1", e.getMessage()); promise.reject("-1", e.getMessage());
} }
} }
@ReactMethod
public void openWXApp(Promise promise) {
try {
if (api == null) {
throw new Exception(NOT_REGISTERED);
}
promise.resolve(api.openWXApp());
} catch (Exception e) {
promise.reject("-1", e.getMessage());
}
}
@ReactMethod @ReactMethod
public void isWXAppInstalled(Promise promise) { public void isWXAppInstalled(Promise promise) {
try { try {

View File

@@ -1,5 +1,5 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { Platform, SafeAreaView, StyleSheet, Text, View } from 'react-native'; import { Platform, Button, SafeAreaView, StyleSheet, Text, View } from 'react-native';
import Wechat from '@uiw/react-native-wechat'; import Wechat from '@uiw/react-native-wechat';
export default class App extends Component { export default class App extends Component {
@@ -10,19 +10,26 @@ export default class App extends Component {
}; };
async componentDidMount() { async componentDidMount() {
try { try {
const reg = await Wechat.registerApp('wxd930ea5d5a258f4f'); const reg = await Wechat.registerApp('wx500b695a47bd364b', 'https://uiwjs.github.io/react-native-wechat/apple-app-site-association');
console.log('reg:', reg);
const isInstall = await Wechat.isWXAppInstalled(); const isInstall = await Wechat.isWXAppInstalled();
const isWXAppSupportApi = await Wechat.isWXAppSupportApi(); const isWXAppSupportApi = await Wechat.isWXAppSupportApi();
const version = await Wechat.getApiVersion(); const version = await Wechat.getApiVersion();
console.log('version:', version) console.log('version:', version);
this.setState({ this.setState({
isInstall, isWXAppSupportApi, version isInstall,
isWXAppSupportApi,
version
}); });
} catch (error) { } catch (error) {
console.log('code>', error.code);
console.log('message>', error.message);
console.log('error>', error); console.log('error>', error);
} }
} }
openWXApp = async () => {
const isOpen = await Wechat.openWXApp();
console.log('isOpen:', isOpen);
}
render() { render() {
const { isInstall, isWXAppSupportApi, version } = this.state; const { isInstall, isWXAppSupportApi, version } = this.state;
return ( return (
@@ -31,13 +38,18 @@ export default class App extends Component {
<Text style={styles.welcome}>Wechat Example</Text> <Text style={styles.welcome}>Wechat Example</Text>
<Text> <Text>
<Text style={styles.instructions}> <Text style={styles.instructions}>
<Text style={{color: isInstall ? 'green' : 'red'}}>{isInstall ? '' : '没有'}</Text> <Text style={{color: isInstall ? 'green' : 'red'}}>{isInstall ? '已经' : '没有'}</Text>
</Text> </Text>
<Text style={styles.instructions}> <Text style={styles.instructions}>
当前微信的版本<Text style={{color: isWXAppSupportApi ? 'green' : 'red'}}>{isWXAppSupportApi ? '支持' : '不支持'}</Text> OpenApi 当前微信的版本<Text style={{color: isWXAppSupportApi ? 'green' : 'red'}}>{isWXAppSupportApi ? '支持' : '不支持'}</Text> OpenApi
</Text> </Text>
<Text> - v{version}</Text> <Text> - v{version}</Text>
</Text> </Text>
<Button
onPress={this.openWXApp}
title="打开微信 APP"
color="#841584"
/>
</View> </View>
</SafeAreaView> </SafeAreaView>
); );

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@@ -22,7 +22,7 @@
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="example" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Wechat 微信" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
<rect key="frame" x="0.0" y="202" width="375" height="43"/> <rect key="frame" x="0.0" y="202" width="375" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

6
index.d.ts vendored
View File

@@ -13,9 +13,13 @@ export function registerApp(appid: string, universalLink: string): void;
export function isWXAppInstalled(): Promise<boolean>; export function isWXAppInstalled(): Promise<boolean>;
/** /**
* 判断当前微信的版本是否支持 OpenApi * 判断当前微信的版本是否支持 OpenApi
* 支持返回 true不支持返回 false * 支持返回 `true`,不支持返回 `false`
*/ */
export function isWXAppSupportApi(): Promise<boolean>; export function isWXAppSupportApi(): Promise<boolean>;
/**
* 打开微信,成功返回 `true`,不支持返回 失败返回 `false`
*/
export function openWXApp(): Promise<boolean>;
/** /**
* 获取当前微信SDK的版本号 * 获取当前微信SDK的版本号
*/ */

View File

@@ -6,7 +6,7 @@ export default class Wechat {
* @param appid 通过微信开放平台,[获取appid](https://open.weixin.qq.com/) * @param appid 通过微信开放平台,[获取appid](https://open.weixin.qq.com/)
* @param universalLink 参数在 iOS 中有效Universal Link(通用链接)是苹果在 iOS9 推出的,一种能够方便的通过传统 HTTPS 链接来启动 APP 的功能,可以使用相同的网址打开网址和 APP。 * @param universalLink 参数在 iOS 中有效Universal Link(通用链接)是苹果在 iOS9 推出的,一种能够方便的通过传统 HTTPS 链接来启动 APP 的功能,可以使用相同的网址打开网址和 APP。
*/ */
static registerApp(appid, universalLink) { static registerApp(appid, universalLink = '') {
if (Platform.OS === 'ios') { if (Platform.OS === 'ios') {
return NativeModules.RNWechat.registerApp(appid, universalLink); return NativeModules.RNWechat.registerApp(appid, universalLink);
} }
@@ -21,11 +21,17 @@ export default class Wechat {
return NativeModules.RNWechat.isWXAppInstalled(); return NativeModules.RNWechat.isWXAppInstalled();
} }
/** /**
* 判断当前微信的版本是否支持OpenApi支持返回 true不支持返回 false * 判断当前微信的版本是否支持 OpenApi支持返回 true不支持返回 false
*/ */
static isWXAppSupportApi() { static isWXAppSupportApi() {
return NativeModules.RNWechat.isWXAppSupportApi(); return NativeModules.RNWechat.isWXAppSupportApi();
} }
/**
* 打开微信,成功返回 true不支持返回 失败返回 false
*/
static openWXApp() {
return NativeModules.RNWechat.openWXApp();
}
/** /**
* 获取当前微信SDK的版本号 * 获取当前微信SDK的版本号
*/ */

View File

@@ -12,6 +12,10 @@ RCT_EXPORT_MODULE()
self = [super init]; self = [super init];
if (self) { if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOpenURL:) name:@"RCTOpenURLNotification" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOpenURL:) name:@"RCTOpenURLNotification" object:nil];
// registerlog, log
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
NSLog(@"WeChatSDK: %@", log);
}];
} }
return self; return self;
} }
@@ -44,12 +48,12 @@ RCT_EXPORT_MODULE()
} }
// appid // appid
RCT_REMAP_METHOD(registerApp, :(NSString *)appid :(NSString *)universalLink resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { RCT_REMAP_METHOD(registerApp, appid:(NSString *)appid universalLink:(NSString*)universalLink resolver: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
if ([WXApi registerApp: appid universalLink: universalLink]) { @try {
self.appId = appid; self.appId = appid;
resolve(@[[NSNull null]]); resolve(@([WXApi registerApp: appid universalLink: universalLink]));
} else { } @catch (NSException *exception) {
reject(@"-10404", INVOKE_FAILED, nil); reject(@"-10404", [NSString stringWithFormat:@"%@ %@", exception.name, exception.userInfo], nil);
} }
} }
@@ -62,6 +66,17 @@ RCT_EXPORT_METHOD(isWXAppInstalled: (RCTPromiseResolveBlock)resolve rejecter:(RC
} }
} }
/*! @brief
* @return YESNO
*/
RCT_EXPORT_METHOD(openWXApp: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
if ([WXApi openWXApp]) {
resolve(@YES);
} else {
resolve(@NO);
}
}
// OpenApiYESNO // OpenApiYESNO
RCT_EXPORT_METHOD(isWXAppSupportApi: (RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) { RCT_EXPORT_METHOD(isWXAppSupportApi: (RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) {
if ([WXApi isWXAppSupportApi]) { if ([WXApi isWXAppSupportApi]) {