用户反馈iOS端集成(百川云旺版)

更新时间:2016/08/17 访问次数:14493

前置准备

  • 在这个集成教程中,我们使用已创建的Demo应用,向您展示如何快速地集成百川云旺·用户反馈反馈SDK。

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

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

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

  • 联系我们
百川云旺·用户反馈交流群

集成反馈SDK

Step1 下载SDK包

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

  • 打开Demo下载页面

  • 下载iOS Demo并解压缩。

Step2 添加Feedback Framework

  • 将Demo中的WXFrameworks目录直接拖入你的Xcode工程中

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

    注意:如果没有添加WXOpenIMSDKResource.bundle,会引起异常Crash。

    注意:如果没有添加WXOUIModuleResources.bundle,您可能在打开IM页面时界面元素为空白。

    注意:目录中包含的身份图片yw_1222.jpg不能被重命名

    注意:在你正式发布应用之前,您务必需要使用自己申请的身份图片,并测试IM功能是否正常。现在,您可以暂时跳过这一步,以便快速的完成集成工作。您可以从以下链接中了解如何申请您自己的身份图片。

  • 将Demo中WXExtensions目录下的YWFeedbackServiceFMWK.framework拖入你的Xcode工程中,在弹出的对话框中勾选Copy items if needed后,点击Finish。

  • 参见:应用创建和管理

  • 参见:您的专属身份图片

Step3 添加系统库

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

  • UIKit.framework
  • AddressBook.framework
  • SystemConfiguration.framework
  • CoreLocation.framework
  • CoreTelephony.framework
  • CoreData.framework
  • libz.tbd
  • libstdc++.6.0.9.tbd
  • MobileCoreServices.framework
  • ImageIO.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • AssetsLibrary.framework

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

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

Step4 修改编译选项

  • 云旺(OpenIM) SDK内部使用了ObjectiveC的Category,所以开发者需要在Target->Linking->Other Linker Flags中添加-ObjC选项,以保证这些Category能够正常工作。

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

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

    注意:如果您没有添加-ObjC编译选项,在初始化WXOSdk时会发生crash。

Step5 初始化SDK

  • 引入SDK库头文件

    #import <WXOpenIMSDKFMWK/YWFMWK.h>
    #import <WXOUIModule/YWUIFMWK.h>
    #import <YWFeedbackServiceFMWK/YWFeedbackServiceFMWK.h>

  • 从Demo中的SPKitExample.m文件中摘取初始化函数exampleInitexampleListenFeedbackNewMessage并调用完成SDK初始化。

    一般在·-[AppDelegate didFinishLaunchingWithOptions:]函数中初始化SDK

/**
 *  程序完成启动,在appdelegate中的 application:didFinishLaunchingWithOptions:一开始的地方调用
 */
- (void)callThisInDidFinishLaunching
{
    if ([self exampleInit]) {
        // 在IMSDK截获到Push通知并需要您处理Push时,IMSDK会自动调用此回调
        // 在IMSDK收到反馈消息通知时,IMSDK会自动调用此回调
        [self exampleListenFeedbackNewMessage];
    } else {
        /// 初始化失败,需要提示用户
        UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"错误" message:@"SDK初始化失败, 请检查网络后重试" delegate:self cancelButtonTitle:@"重试" otherButtonTitles:nil];
        [av show];
    }
}

注意: exampleInit23015524是Demo中使用的示例AppKey。您需要在申请App成功后,替换为您的AppKey。在快速集成时,你可以先跳过申请App这个步骤。
更多参考:查看AppKey

Step6 登录云旺账号(可选)

  • 未集成云旺(OpenIM)帐号,将以匿名身份进行反馈,可以略过此步骤。
  • 已集成云旺(OpenIM)帐号可以登陆成功后使用云旺(OpenIM)帐号进行反馈。
  • 集成云旺(OpenIM)帐号及账号登陆、登出等集成流程请移步百川即时通讯服务

Step6 反馈服务

获取反馈服务

  • 引入反馈服务头文件:
    #import <YWFeedbackServiceFMWK/YWFeedbackServiceFMWK.h>
  • 使用匿名身份反馈通过YWAnonFeedbackService获取反馈服务
  • 使用云旺账号进行反馈:
    • 在完成SDK初始化后调用YWAPI接口fetchIMKitForOpenIM获取IMKit实例并持有。
    • 登入云旺账号后,通过YWFeedbackServiceForIMCore(self.imKit.imCore)获取反馈服务

注意: 下面的服务接口调用将使用匿名身份进行调用

创建反馈会话

/// @brief 创建并初始化反馈会话回调Block
/// @param conversation 反馈会话
/// @param error 创建失败错误
typedef void (^YWMakeFeedbackConversationCompletionBlock) (YWFeedbackConversation *conversation, NSError *error);
/// @brief 创建并初始化反馈Conversation
- (void)makeFeedbackConversationWithCompletionBlock:(YWMakeFeedbackConversationCompletionBlock)completionBlock;
  • 获取反馈服务引用并调用会话创建接口
  • 根据创建返回反馈会话创建反馈页面
- (void)exampleOpenFeedbackViewControllerFromViewController:(UIViewController *)aViewController
{
    [YWAnonFeedbackService makeFeedbackConversationWithCompletionBlock:^(YWFeedbackConversation *conversation, NSError *error) 	{
        if ( conversation != nil ) {
        	/// 根据YWFeedbackConversation调用如下接口创建反馈页面
            YWFeedbackViewController *feedback = [self.ywIMKit makeFeedbackViewControllerWithConversation:conversation];    
       	/// 这里可以根据你App的实际结构,使用Present等不同的方式将其展示。
        } else {
            /// 出错了,需要给用户提示
        }
    }];
}

反馈消息通知

使用云旺账号反馈将采用普通消息一致的通知方式,无需调用该接口获取消息通知。

/// @brief 反馈消息接收通知回调Block
/// @param aIsLaunching 是否点击Push启动的App
/// @param aState app当前状态,您可以判断是否是由于用户划开push,导致app从后台进入前台
typedef void(^YWFeedbackOnNewMessageBlock)(BOOL aIsLaunching, UIApplicationState aState);
  • 在程序启动后设置反馈消息通知Block
  • 有新消息通知时播放声音提醒或者打开反馈页面
- (void)exampleListenFeedbackNewMessage
{
    __weak typeof(self) weakSelf = self;
    
    /// 这里演示的是匿名账号消息监听,云旺账号反馈请参考exampleListenNewMessage和exampleHandleAPNSPush
    [YWAnonFeedbackService setOnNewMessageBlock:^(BOOL aIsLaunching, UIApplicationState aState) {
        if ( aIsLaunching || aState != UIApplicationStateActive ) {
            [YWAnonFeedbackService makeFeedbackConversationWithCompletionBlock:^(YWFeedbackConversation *conversation, NSError *error) {
                [weakSelf exampleOpenFeedbackViewController:YES fromViewController:[weakSelf rootNavigationController]];
            }];
        } else {
            /// 播放声音或者跳转打开反馈页面等方式提醒用户有新的反馈消息
        }
    }];
}

反馈未读数

/// @brief 查询反馈未读消息回调Block
typedef void (^YWGetUnreadCountCompletionBlock) (NSNumber *unreadCount, NSError *error);
/// @brief 查询反馈未读消息
- (void)getUnreadCountWithCompletionBlock:(YWGetUnreadCountCompletionBlock)completionBlock;
  • 获取反馈服务并调用未读数接口
  • 有未读数时提醒用户查看
- (void)exampleAskForFeedbackUnreadCountInViewController:(UIViewController *)viewController;
{
    [YWAnonFeedbackService getUnreadCountWithCompletionBlock:^(NSNumber *unreadCount, NSError *error) {
        if ( [unreadCount intValue] > 0 ) {
            #warming 此处可在反馈入口添加未读数以作提醒
        }
    }];
}

消息推送

百川反馈高级版本基于云旺IM功能实现,当应用在前台登录后,IM消息通过长连接到达应用。当应用进入后台时,IM消息通过苹果的APNS通道到达。使用请参考云旺IM消息推送文档。

更多功能

上述的快速集成文档能够让您以最快的速度完成反馈功能的集成。您可能会对如下主题感兴趣:

FAQ

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