极光官方开发的极光 IM react-native 插件,同时支持 文字、图片、语言、文件和自定义消息。同时支持 iOS 和 Android 平台。
3.1.8
1.需要在AppDelegate.m 中手动添加初始化方法,示例如下
#import <RCTJMessageModule.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[JMessage setupJMessage:launchOptions
appKey:appKey
channel:@""
apsForProduction:isProduction
category:nil
messageRoaming:true];
[JMessage addDelegate:self withConversation:nil];
}
//JMessage 离线消息监听
- (void)onSyncOfflineMessageConversation:(JMSGConversation *)conversation
offlineMessages:(NSArray JMSG_GENERIC ( __kindof JMSGMessage *) *)offlineMessages {
[RCTJMessageEventQueue sharedInstance].offlineConversation = conversation;
[RCTJMessageEventQueue sharedInstance].offlineMsgArray = offlineMessages;
}
2.js中初始化和监听需要在componentDidMount()componentDidMount()方法内,示例如下
componentDidMount() {
JMessage.init({
appkey: appkey,
channel:channel
isOpenMessageRoaming: true,
isProduction: true,
});
JMessage.setDebugMode({enable: true});
//离线消息监听
JMessage.addSyncOfflineMessageListener((message) => {
console.log("| JIGUANG |===addSyncOfflineMessageListener====" + JSON.stringify(message))
});
}
npm install jmessage-react-plugin --save
npm install jcore-react-native --save(目前 jmessage-react-plugin 2.1.1 版本需要指定安装 jcore-react-native 1.2.1 以上版本)
react-native link
注意: 如果已经通过 react-native link 链接了插件,则不需要执行下面的步骤。
在 Podfile 中添加如下代码:
pod 'JMessageRN', :path => '../node_modules/jmessage-react-plugin'
终端执行如下指令:
pod install
- 配置 AndroidManifest,加入
meta-data
部分
...
<meta-data android:name="JPUSH_CHANNEL" android:value="${APP_CHANNEL}" />
<meta-data android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}" />
...
- 配置 build.gradle,将下列配置部分替换成自己的。
defaultConfig {
applicationId "你的 application id"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
manifestPlaceholders = [
JPUSH_APPKEY: "你的 appKey", //在此替换你的APPKey
APP_CHANNEL: "developer-default" //应用渠道号
]
}
在 MainApplication 中加上 JMessagePackage 即可,JMessagePackage 有一个参数,设置是否弹出 toast。
// 如果设置为 true,则不弹出 toast。
private boolean shutdownToast = false;
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new JMessageReactPackage(shutdownToast),
);
}
-
打开工程,进入 Build Settings -> Framework search paths 添加 framework 搜索路径
$(SRCROOT)/../node_modules/jmessage-react-plugin/ios/RCTJMessageModule
-
打开工程,进入 Build Settings -> Other Link Flag 添加一行编译选项
-framework "JMessage"