开发过程中遇到问题?先看日志
一、客户端日志的重要性
集成 SDK、App 运行时出现任何问题,首先要做的便是看看此时的日志信息,可以找到相关的提示和报错,快速处理。
如果需要官方帮忙分析问题,提供完整的日志信息 也是避免无效沟通的关键。
二、如何开启调试模式
开启调试模式可以打印更多日志,极光会每一个产品都提供了接口调用,如下接口根据你实际集成的某个 SDK 来选择使用,未集成的不要添加。
2.1 Android:(在 init 初始化之前调用)
JPushInterface.setDebugMode(true); // 设置开启极光推送(JPush)的日志,发布时请关闭日志
JMessageClient.setDebugMode(true); // 设置开启极光 IM (JMessage)的日志,发布时请关闭日志
JAnalyticsInterface.setDebugMode(true); // 设置开启极光统计(JAnalytics)的日志,发布时请关闭日志
JShareInterface.setDebugMode(true); // 设置开启极光分享(JShare)的日志,发布时请关闭日志
SMSSDK.getInstance().setDebugMode(true); // 设置开启极光短信(JSMS)的日志,发布时请关闭日志
JVerificationInterface.setDebugMode(true); // 设置开启极光认证(JVerification)的日志,发布时请关闭日志
相关官网文档:JPush、JAnalytics、JShare、JSMS、JVerification
2.2 iOS 设备
[JPUSHService setDebugMode]; //在 application 里面调用,设置开启 JPush 日志
[JMessage setDebugMode]; //在 application 里面调用,设置开启 JMessage 日志
[JANALYTICSService setDebug:YES]; //在 application 里面调用,设置开启 JAnalytics 日志
[JSHAREService setDebug:YES]; //在 application 里面调用,设置开启 JShare 日志
[JVERIFICATIONService setDebug:YES];//在 application 里面调用,设置开启 JVerification 日志
相关官网文档:JPush、JAnalytics、JShare、JVerification
三、如何查看客户端日志
在日志中可以筛选极光项目的关键字:jiguang。每个 SDK 还会有专门的标识 JPush、JMessage、JShare 等 ,但如果要看到完整的日志,请直接筛选 jiguang 这个统一的 tag。
3.1 Android 设备
- 直接 Androidstudio 调试,看 logcat,如图所示,特别注意不要筛选具体的进程。
- 获取手机上的日志操作方法如下:
(如果你集成的是 JMessage,则命令改为 logjmessage.txt,集成 Jshare,则改为 logjshare.txt,其余的 SDK 同理。)
usb 连接手机
进入终端( windows 系统下的 cmd )执行adb logcat -f /sdcard/logjpush.txt 命令
如果 adb 命令没用,说明你的环境变量里面没有配置 Android 环境变量,阅读如何配置请自行Google
启动 demo 工程
退出 adb 命令,随便进入一个磁盘。执行 adb pull /sdcard/logjpush.txt (或者您自己去手机的 sdcard 找到 logjpush.txt 这个文件拷贝出来)
将 logjpush.txt 上传在极光社区的提问帖中。
3.2 iOS 设备
将你的手机连上 Xcode;
在 Xcode 上面的菜单栏上,选 window->device;
点击你的设备,在下方有个三角箭头,点击下,就能看到打印了。
详细图示如下:
注:生产环境打包的 IPA ,只要开启 debug,也可以看到日志
四、为什么查看的日志不全
4.1 Android 设备
检查是否开启了调试模式,是否是在 init 之前调用的。
部分手机上测试时需要一些特定的方案去打开日志权限,具体请根据手机机型搜索。
魅族:设置–辅助功能–开发者选项–性能优化–高级日志输出–全部允许(默认部分允许)
华为:手机拨号,输入 ##2846579## 会自动进入工程菜单界面,选择后台设置–LOG设置–AP日志
- 检查你查看 logcat 时是否筛选了进程、日志等级。
4.2 iOS 设备
- 检查是否开启调试模式,是否又调用了关闭日志的接口
[JPUSHService setLogOFF];//设置关闭 JPush 调试信息,无法完全关闭日志打印,建议发布时调用
[JMessage setLogOFF];//设置关闭 JMessage 调试信息,无法完全关闭日志打印,建议发布时调用
- 检查是否做了屏蔽日志的操作 ,如下:
- Xcode 8 里 Edit Scheme-> Run -> Arguments,在 Environment Variables 里边添加 OS_ACTIVITY_MODE = Disable
- 若需要操作 1 来屏蔽一些无用日志而有用的日志依旧输出,可以自定义一个宏定义,来做日志输出,如下。
#ifdef DEBUG
#define DDLOG(...) printf(" %s\n",[[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
#define DDLOG_CURRENT_METHOD NSLog(@"%@-%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))
#else
#define DDLOG(...) ;
#define DDLOG_CURRENT_METHOD ;
#endif
如果对你有帮助,点个赞呗 ლ(╹◡╹ლ)
不吹不黑,关注「常见问题」专栏可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ
如果还有你想知道的问题没有总结方案,来评论区跟我交流交流吖
0条评论