注意:以下文档只适用于TOP接口,请谨慎使用!

写在前面:如果您在接入中有任何疑问,请参照文档“接入指南-服务模式”加入钉钉群和我们交流。

前置准备

  • 在这个集成教程中,我们使用已创建的Demo应用,向您展示如何快速地集成用户反馈组件功能。

  • 用户反馈组件默认包含语音功能,您可以通过删除语音扩展库来移除该功能,如果您对安装包的增量有严格的控制。

  • 一般地,您需要入驻成为开发者并且创建应用后,才能集成百川反馈功能并且发布您的App。

注意: 您完全可以先跳过前置准备,使用我们预先申请的Demo应用,来完成快速集成。

注意: 但是在您正式发布应用之前,您务必将一些内容替换为您所申请应用的特定内容。对于这些需要替换的内容,会在教程中以注意点的形式标识出。

注意: 用户反馈SDK支持的系统最低版本为 iOS 7

注意: 用户反馈SDK支持 bitcode (bitcode 仅在 Xcode7 及以上显示并默认开启)。

注意: 1.1.2 版本开始,用户反馈SDK及其依赖库均使用 HTTPS协议 进行加密传输, 1.1.2版本不支持Pod方式,请前往 SDK下载及版本更新记录 去下载最新版本

Step1 下载SDK包

  • 如果您已经获得Demo包,则可以跳过这一步

  • 打开Demo下载页面

  • 下载iOS Demo并解压缩。

Step2 添加反馈Framework

下载SDK并集成

  • 将YWFeedbackDemo中的BCFeedback目录直接拖入你的Xcode工程中:
  • 在弹出的对话框中勾选Copy items if needed后,点击Finish。

注意

注意:不需要语音功能请删除YWFeedbackAudioExtentionFMWK.framework
注意:目录中包含的安全图片yw_1222.jpg不能被重命名
注意在你正式发布应用之前,您务必需要使用自己申请的安全图片,并测试IM功能是否正常。现在,您可以暂时跳过这一步,以便快速的完成集成工作。您可以从以下链接中了解如何申请您自己的安全图片。

Step3 添加依赖系统库

注意:Cocoapods集成方式不需要手动添加依赖系统库

YWFeedbackKit依赖于这些系统库,您需要将他们添加到工程中:

  • libz.tbd
  • libsqlite3.tbd
  • AVFoundation.framework
  • AudioToolbox.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework

不需要语音功能则无需添加下面的依赖库:

  • AVFoundation.framework
  • AudioToolbox.framework

注意:在xcode7之前的版本,没有.tbd的库,而是.dylib

不知道如何添加系统库?请参考:如何添加系统库

Step4 修改编译选项

  • Target->Linking->Other Linker Flags中添加-ObjC选项。

    不知道如何修改编译选项?请参考:如何修改编译选项

    注意:如果您没有添加-ObjC编译选项,将无法正常使用语音功能。

    注意:请注意-ObjC的大小写。

Step5 iOS 9/10 兼容

iOS 9中ATS配置

注意: 1.1.2 版本开始,用户反馈SDK及其依赖库均使用 HTTPS协议 进行加密传输,1.1.2版本不需要设置ATS。

由于 iOS 9 引入了AppTransportSecurity(ATS)特性,要求App访问的网络使用HTTPS协议,如果不做特殊设置,http请求会失败,所以需要开发者在工程中增加设置以便可以发送http请求,如下:

在info plist中增加字段:

< key>NSAppTransportSecurity< /key>
< dict>
    < key>NSAllowsArbitraryLoads< /key>
    < true/>
< /dict>

配置完后如图所示:

info

iOS 10中隐私权限设置

iOS 10 对隐私权限更加严格,需要添加权限说明(privacy description)。如果不做设置,可能会导致崩溃、审核不通过等情况。设置如下:

在info plist中增加字段:

<key>NSCameraUsageDescription</key>
<string>访问相机</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>访问相册</string>
<key>NSMicrophoneUsageDescription</key>
<string>访问麦克风</string>

上面的访问相机、访问相册、访问麦克风可修改

配置完后如图所示:

image

Step6 初始化SDK

  • 引入头文件YWFeedbackKit.h
  • 根据需要调用如下init函数:
/// @brief 初始化函数
/// @params anAppKey 注册的的AppKey
/// @return YWFeedbackKit
- (id)initWithAppKey:(NSString *)anAppKey;
/// @brief 初始化函数,将登陆指定的云旺(OpenIM)帐号
/// @params aFreeUserId 云旺(OpenIM)帐号
/// @params password 云旺(OpenIM)帐号密码
/// @params anAppKey 集成OpenIM SDK时注册的的AppKey
/// @return YWFeedbackKit实例
- (id)initWithOpenIMUserId:(NSString *)aOpenIMUserId
                  password:(NSString *)aPassword
                    appKey:(NSString *)anAppKey;
**注意:** 如果你已经集成云旺(OpenIM)帐号,可以使用云旺(OpenIM)帐号进行反馈。

**注意:** 云旺账号您可以使用"fk1" - "fk99",密码为"taobao1234",登录我们的Demo进行体验

* 更多参考:[查看AppKey](http://baichuan.taobao.com/doc2/detail?spm=a3c0d.7662649.0.0.tHfiY4&treeId=28&articleId=102565&docType=1#s2)
* 更多参考:[如何集成云旺(OpenIM)账号](http://baichuan.taobao.com/doc2/detail.htm?articleId=102623&docType=1&treeId=41#s5)
  • 设置所需自定义反馈界面配置:
/// 自定义反馈界面配置,在创建反馈界面前设置
@property (nonatomic, strong, readwrite) NSDictionary *customPlist;

*可使用自定义配置:

/*
@"bgColor": @"#ffffff",//消息气泡背景色
@"color": @"#ffffff",//消息内容文字颜色
@"avatar": @"",//当前登录账号的头像,string,为http url
@"toAvatar": @"",//客服账号的头像,string,为http url
@"profilePlaceholder": @"顶部联系方式",
@"chatInputPlaceholder": @"输入框里面的内容",
@"profileUpdatePlaceholder": @"更新联系方式",
@"profileUpdateCancelBtnText": @"取消更新",
@"profileUpdateConfirmBtnText": @"确定更新",
@"sendBtnText": @"发消息",
@"sendBtnTextColor": @"white",
@"sendBtnBgColor": @"red",
@"hideLoginSuccess": @(YES),//隐藏登录成功的toast
@"profileTitle": @"顶部联系方式左侧提示内容",
@"profileUpdateTitle": @"联系方式标题",
@"profileUpdateDesc": @"联系方式文字描述",
@"photoFromCamera": @"拍摄一张照片",
@"photoFromAlbum":@"从相册选取",
@"photoFromCancel":@"取消",
@"voiceContent":@"点击这里录制语音",
@"voiceCancelContent":@"滑到这里取消录音",
@"voiceReleaseContent":@"松开取消录音",
//是否开启录音功能,
//如果不设置,会依据是否包含`YWFeedbackAudioExtentionFMWK.framework`来判断是否开启录音功能
//如果设置为false,无论是否包含`YWFeedbackAudioExtentionFMWK.framework`,都会关闭录音功能
//如果设置为true,且包含`YWFeedbackAudioExtentionFMWK.framework`的情况下,会开启录音功能
@"enableAudio":@"true"
*/
  • 设置业务方扩展的反馈数据:
/// 业务方扩展反馈数据,在创建反馈界面前设置
@property (nonatomic, strong, readwrite) NSDictionary *extInfo;
  • 设置用户的自定义联系方式:
/// 下面联系方式相关的属性需要在创建反馈页面前设置
@interface YWFeedbackKit(ContactInfo)
/// 设置反馈用户联系方式,用于反馈界面展示。
@property (nonatomic, strong) NSString *contactInfo;

/// 隐藏联系方式提醒条,默认显示。绑定客服账号后不再显示。
@property (nonatomic, assign) BOOL hideContactInfoView;
**注意:** 一般在程序启动或用户登录后做上述初始化操作,并维持全局唯一的YWFeedbackKit实例。

Step7 打开反馈页面

  • 调用YWFeedbackKit实例如下接口创建反馈界面:
/**
 *  @brief 准登陆并创建反馈页面回调Block,反馈页面相关接口见YWFeedbackViewController.h
 *  @param viewController 反馈页面
 *  @param error 调用失败返回错误
 */
typedef void (^YWMakeFeedbackViewControllerCompletionBlock) (YWFeedbackViewController * viewController, NSError *error);
/// @brief 登陆并创建反馈页面
- (void)makeFeedbackViewControllerWithCompletionBlock:(YWMakeFeedbackViewControllerCompletionBlock)completionBlock;
  • 创建成功后将会返回YWFeedbackViewController,你可以根据你App的实际结构,使用Present等不同的方式将其展示。

Step8 获取反馈未读数

  • 调用如下接口获取未读数:
/**
 *  @brief 反馈未读消息数回调Block
 *  @param unreadCount 未读消息数
 *  @param error 调用失败返回错误
 */
typedef void (^YWGetUnreadCountCompletionBlock) (NSNumber *unreadCount, NSError *error);
/// @brief 查询反馈未读消息
- (void)getUnreadCountWithCompletionBlock:(YWGetUnreadCountCompletionBlock)completionBlock;
  • 调用成功后返回反馈未读数,如果返回有未读反馈消息,可在反馈入口添加未读数等方式提醒用户进行查看:

Step9 处理消息链接点击

  • 在成功执行Step7后将获取到YWFeedbackViewController,设置属性openURLBlock,当用户点击反馈会话消息中的链接,将调用该Block展示链接内容。
/**
 *  打开某个url的回调block
 *  @param aURLString 某个url
 *  @param feedbackController 反馈页面,可作为打开的顶层控制器
 */
typedef void(^YWOpenURLBlock)(NSString *aURLString, YWFeedbackViewController *feedbackController);
/// @brief 打开某个url的回调block
@property (nonatomic,   copy) YWOpenURLBlock openURLBlock;

注意: 上述接口在Demo中均有调用演示,建议下载Demo运行查看。

FAQ

关于此文档暂时还没有FAQ
返回
顶部