全部产品

iOS SDK 接入

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

前提条件

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

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

注意

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

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

  • 用户反馈SDK支持的系统最低版本为iOS7。

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

  • 用户反馈SDK及其依赖库均使用HTTPS协议进行加密传输。

Step1 下载SDK包

SDK下载地址:https://emas.console.aliyun.com/#/sdkDownload

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

Demo地址,打开Demo下载页面

Step2 集成SDK

下载SDK并集成

  • 将第一步中下载的文件,直接拖入你的Xcode工程中。参照Demo中的做法。

  • 在弹出的对话框中勾选Copy items if needed后,点击Finish

如果遇到 UTDID 冲突可参考:《阿里云-移动云产品SDK UTDID冲突解决方案》

注意

确认目的目录中包含YWFeedbackBundle.bundle,以免造成返回箭头丢失的问题。

使用 Cocoapods 安装 SDK

CocoaPods 安装完成后,还需要在你的项目根目录创建一个Podfile文件,添加如下内容:

# 指定 Master 仓库和阿里云仓库
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/aliyun/aliyun-specs.git'

# 添加依赖
target 'YourTargetName' do
    pod 'AlicloudFeedback', '~> 3.2.0'
end

(~>为模糊指定版本号方式,~> 3.2.0 表明引用版本位于3.2.0 <= version < 3.3.0之间的最新版本SDK,用户可参考 Podfile Syntax Reference ,根据项目需要指定SDK版本。)

在terminal下运行命令如下:

pod install

已安装旧版的,请运行(不要用–no-repo-update选项):

pod update

如果安装时发现无法找到对应的库,请首先尝试到CocoaPods上搜索,如果能够搜索到对应的版本,那就是本地环境的问题,可以尝试运行如下命令:

pod repo update

然后再尝试安装。

命令执行完成后即可完成用户反馈SDK的下载安装。

注意

运行demo前请在YWLoginController.m文件中填入您的账号信息:

static NSString * const kAppKey = @"******";
static NSString * const kAppSecret = @"******";

Step3 添加依赖系统库

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

  • 系统公共库:

    • libz.tbd

    • libresolv.tbd

    • libsqlite3.tbd

    • CoreMotion.framework

    • CoreTelephony.framework

    • SystemConfiguration.framework

注意

  • Cocoapods集成方式不需要手动添加依赖系统库。

  • 在Xcode7之前的版本,没有.tbd的库,而是.dylib

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

如何添加系统库

Step4 修改编译选项

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

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

如何修改编译选项
注意

请注意 -ObjC的大小写。

Step5 iOS 10中隐私权限设置

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

在info plist中增加字段:

<key>NSCameraUsageDescription</key>
<string>访问相机</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>访问相册</string>

配置完后如图所示:

plist配置完成效果
注意

  • 上图中的访问相机/访问相册可修改。

  • 如出现点击拍照、相册闪退的情况,确认是否已添加权限说明。

Step6 初始化SDK

  • 引入头文件:

    #import <YWFeedbackFMWK/YWFeedbackKit.h> 
    #import <YWFeedbackFMWK/YWFeedbackViewController.h>
  • 调用初始化方法:

    Objective-C
    
    // 无需配置信息的初始化方法
    - (instancetype)autoInit;
    
    YWFeedbackKit *feedbackKitt = [[YWFeedbackKit alloc] autoInit];

下载SDK统一配置文件

  • 在控制台应用管理页面,单击应用配置按钮,打开编辑配置右侧栏;在编辑配置右侧栏,单击下载Android/iOS应用配置按钮,下载App的配置文件AliyunEmasServices-Info.plist,如下图所示:

    下载配置文件
  • Xcode中,把下载的AliyunEmasServices-Info.plist文件拖入对应App Target下即可,在弹出框勾选Copy items if needed

  • 【附】AliyunEmasServices-Info.plist配置文件,包含SDK初始化所需的配置信息,用户只需要调用无需手动输入配置信息的autoInit初始化接口。设置业务方扩展的反馈数据:

/// 业务方扩展反馈数据,可设置任意字段,在创建反馈页面前设置,可在后台扩展信息中查看
@property (nonatomic, strong, readwrite) NSDictionary *extInfo;
注意

  • 不要将YWFeedbackKit实例设置为局部变量,请持有YWFeedback实例,以免被提前释放。

  • 由于YWFeedbackKit是个宏,实际上是BCFeedbackKit,所以在Swift中,请使用BCFeedbackKit。

Step7 设置用户昵称

  • 设置用户昵称后,用户反馈信息时携带该昵称,最终会在反馈控制台会话中显示。

  • v3.3.5新增接口。

/**
 设置反馈用户名,请于SDK初始化完成后调用
 (该用户名,可以在移动反馈控制台反馈会话中查看,用于标识用户)
 @param nickName 反馈用户名
 */
- (void)setUserNick:(NSString *)nickName;

Step8 打开反馈页面

  • 调用 YWFeedbackKit 实例如下接口创建反馈界面:

    /// @brief 创建反馈页面回调Block
    /// @params viewController 反馈页面
    /// @return error 调用失败返回错误
    typedef void (^YWMakeFeedbackViewControllerCompletionBlock) (YWFeedbackViewController * viewController, NSError *error);
    /// @brief 创建反馈页面,默认为不显示弹出错误信息
    - (void)makeFeedbackViewControllerWithCompletionBlock:(YWMakeFeedbackViewControllerCompletionBlock)completionBlock;
  • 创建成功后将会返回YWFeedbackViewController,你可以根据你App的实际结构,使用Present等不同的方式将其展示。

  • 如果不使用系统默认alert展示错误提示,或者想自行进行错误提示的多语言化,可以自定义提示方式,只需要实现这个block即可。具体可参考Demo

/// @brief 反馈页面对外抛出Error的回调block。不设置此属性时,将使用默认Alert方式进行错误提示
/// @params viewController 反馈页面
/// @return error 失败error
@property (nonatomic, copy) void (^YWFeedbackViewControllerErrorBlock) (YWFeedbackViewController *viewController, NSError *error);

Step9 获取反馈未读数

  • 调用如下接口获取未读数:

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

Step10 关闭用户反馈页面

在成功执行Step7后将获取到YWFeedbackViewController,设置属性closeBlock,当用户关闭用户反馈,将调用该block进行dismiss或pop。具体可参考 Demo

[viewController setCloseBlock:^(UIViewController *aParentController){
    // 进行 dismiss 或者 pop,以及一些相关设置
    [aParentController dismissViewControllerAnimated:YES completion:nil];
}];

Step11 Mobile客户端配置

需要在控制台的 Mobile 客户端配置页面进行配置。

注意

上述接口在Demo中均有调用演示,具体可参考Demo

Step12 自定义UI

从v3.1.0版本开始增加了自定义UI的接口,包括导航栏字体,导航栏返回按钮的图标。

修改导航栏字体的API如下:

//YWFeedbackKit.h 

/// @brief 如果不设置,默认为:`[UIFont boldSystemFontOfSize:13]`
@property (nonatomic, strong) UIFont *defaultCloseButtonTitleFont;

/// @brief 如果不设置,默认为:`[UIFont boldSystemFontOfSize:13]`
@property (nonatomic, strong) UIFont *defaultRightBarButtonItemTitleFont;

修改导航栏返回按钮图标的具体方法如下:

如果是手动集成,直接修改YWFeedbackBundle.bundle里的图片即可,如果是通过CocoaPods方式集成,那么需要修改YWFeedbackBundle.bundle命名为Customized.YWFeedbackBundle.bundle,并修改Customized.YWFeedbackBundle.bundle内部的图片,然后拖拽到你自己的工程项目中即可。

常见错误码

错误码

含义

103

没有加-ObjC,Category没有加载上来。