在这个集成教程中,我们使用已创建的Demo应用,向您展示如何快速地集成百川云旺·用户反馈反馈SDK。
一般地,您需要入驻成为开发者并且创建应用后,才能集成百川反馈功能并且发布您的App。
注意: 您完全可以先跳过前置准备,使用我们预先申请的Demo应用,来完成快速集成。
注意: 但是在您正式发布应用之前,您务必将一些内容替换为您所申请应用的特定内容。对于这些需要替换的内容,会在教程中以注意点的形式标识出。
百川云旺·用户反馈交流群 |
如果您已经获得Demo包,则可以跳过这一步
打开Demo下载页面
下载iOS Demo并解压缩。
将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。
参见:应用创建和管理
SDK依赖于这些系统库,您需要将他们添加到工程中:
注意:在xcode7之前的版本,没有.tbd的库,而是.dylib
不知道如何添加系统库?
请参考:如何添加系统库图例
Target->Linking->Other Linker Flags
中添加-ObjC
选项,以保证这些Category能够正常工作。 不知道如何修改编译选项?
请参考:如何修改编译选项
注意:请注意-ObjC
的大小写。
注意:如果您没有添加-ObjC
编译选项,在初始化WXOSdk时会发生crash。
引入SDK库头文件
#import <WXOpenIMSDKFMWK/YWFMWK.h>
#import <WXOUIModule/YWUIFMWK.h>
#import <YWFeedbackServiceFMWK/YWFeedbackServiceFMWK.h>
从Demo中的SPKitExample.m
文件中摘取初始化函数exampleInit
、exampleListenFeedbackNewMessage
并调用完成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]; } }
注意: exampleInit
中23015524
是Demo中使用的示例AppKey。您需要在申请App成功后,替换为您的AppKey。在快速集成时,你可以先跳过申请App这个步骤。
更多参考:查看AppKey
#import <YWFeedbackServiceFMWK/YWFeedbackServiceFMWK.h>
YWAnonFeedbackService
获取反馈服务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);
- (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消息推送文档。
上述的快速集成文档能够让您以最快的速度完成反馈功能的集成。您可能会对如下主题感兴趣: