适用场景
LeanCloud 是通过 REST API 来进行前后端分离的,当出现问题的时候,最好是先检查日志里的网络请求,如果有必要的话再和 REST API 文档进行比对,以此来判断是客户端发出的请求不对,还是服务端处理请求不对。
提交工单反馈问题时,客服通常会索要复现的日志来帮助排查问题。本文介绍如何查看日志并通过日志来初步排查问题。
Objective-C SDK 调试指南
开启调试日志
// 在 Application 初始化代码执行之前执行
[AVOSCloud setAllLogsEnabled:YES];
运行并查看日志
我们以即时通信服务为例,运行下面的代码查询 Tom 的某个会话。
AVIMClient *tom = [[AVIMClient alloc] initWithClientId:@"Tom"];
AVIMConversationQuery *query = [tom conversationQuery];
[query getConversationById:@"5da92fe07c4cc935c804361c" callback:^(AVIMConversation *conversation, NSError *error) {
if (conversation) {
NSLog(@"查询成功!");
}else{
NSLog(@"查询失败,错误码:%ld,错误信息:%@",(long)error.code,error.userInfo);
}
}];
Xcode 运行后查看控制台打印情况如图:
控制台打印的报错信息是:
查询失败,错误码:9002,错误信息:{
NSLocalizedFailureReason = "IM client not open.";
}
翻阅 LeanCloud 即时通信文档 可知,iOS SDK 和 Android SDK 需要调用开发者手动执行 open 方法登录到即时通信服务器。参考文档作出如下修改:
AVIMClient *tom = [[AVIMClient alloc] initWithClientId:@"Tom"];
//登录即时通讯服务器
[tom openWithCallback:^(BOOL succeeded, NSError *error) {
if(succeeded) {
AVIMConversationQuery *query = [tom conversationQuery];
[query getConversationById:@"5dba9e1f7c4cc935c8dbbe84" callback:^(AVIMConversation *conversation, NSError *error1) {
if (conversation) {
NSLog(@"查询对话成功!");
}else{
NSLog(@"查询会话失败,错误码:%ld,错误信息:%@",(long)error1.code,error.userInfo);
}
}];
}
}];
Xcode 运行后查看控制台打印情况如图:
即时通信遇到问题可以通过日志中的请求与返回结果查看,调用 LeanCloud 服务是否正常。
即时通讯的错误码详解见:即时通讯云端错误码说明。