OpenIM提供了用户足迹的功能,用来记录用户操作的轨迹,您可以在千牛端查看轨迹信息,更多详情请移步这里。
用户足迹需要使用YWExtensionForCustomerServiceFMWK.framework
,在您的百川控制台SDK下载页面获取,您可以通过YWExtensionServiceFromProtocol(IYWExtensionForCustomerService)
这个宏来获得全局的IYWExtensionForCustomerService
的服务对象
如果您需要记录一个UIViewController的轨迹,您需要包含头文件UIViewController+YWCustomerServiceSupport.h
,只需要设置属性:
/// ViewController的显示名,需要在初始化时设置,若不设置,则这个页面不会计入轨迹 @property (nonatomic, copy) NSString *ywcsTrackTitle;
就会自动记录页面轨迹。另外,如果您需要在客服端展示一个web页面,可以设置
/// 开发者自定义的url,可以显示在客服界面,如果需要尽早设置,最好在初始化时设置 @property (nonatomic, copy) NSString *ywcsUrl;
Demo中示例代码
#import <YWExtensionForCustomerServiceFMWK/YWExtensionForCustomerServiceFMWK.h> YWConversationListViewController *conversationListController = [[SPKitExample sharedInstance] exampleMakeConversationListControllerWithSelectItemBlock:^(YWConversation *aConversation) { 。。。。 }]; conversationListController.ywcsDisplayName = @"会话列表";
页面访问顺序轨迹将在viewWillAppear:
中记录,页面停留时间轨迹将在viewWillDisappear:
中或应用切到后台时记录,所以您需要在这两个方法中调用super
中对应的方法。
需要说明的是,在设置了ywcsDisplayName
的情况下,页面停留时间轨迹在每次viewWillDisappear:
和应用切到后台时都会记录,但同一个UIViewController
对象(而不是同一个UIViewController
类型的不同对象)连续的页面访问顺序轨迹只会记录一次,这种场景可能是应用从后台切到前台或者两次viewWillAppear:
之间是其他您不需要记录的页面。
方法定义在头文件IYWExtensionForCustomerService.h
中:
/* * 自定义足迹信息,参考http://baichuan.taobao.com/doc2/detail?spm=0.0.0.0.aEXBLc&treeId=41&articleId=103769&docType=1#s1 * @param uiParam,KV字符串,千牛插件会展现此类KV集合 * @param extraParam, 开发者可以使用自定义param字段,OpenIM不做数据的展现,只是打通数据从C端传递到B端获取的通道,开发者可以使用该字段完成业务参数的传递 * @param completionBlock, 回调 */ - (void)updateExtraInfoWithExtraUI:(NSString *)uiParam andExtraParam:(NSString *)extraParam withCompletionBlock:(YWCSUpdateCompletionBlock)completionBlock;
Demo中示例代码,登录成功之后调用:
[YWExtensionServiceFromProtocol(IYWExtensionForCustomerService) updateExtraInfoWithExtraUI:@"{\"Key1\":\"Value1\"}" andExtraParam:@"透传内容" withCompletionBlock:nil];
方法定义在YWConversationViewController
中:
/* * C端用户当前正在浏览的宝贝id,OpenIM完成数据从C端传递到B端展现的打通,开发者可以通过宝贝id展现宝贝详细信息 * @param itemId, 宝贝Id */ - (void)sendTradeItemMessage:(NSString *)itemId;
方法定义在YWConversationViewController
中:
/* * C端用户交易焦点信息,OpenIM完成数据从C端传递到B端展现的打通,开发者可以通过宝贝id展现宝贝详细信息,具体参考http://baichuan.taobao.com/doc2/detail?spm=0.0.0.0.aEXBLc&treeId=41&articleId=103769&docType=1#s1 * @param tradeId, 交易Id */ - (void)sendTradeInfoMessage:(NSString *)tradeId;
上面的接口一般情况下需要登录百川OpenIM成功后才能使用,如果您不需要登录百川OpenIM也想记录前三种轨迹,您可以在SDK初始化后调用IYWExtensionForCustomerService.h
中的:
- (void)setYWCSPerson:(YWPerson *)person;
方法来设置轨迹相关的person,比如下面这样。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // YWSDK快速接入接口,程序启动后调用这个接口 [[SPKitExample sharedInstance] callThisInDidFinishLaunching]; YWPerson *person = [[YWPerson alloc] initWithPersonId:@"testpro55"]; // 所有的轨迹都需要指定一个person对象,如果不指定,将会使用YWSDKTypeFree类型的YWIMCore登录成功之后获取的person对象 [YWExtensionServiceFromProtocol(IYWExtensionForCustomerService) setYWCSPerson:person]; }
如果调用了这个接口,将以这个接口的设置为准。
如果您接入的是底层的WXOpenIMSDK
,前三种轨迹接入方法与[YWIMKit层接入]相同,对于宝贝焦点消息,可以直接调用WXOpenIMSDK
中的接口发送:
YWMessageBodyP2PInfos *messageBody = [[YWMessageBodyP2PInfos alloc] initWithItemId:itemId]; [self.conversation asyncSendMessageBody:messageBody progress:nil completion:nil];
对于交易焦点消息
YWMessageBodyP2PInfos *messageBody = [[YWMessageBodyP2PInfos alloc] initWithTradeId:tradeId]; [self.conversation asyncSendMessageBody:messageBody progress:nil completion:nil];