用户反馈专业版SDK 2.0 Android端集成

更新时间:2017/01/18 访问次数:21778

写在前面:如果您在接入中有任何疑问,请参照文档“接入指南-服务模式”加入钉钉群和我们交流。

Part1 SDK下载

请前往文档SDK下载&版本更新记录里下载“Android SDK”、“Android Demo工程”

Part2 准备工作

2.1 Android Studio开发(推荐方式)

复制下载SDK文件夹下的.aar和.jar到libs目录下,
在build.gradle文件中添加如下配置:
添加本地libs地址,以便可以找到放置在libs中的aar文件:

repositories {
    flatDir {
        dirs 'libs'
    }
}

添加本地依赖:

dependencies {
    compile(name:'alisdk-feedback-2.5.0', ext:'aar')
    compile(name:'securityguardaar3-5.1.81', ext:'aar')
    compile files('libs/app-monitor-sdk-2.5.1.1_for_bc_proguard.jar')
    compile files('libs/utdid4all-1.1.5.3_proguard.jar')
    //自行依赖support-v4
}

ps: 别忘记添加support-v4的依赖

2.1 Eclipse开发

解压前面下载的SDK, 可以发现两个jar和两个aar, 分别做如下处理:
jar包的处理

  1. app-monitor-sdk-XXX.jar和utdid4all-XXX.jar直接复制到项目的libs目录下
  2. 自行添加support-v4.jar到libs目录下

securityguard-XXX.aar的迁移

  1. 解压securityguard-XXX.aar到本地
  2. 复制jni目录下的所有文件到项目的libs目录下
  3. 重命名libs/classes.jar为任何你想要的jar名称(比如:securityguard.jar), 然后复制到项目的libs目录下
  4. 复制AndroidManifest.xml文件中所有的权限声明<uses-permission ..>到项目中的AndroidManifest.xml文件中

alisdk-feedback-XXX.aar的迁移

  1. 解压alisdk-feedback-XXX.aar到本地
  2. 解压得到的目录里创建一个libs文件夹,然后将classes.jar重命名为任何你想要的jar名称(比如:alisdk-feedback.jar), 然后复制到libs目录下
  3. 复制AndroidManifest.xml文件中所有的权限声明<uses-permission ..>以及所有的组件(Activity, Service, Receiver)声明到项目中的AndroidManifest.xml文件中
  4. 解压得到的目录里创建project.properties文件,添加android.library=true, 表示作为库项目使用
  5. 删除aapt和jni文件夹以及R.txt文件
  6. 一个Eclipse Library项目已经构建完成了,接下来只需打开Eclipse导入项目并在你的项目中配置引用这个项目即可

PS: 如果接入方接入了阿里系的其它sdk从而导致包冲突,, 则去掉冲突的依赖或者jar包即可
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

2.2 添加安全图片

参考 接入流程中的准备工作四 添加安全图片

务必仔细阅读文档中“使用须知”部分, 否则不正确的操作将可能导致校验不过打开不了反馈界面

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

2.3 权限

  • 需要相册和相机权限
  • android 6.0需要开发者自己的方式实现权限获取,更低版本的使用声明即可

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

2.4 混淆配置

应用进行混淆打包时,应加入如下混淆配置:

-keep class com.alibaba.sdk.android.feedback.impl.FeedbackServiceImpl {*;}
-keep class com.alibaba.sdk.android.feedback.impl.FeedbackAPI {*;}
-keep class com.alibaba.sdk.android.feedback.util.IWxCallback {*;}
-keep class com.alibaba.sdk.android.feedback.util.IUnreadCountCallback{*;}
-keep class com.alibaba.sdk.android.feedback.FeedbackService{*;}
-keep public class com.alibaba.mtl.log.model.LogField {public *;}
-keep class com.taobao.securityjni.**{*;}
-keep class com.taobao.wireless.security.**{*;}
-keep class com.ut.secbody.**{*;}
-keep class com.taobao.dp.**{*;}
-keep class com.alibaba.wireless.security.**{*;}
-keep class com.ta.utdid2.device.**{*;}

Part3 开始使用

3.1 反馈组件初始化

FeedbackAPI.init(application, appkey);

参数说明:

  • application: Application对象
  • appkey: 百川上应用的唯一标识, 百川控制台可查询到

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

3.2 打开用户反馈界面

另起一个Activity打开用户反馈H5界面:

FeedbackAPI.openFeedbackActivity();

如果希望使用Fragment方式打开:

FragmentManager fm = getSupportFragmentManager();
 final FragmentTransaction transaction = fm.beginTransaction();
 final Fragment feedback = FeedbackAPI.getFeedbackFragment();
 // must be called
 FeedbackAPI.setFeedbackFragment(new Callable() {
      @Override
            public Object call() throws Exception {
                transaction.replace(R.id.content, feedback);
                transaction.commit();
                return null;
            }
 }/*success callback*/, null/*fail callback*/);

PS:
fragment的使用务必使用上述setFeedbackFragment的回调
在xml中声明fragment那种方式暂时不支持
包装fragment的activity务必调用FeedbackAPI.cleanFeedbackFragment();
此时的Fragment是support-v4包中的Fragment

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

3.3 获取反馈未读数

FeedbackAPI.getFeedbackUnreadCount(IUnreadCountCallback callback)

参数callback: onSuccess(int count)回调方法count指示当前未读消息数

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

3.4 设置反馈消息自定义参数

FeedbackAPI.setAppExtInfo(JSONObject extInfo)

参数extInfo: 反馈消息自定义json对象数据,可以在反馈控制台查看这些自定义数据

Part4 demo使用说明

解压下载的“Android Demo工程”导入到AS中

  1. 修改DemoApplication.DEFAULT_APPKEY为自己的应用appkey
  2. 参考<##2.2 添加安全图片>节, 添加安全图片到res/drawable目录下
  3. 用户反馈1.0版本提供了FeedbackAPI.setUICustomInfo接口设置UI自定义参数. 2.0中不再提供给接口, 而是通过配置中心下发配置的方式更灵活的控制UI. 如果接入方现在想体验配置中心功能, 旺旺群里联系少墉

注意: demo工程中, FeedbackAPI.init被调用了多次, 这是为了能够达到实时更新配置的效果, 实际使用上建议只在Application中, 调用FeedbackAPI.init方法一次即可

part5 FAQ

配置加载失败常见情况

请大家查看自己的debug log(将log level设置成debug或者verbose)
1. 安全图片问题,请搜索ErrorCode
- ErrorCode = 607, 图片文件有问题。一般是获取图片文件时的apk签名和当前程序的apk签名不一致。请使用当前程序的apk重新生成图片。注意在上传的时候后台应用的appkey和程序中使用的appkey请确保一致
- ErrorCode = 608 没有找到图片文件,请确保图片文件在res\drawable目录下;安卓环境下可能是因为资源优化被优化成了0,请检查APK中的图片。 大部分是由于gradle中使用了shrinkResource
- ErrorCode = 611 参数中的key在图片文件中找不到,请确认图片文件中有这个key
- 如果ErrorCode不是以上请加入钉钉群
2. utdid冲突的问题
- 阿里系的sdk大部分都会有utdid这个依赖,由于我们utdid是较新的,建议保留我们的,删除其他的utdid依赖
3. allowBackup的问题
- AndroidManifest中要求allowBackup为false
4. 安全权限提示问题
- 因为样式没办法统一,每个app都可能有自己风格,所以这个需要自己加上去。
5. 测试的时候正常,正式上线后出现提交反馈 提示参数错误
- 在gradel里面 minifyEnabled 改为false 就可以了。

FAQ

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