-
Notifications
You must be signed in to change notification settings - Fork 42
兼容iOS
佘小恒 edited this page Oct 17, 2016
·
5 revisions
因为与iOS端提供的API有点区别,在此提供一套封装方案,作为参考:
events.js
'use strict';
import {NativeAppEventEmitter} from 'react-native';
function once(type, listener, context) {
return NativeAppEventEmitter.once(type, listener, context);
}
function addListener(type, listener, context) {
return NativeAppEventEmitter.addListener(type, listener, context);
}
function emit() {
let args = [].slice.call(arguments, 0);
NativeAppEventEmitter.emit.apply(NativeAppEventEmitter, args);
}
function listeners(type) {
NativeAppEventEmitter.listeners(type);
}
function removeAllListeners(type) {
NativeAppEventEmitter.removeAllListeners(type);
}
class Events {
constructor() {
this.listeners = [];
}
addListener(type, handler, context) {
let listener = addListener(type, handler, context);
this.listeners.push(listener);
return listener;
}
removeAll() {
this.listeners.forEach((listener) => {
listener.remove();
});
}
}
Events.emit = emit;
Events.once = once;
Events.listeners = listeners;
Events.addListener = addListener;
Events.removeAllListeners = removeAllListeners;
module.exports = Events;wechat.js
import React, { Platform } from 'react-native';
import wechatIOS from 'react-native-wechat-ios';
import wechatAndroid from 'react-native-wechat-android';
import Events from './events';
let shareOptions;
let android = {
registerApp(appId,callback){
wechatAndroid.registerApp(appId,callback);
},
openWXApp(callback){
wechatAndroid.openWXApp(callback);
},
share(options,callback){
shareOptions = {
title: options.title,
desc: options.desc,
thumbSize: 150,
scene: options.scene,
type: 3,
webpageUrl: options.link,
thumbImage: options.thumbImage,
};
wechatAndroid.sendReq(shareOptions,callback);
},
addListener(callback) {
Events.addListener('finishedShare', callback);
},
removeAllListeners(){
Events.removeAllListeners('finishedShare');
}
}
let ios = {
registerApp(appId,callback){
wechatIOS.registerApp(appId,callback);
},
openWXApp(callback){
wechatIOS.openWXApp(callback);
},
share(options,callback){
wechatIOS.sendLinkURL(options,callback);
},
addListener(callback) {
Events.addListener('didRecvMessageResponse', callback);
},
removeAllListeners(){
Events.removeAllListeners('didRecvMessageResponse');
}
}
let wechat;
if (Platform.OS === 'ios') {
wechat = ios;
} else {
wechat = android;
}
export default wechat;使用
import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
} from 'react-native';
import WeChat from './wechat';
WeChat.registerApp('',(err,res) => {
})
...