网易七鱼React-Native-qiyu使用

简介

网易七鱼 iOS SDK 是客服系统访客端的解决方案,既包含了客服聊天逻辑管理,也提供了聊天界面,开发者可方便的将客服功能集成到自己的 APP 中。 本模块支持 iOS 7 以上,Android 2.3 以上版本,同时支持手机、Pad。在iOS 9.2 以上版本中支持 IPv6,能正常通过苹果审核。 详情请前往:http://www.qiyukf.com

安装与配置

安装

通过yarn安装

yarn add react-native-qiyu

即把react-native-qiyu导入到工程中的node_modules文件夹中

配置
iOS

执行以下命令:

react-native link react-native-qiyu

自动完成配置
link成功命令行会提示

Linking react-native-qiyu ios dependency

或者你还可以手动配置

a.打开XCode's工程中, 右键点击Libraries文件夹 ➜ Add Files to <...> 
b.去node_modules ➜ react-native-qiyu ➜ ios ➜ 选择 RCTQiYu.xcodeproj 
c.在工程Build Phases ➜ Link Binary With Libraries中添加libRCTQiYu.a
工程配置
在工程target的Build Phases->Link Binary with Libraries中加入
UIKit.framework、
CoreText.framework、
MobileCoreService.framework、
SystemConfiguration.framework、
AVFoundation.framwork、
CoreTelephony.framework、
CoreMedia.framework、
AudioToolbox.framework、
libz.tbd、
libstdc++.6.0.9.tbd、
libsqlite3.0.tbd等依赖库,
在Build Phases->Copy Bundle Resources下添加QYResource.bundle资源包。
iOS9传输安全问题
在iOS9中,默认需要为每次网络传输建立SSL,解决方法是在应用plist文件中设置
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key></true>
</dict>
iOS10权限设置
* 在Info.plist中加入以下内容:
    <key>NSPhotoLibraryUsageDescription</key>
    <string>需要照片权限</string>
    <key>NSCameraUsageDescription</key>
    <string>需要相机权限</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>需要麦克风权限</string>

如果不加,会crash。

如果在原生代码中需要引入七鱼SDK

在工程target的Build Setting->
Library Search Paths中添加$(SRCROOT)/../node_modules/react-native-qiyu/ios/RCTQiYu、
在Header Search Paths中添加$(SRCROOT)/../node_modules/react-native-qiyu/ios/RCTQiYu
消息推送
需要在工程的APPDelegate文件中的
(void)application:(UIApplication *)app
                didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
方法中把 APNS Token 传给 SDK

示例代码:

- (void)application:(UIApplication *)app
                didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    ......

    [[QYSDK sharedSDK] updateApnsToken:deviceToken];

    ......
}

具体使用请参考QiYuDemo例子工程

Android

手动配置 编辑android/settings.gradle

// ...

include ':react-native-qiyu'
project(':react-native-qiyu').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-qiyu/android')

编辑android/app/build.gradle

// ...

dependencies {
    // ...
    compile project(':react-native-qiyu')
}

在MainApplication.java中注册模块(基于React-Native 0.32+) 编辑android/app/src/main/java/[...]/MainApplication.java

// ...

import com.qiyukf.unicorn.reactnative.QiyuSdkPackage;    // <--- 导包

public class MainApplication extends Application implements ReactApplication {
    // ...

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        // ...

        @Override
        protected List<ReactPackage> getPackages() {
            return Arrays.<ReactPackage>asList(
                new MainReactPackage(),
                new QiyuSdkPackage("七鱼管理后台的appKey", "七鱼管理后台的App名称")    // <--- 添加package
            );
        }

        // ...
    };

    // ...
}

如果你使用的React-Native版本中不包含MainApplication.java,则可能需要在MainActivity.java中注册模块,方法同上。

Method
  • registerAppId
  • openServiceWindow
  • setCustomUIConfig
  • setUrlClickWithEventName
  • setUnreadCountWithEventName
  • getUnreadCountCallback
  • setUserInfo
  • logout
方法接口描述

registerAppId 注册七鱼SDK

registerAppId(appKey, appName)

params

参数名 类型 默认值 描述
appKey 字符串类型 七鱼管理后台的appKey
appName 字符串类型 七鱼管理后台的App名称

示例代码

import QiYu from 'react-native-qiyu';
QiYu.registerAppId('七鱼管理后台的appKey', '七鱼管理后台的App名称');

注意事项

建议在应用启动时初始化,初始化之前无法使用此模块的其他方法。七鱼模块只需要初始化一次。代码如下

componentWillMount() {
    QiYu.registerAppId('七鱼管理后台的appKey', '七鱼管理后台的App名称');
}

openServiceWindow 启动客服聊天窗口

openServiceWindow(params)

params

参数名 类型 默认值 描述
source JSON对象 会话窗口来源
sourceTitle 字符串类型 会话窗口来源标题
sourceUrl 字符串类型 会话窗口来源URL
sourceCustomInfo 字符串类型 会话窗口来源自定义消息
commodityInfo JSON对象 商品详情信息
commodityInfoTitle 字符串类型 商品详情信息展示商品标题,字符数要求小于100
commodityInfoDesc 字符串类型 商品详情信息展示商品描述,字符数要求小于300
pictureUrl 字符串类型 商品详情信息展示商品图片URL,字符数要求小于1000
commodityInfoUrl 字符串类型 商品详情信息展示跳转URL,字符数要求小于1000
note 字符串类型 商品详情信息展示备注信息,可以显示价格、订单号等,字符数要求小于100
show 布尔类型 false 商品详情信息展示发送时是否要在用户端显示,默认不显示
sessionTitle 字符串类型 客服会话窗口标题
staffId long类型 指定客服id,如果同时指定 staffId 和 groupId,以 staffId 为准,忽略 groupId
groupId long类型 指定客服分组id,如果同时指定 staffId 和 groupId,以 staffId 为准,忽略 groupId

示例代码

import QiYu from 'react-native-qiyu';
var params = {
    source:{
        sourceTitle:'网易七鱼ReactNative',
        sourceUrl:'http://www.qiyukf.com',
        sourceCustomInfo:'我是来自自定义的信息'
    },
    commodityInfo:{
        commodityInfoTitle:'ReactNative商品',
        commodityInfoDesc:'这是来自网易七鱼ReactNative的商品描述',
        pictureUrl:'http://qiyukf.com/res/img/companyLogo/blmn.png',
        commodityInfoUrl:'http://www.qiyukf.com',
        note:'¥1000',
        show:true
    },
    sessionTitle:'网易七鱼',
    groupId:0,
    staffId:0
}
QiYu.openServiceWindow(params);

setCustomUIConfig 自定义客服聊天窗口UI

setCustomUIConfig(params)

params

参数名 类型 默认值 描述
sessionTipTextColor 字符串类型,如'#CC00FF' 会话窗口上方提示条中的文本字体颜色
sessionTipTextFontSize int类型,如15 会话窗口上方提示条中的文本字体大小
customMessageTextColor 字符串类型,如'#CC00FF' 访客文本消息字体颜色
serviceMessageTextColor 字符串类型,如'#CC00FF' 客服文本消息字体颜色
messageTextFontSize int类型,如15 消息文本消息字体大小
tipMessageTextColor 字符串类型,如'#CC00FF' 提示文本消息字体颜色
tipMessageTextFontSize int类型,如15 提示文本消息字体大小
inputTextColor 字符串类型,如'#CC00FF' 输入框文本字体颜色
inputTextFontSize int类型,如15 输入框文本字体大小
sessionBackgroundImage [*]字符串类型,传入图片的绝对路径,如'./qiyu/session_bg.png' 客服聊天窗口背景图片
sessionTipBackgroundColor 字符串类型,如'#CC00FF' 会话窗口上方提示条的背景颜色
customerHeadImage [*]字符串类型,传入图片的绝对路径 访客头像
serviceHeadImage [*]字符串类型,传入图片的绝对路径 客服头像
sessionMessageSpacing float类型,如3.5 消息竖直方向间距
showHeadImage 布尔类型 true 是否显示头像
showAudioEntry 布尔类型 true 是否显示发送语音入口,设置为false,可以修改为隐藏
showEmoticonEntry 布尔类型 true 是否显示发送表情入口,设置为false,可以修改为隐藏
autoShowKeyboard 布尔类型 true 进入聊天界面,是文本输入模式的话,会弹出键盘,设置为false,可以修改为不弹出
  • 注意

为了防止 react-native 在打包时将用于七鱼的图片文件过滤掉,我们需要将用于七鱼的图片文件添加引用,如
var session_bg = require('./qiyu/session_bg.png')

建议将七鱼使用的图片单独放在一个文件夹下,如qiyu。

示例代码

import QiYu from 'react-native-qiyu';
var params = {
    sessionTipTextColor:'#CC00FF',
    sessionTipTextFontSize:20,
    customMessageTextColor:'#CC00FF',
    serviceMessageTextColor:'#CC00FF',
    messageTextFontSize:20,
    tipMessageTextColor:'#CC00FF',
    tipMessageTextFontSize:20,
    inputTextColor:'#CC00FF',
    inputTextFontSize:20,
    sessionBackgroundImage:'session_bg',
    sessionTipBackgroundColor:'#000000',
    customerHeadImage:'customer_head',
    serviceHeadImage:'service_head',
    sessionMessageSpacing:2,
    showHeadImage:true,
    showAudioEntry:false,
    showEmoticonEntry:false,
    autoShowKeyboard:false
}
QiYu.setCustomUIConfig(params);

setUrlClickWithEventName 用于设置聊天窗口中的事件处理

setUrlClickWithEventName(eventName)

params

参数名 类型 默认值 描述
eventName 字符串类型 指定一个事件名称,指定DeviceEventEmitter.addListener后会进行事件监听
e Event对象 事件回调返回数据,返回'url'字段,为链接地址字符串

示例代码

import QiYu from 'react-native-qiyu';
QiYu.setUrlClickWithEventName(eventName);
DeviceEventEmitter.addListener(eventName, function(e: Event) {
    console.log(e.url);
});

setUnreadCountWithEventName 用于设置会话管理,使得未读数改变的时候会回调

setUnreadCountWithEventName(eventName)

参数名 类型 默认值 描述
eventName 字符串类型 指定一个事件名称,指定DeviceEventEmitter.addListener后会进行事件监听
e Event对象 事件回调返回数据,返回'unreadCount'字段,为未读数字符串

示例代码

import QiYu from 'react-native-qiyu';
QiYu.setUnreadCountWithEventName(UnreadCountCallback);
DeviceEventEmitter.addListener(UnreadCountCallback, function(e: Event) {
    console.log(e.unreadCount);
});

getUnreadCountCallback 得到会话未读数,主动获取

getUnreadCountCallback(callback(unreadCount))

params

参数名 类型 默认值 描述
unreadCount 字符串类型 返回未读消息数

示例代码

import QiYu from 'react-native-qiyu';
QiYu.getUnreadCountCallback((unreadCount)=>{
    console.log(unreadCount);
});

setUserInfo 用于设置CRM个人信息

setUserInfo(params)

params

参数名 类型 默认值 描述
userId 字符串类型 个人账号Id
data 字符串类型 用户详细信息json

示例代码

import QiYu from 'react-native-qiyu';
var params = {
    userId:'uid10101010',
    data:'[{\"key\":\"real_name\", \"value\":\"土豪\"},{\"key\":\"mobile_phone\", \"hidden\":true},{\"key\":\"email\", \"value\":\"13800000000@163.com\"},{\"index\":0, \"key\":\"account\", \"label\":\"账号\", \"value\":\"zhangsan\", \"href\":\"http://example.domain/user/zhangsan\"},{\"index\":1, \"key\":\"sex\", \"label\":\"性别\", \"value\":\"先生\"},{\"index\":5, \"key\":\"reg_date\", \"label\":\"注册日期\", \"value\":\"2015-11-16\"},{\"index\":6, \"key\":\"last_login\", \"label\":\"上次登录时间\", \"value\":\"2015-12-22 15:38:54\"}]'
}
QiYu.setUserInfo(params);

logout 注销当前账号

logout()

示例代码

import QiYu from 'react-native-qiyu';
QiYu.logout();

此文转自网易七鱼官方GitHub:https://github.com/qiyukf/react-native-qiyu

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容