網(wǎng)易七魚(yú)React-Native-qiyu使用

簡(jiǎn)介

網(wǎng)易七魚(yú) iOS SDK 是客服系統(tǒng)訪客端的解決方案,既包含了客服聊天邏輯管理,也提供了聊天界面,開(kāi)發(fā)者可方便的將客服功能集成到自己的 APP 中。 本模塊支持 iOS 7 以上,Android 2.3 以上版本,同時(shí)支持手機(jī)、Pad。在iOS 9.2 以上版本中支持 IPv6,能正常通過(guò)蘋(píng)果審核。 詳情請(qǐng)前往:http://www.qiyukf.com

安裝與配置

安裝

通過(guò)yarn安裝

yarn add react-native-qiyu

即把react-native-qiyu導(dǎo)入到工程中的node_modules文件夾中

配置
iOS

執(zhí)行以下命令:

react-native link react-native-qiyu

自動(dòng)完成配置
link成功命令行會(huì)提示

Linking react-native-qiyu ios dependency

或者你還可以手動(dòng)配置

a.打開(kāi)XCode's工程中, 右鍵點(diǎn)擊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等依賴庫(kù),
在Build Phases->Copy Bundle Resources下添加QYResource.bundle資源包。
iOS9傳輸安全問(wèn)題
在iOS9中,默認(rèn)需要為每次網(wǎng)絡(luò)傳輸建立SSL,解決方法是在應(yīng)用plist文件中設(shè)置
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key></true>
</dict>
iOS10權(quán)限設(shè)置
* 在Info.plist中加入以下內(nèi)容:
    <key>NSPhotoLibraryUsageDescription</key>
    <string>需要照片權(quán)限</string>
    <key>NSCameraUsageDescription</key>
    <string>需要相機(jī)權(quán)限</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>需要麥克風(fēng)權(quán)限</string>

如果不加,會(huì)crash。

如果在原生代碼中需要引入七魚(yú)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];

    ......
}

具體使用請(qǐng)參考QiYuDemo例子工程

Android

手動(dòng)配置 編輯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中注冊(cè)模塊(基于React-Native 0.32+) 編輯android/app/src/main/java/[...]/MainApplication.java

// ...

import com.qiyukf.unicorn.reactnative.QiyuSdkPackage;    // <--- 導(dǎo)包

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("七魚(yú)管理后臺(tái)的appKey", "七魚(yú)管理后臺(tái)的App名稱")    // <--- 添加package
            );
        }

        // ...
    };

    // ...
}

如果你使用的React-Native版本中不包含MainApplication.java,則可能需要在MainActivity.java中注冊(cè)模塊,方法同上。

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

registerAppId 注冊(cè)七魚(yú)SDK

registerAppId(appKey, appName)

params

參數(shù)名 類型 默認(rèn)值 描述
appKey 字符串類型 無(wú) 七魚(yú)管理后臺(tái)的appKey
appName 字符串類型 無(wú) 七魚(yú)管理后臺(tái)的App名稱

示例代碼

import QiYu from 'react-native-qiyu';
QiYu.registerAppId('七魚(yú)管理后臺(tái)的appKey', '七魚(yú)管理后臺(tái)的App名稱');

注意事項(xiàng)

建議在應(yīng)用啟動(dòng)時(shí)初始化,初始化之前無(wú)法使用此模塊的其他方法。七魚(yú)模塊只需要初始化一次。代碼如下

componentWillMount() {
    QiYu.registerAppId('七魚(yú)管理后臺(tái)的appKey', '七魚(yú)管理后臺(tái)的App名稱');
}

openServiceWindow 啟動(dòng)客服聊天窗口

openServiceWindow(params)

params

參數(shù)名 類型 默認(rèn)值 描述
source JSON對(duì)象 無(wú) 會(huì)話窗口來(lái)源
sourceTitle 字符串類型 無(wú) 會(huì)話窗口來(lái)源標(biāo)題
sourceUrl 字符串類型 無(wú) 會(huì)話窗口來(lái)源URL
sourceCustomInfo 字符串類型 無(wú) 會(huì)話窗口來(lái)源自定義消息
commodityInfo JSON對(duì)象 無(wú) 商品詳情信息
commodityInfoTitle 字符串類型 無(wú) 商品詳情信息展示商品標(biāo)題,字符數(shù)要求小于100
commodityInfoDesc 字符串類型 無(wú) 商品詳情信息展示商品描述,字符數(shù)要求小于300
pictureUrl 字符串類型 無(wú) 商品詳情信息展示商品圖片URL,字符數(shù)要求小于1000
commodityInfoUrl 字符串類型 無(wú) 商品詳情信息展示跳轉(zhuǎn)URL,字符數(shù)要求小于1000
note 字符串類型 無(wú) 商品詳情信息展示備注信息,可以顯示價(jià)格、訂單號(hào)等,字符數(shù)要求小于100
show 布爾類型 false 商品詳情信息展示發(fā)送時(shí)是否要在用戶端顯示,默認(rèn)不顯示
sessionTitle 字符串類型 無(wú) 客服會(huì)話窗口標(biāo)題
staffId long類型 無(wú) 指定客服id,如果同時(shí)指定 staffId 和 groupId,以 staffId 為準(zhǔn),忽略 groupId
groupId long類型 無(wú) 指定客服分組id,如果同時(shí)指定 staffId 和 groupId,以 staffId 為準(zhǔn),忽略 groupId

示例代碼

import QiYu from 'react-native-qiyu';
var params = {
    source:{
        sourceTitle:'網(wǎng)易七魚(yú)ReactNative',
        sourceUrl:'http://www.qiyukf.com',
        sourceCustomInfo:'我是來(lái)自自定義的信息'
    },
    commodityInfo:{
        commodityInfoTitle:'ReactNative商品',
        commodityInfoDesc:'這是來(lái)自網(wǎng)易七魚(yú)ReactNative的商品描述',
        pictureUrl:'http://qiyukf.com/res/img/companyLogo/blmn.png',
        commodityInfoUrl:'http://www.qiyukf.com',
        note:'¥1000',
        show:true
    },
    sessionTitle:'網(wǎng)易七魚(yú)',
    groupId:0,
    staffId:0
}
QiYu.openServiceWindow(params);

setCustomUIConfig 自定義客服聊天窗口UI

setCustomUIConfig(params)

params

參數(shù)名 類型 默認(rèn)值 描述
sessionTipTextColor 字符串類型,如'#CC00FF' 無(wú) 會(huì)話窗口上方提示條中的文本字體顏色
sessionTipTextFontSize int類型,如15 無(wú) 會(huì)話窗口上方提示條中的文本字體大小
customMessageTextColor 字符串類型,如'#CC00FF' 無(wú) 訪客文本消息字體顏色
serviceMessageTextColor 字符串類型,如'#CC00FF' 無(wú) 客服文本消息字體顏色
messageTextFontSize int類型,如15 無(wú) 消息文本消息字體大小
tipMessageTextColor 字符串類型,如'#CC00FF' 無(wú) 提示文本消息字體顏色
tipMessageTextFontSize int類型,如15 無(wú) 提示文本消息字體大小
inputTextColor 字符串類型,如'#CC00FF' 無(wú) 輸入框文本字體顏色
inputTextFontSize int類型,如15 無(wú) 輸入框文本字體大小
sessionBackgroundImage [*]字符串類型,傳入圖片的絕對(duì)路徑,如'./qiyu/session_bg.png' 無(wú) 客服聊天窗口背景圖片
sessionTipBackgroundColor 字符串類型,如'#CC00FF' 無(wú) 會(huì)話窗口上方提示條的背景顏色
customerHeadImage [*]字符串類型,傳入圖片的絕對(duì)路徑 無(wú) 訪客頭像
serviceHeadImage [*]字符串類型,傳入圖片的絕對(duì)路徑 無(wú) 客服頭像
sessionMessageSpacing float類型,如3.5 無(wú) 消息豎直方向間距
showHeadImage 布爾類型 true 是否顯示頭像
showAudioEntry 布爾類型 true 是否顯示發(fā)送語(yǔ)音入口,設(shè)置為false,可以修改為隱藏
showEmoticonEntry 布爾類型 true 是否顯示發(fā)送表情入口,設(shè)置為false,可以修改為隱藏
autoShowKeyboard 布爾類型 true 進(jìn)入聊天界面,是文本輸入模式的話,會(huì)彈出鍵盤(pán),設(shè)置為false,可以修改為不彈出
  • 注意

為了防止 react-native 在打包時(shí)將用于七魚(yú)的圖片文件過(guò)濾掉,我們需要將用于七魚(yú)的圖片文件添加引用,如
var session_bg = require('./qiyu/session_bg.png')

建議將七魚(yú)使用的圖片單獨(dú)放在一個(gè)文件夾下,如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 用于設(shè)置聊天窗口中的事件處理

setUrlClickWithEventName(eventName)

params

參數(shù)名 類型 默認(rèn)值 描述
eventName 字符串類型 無(wú) 指定一個(gè)事件名稱,指定DeviceEventEmitter.addListener后會(huì)進(jìn)行事件監(jiān)聽(tīng)
e Event對(duì)象 無(wú) 事件回調(diào)返回?cái)?shù)據(jù),返回'url'字段,為鏈接地址字符串

示例代碼

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

setUnreadCountWithEventName 用于設(shè)置會(huì)話管理,使得未讀數(shù)改變的時(shí)候會(huì)回調(diào)

setUnreadCountWithEventName(eventName)

參數(shù)名 類型 默認(rèn)值 描述
eventName 字符串類型 無(wú) 指定一個(gè)事件名稱,指定DeviceEventEmitter.addListener后會(huì)進(jìn)行事件監(jiān)聽(tīng)
e Event對(duì)象 無(wú) 事件回調(diào)返回?cái)?shù)據(jù),返回'unreadCount'字段,為未讀數(shù)字符串

示例代碼

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

getUnreadCountCallback 得到會(huì)話未讀數(shù),主動(dòng)獲取

getUnreadCountCallback(callback(unreadCount))

params

參數(shù)名 類型 默認(rèn)值 描述
unreadCount 字符串類型 無(wú) 返回未讀消息數(shù)

示例代碼

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

setUserInfo 用于設(shè)置CRM個(gè)人信息

setUserInfo(params)

params

參數(shù)名 類型 默認(rèn)值 描述
userId 字符串類型 無(wú) 個(gè)人賬號(hào)Id
data 字符串類型 無(wú) 用戶詳細(xì)信息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\":\"賬號(hào)\", \"value\":\"zhangsan\", \"href\":\"http://example.domain/user/zhangsan\"},{\"index\":1, \"key\":\"sex\", \"label\":\"性別\", \"value\":\"先生\"},{\"index\":5, \"key\":\"reg_date\", \"label\":\"注冊(cè)日期\", \"value\":\"2015-11-16\"},{\"index\":6, \"key\":\"last_login\", \"label\":\"上次登錄時(shí)間\", \"value\":\"2015-12-22 15:38:54\"}]'
}
QiYu.setUserInfo(params);

logout 注銷當(dāng)前賬號(hào)

logout()

示例代碼

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

此文轉(zhuǎn)自網(wǎng)易七魚(yú)官方GitHub:https://github.com/qiyukf/react-native-qiyu

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容