Part1 SDK下载
进入MHub控制台下载SDK:
https://mhub.console.aliyun.com/#/download。
如果使用Maven库方式不需要下载,方法见2.1中Maven库快速集成(远程同步)
Part2 准备工作
2.1 Android Studio开发(推荐方式)
1、手动集成
复制下载SDK文件夹下的.aar和.jar到libs目录下,在build.gradle文件中添加如下配置:添加本地libs地址,以便可以找到放置在libs中的aar文件:
- [backcolor=transparent]repositories [backcolor=transparent]{
- [backcolor=transparent] flatDir [backcolor=transparent]{
- [backcolor=transparent] dirs [backcolor=transparent]'libs'
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent]}
添加本地依赖:
- [backcolor=transparent]dependencies [backcolor=transparent]{
- [backcolor=transparent] compile[backcolor=transparent]([backcolor=transparent]name[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'alicloud-android-feedback-3.0.0'[backcolor=transparent],[backcolor=transparent] ext[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'aar'[backcolor=transparent])
- [backcolor=transparent] compile files[backcolor=transparent]([backcolor=transparent]'libs/alicloud-android-monitor-2.5.1.1_for_bc_proguard.jar'[backcolor=transparent])
- [backcolor=transparent] compile files[backcolor=transparent]([backcolor=transparent]'libs/utdid4all-1.1.5.3_proguard.jar'[backcolor=transparent])
- [backcolor=transparent] compile files[backcolor=transparent]([backcolor=transparent]'libs/alicloud-android-utils-1.0.3.jar'[backcolor=transparent])
- [backcolor=transparent] [backcolor=transparent]//自行依赖support-v4
- [backcolor=transparent]}
ps: 别忘记添加support-v4的依赖。
如果遇到 UTDID 冲突可参考:
《阿里云-移动云产品SDK UTDID冲突解决方案》。
2、Maven库快速集成(远程同步)
在Project根目录下build.gradle文件中配置maven库URL:
- [backcolor=transparent]allprojects [backcolor=transparent]{
- [backcolor=transparent] repositories [backcolor=transparent]{
- [backcolor=transparent] jcenter[backcolor=transparent]()
- [backcolor=transparent] maven [backcolor=transparent]{
- [backcolor=transparent] url [backcolor=transparent]'http://maven.aliyun.com/nexus/content/repositories/releases/'
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent]}
在对应的module下的build.gradle文件中添加对应依赖
- [backcolor=transparent]dependencies [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]......
- [backcolor=transparent] compile [backcolor=transparent]'com.aliyun.ams:alicloud-android-feedback:3.1.0@aar'
- [backcolor=transparent] compile [backcolor=transparent]'com.aliyun.ams:alicloud-android-utdid:1.1.5.3'
- [backcolor=transparent] compile [backcolor=transparent]'com.aliyun.ams:alicloud-android-ut:5.1.0'
- [backcolor=transparent] compile [backcolor=transparent]'com.aliyun.ams:alicloud-android-utils:1.0.3'
- [backcolor=transparent] [backcolor=transparent]......
- [backcolor=transparent]}
2.1 Eclipse开发
解压前面下载的SDK, 可以发现三个jar和一个aar, 分别做如下处理:[backcolor=transparent]jar包的处理
- jar包直接复制到项目的libs目录下
- 自行添加support-v4.jar到libs目录下
[backcolor=transparent]alicloud-android-feedback-XXX.aar的迁移
- 解压alicloud-android-feedback-XXX.aar到本地
- 解压得到的目录里创建一个libs文件夹,然后将classes.jar重命名为任何你想要的jar名称(比如:alisdk-feedback.jar), 然后复制到libs目录下
- 复制AndroidManifest.xml文件中所有的权限声明<uses-permission ..="" style="box-sizing: border-box;">以及所有的组件(Activity, Service, Receiver)声明到项目中的AndroidManifest.xml文件中
- 解压得到的目录里创建project.properties文件,添加android.library=true, 表示作为库项目使用
- 删除aapt和jni文件夹以及R.txt文件
- 一个Eclipse Library项目已经构建完成了,接下来只需打开Eclipse导入项目并在你的项目中配置引用这个项目即可
PS: 如果接入方接入了阿里系的其它sdk从而导致包冲突,, 则去掉冲突的依赖或者jar包即可
2.2 权限
- 需要相册、相机和录音的权限
- android 6.0需要开发者自己的方式实现权限获取,更低版本的使用声明即可
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
2.3 混淆配置
应用进行混淆打包时,应加入如下混淆配置:
- [backcolor=transparent]-[backcolor=transparent]keep [backcolor=transparent]class[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]taobao[backcolor=transparent].**[backcolor=transparent] [backcolor=transparent]{*;}
- [backcolor=transparent]-[backcolor=transparent]keep [backcolor=transparent]class[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].**[backcolor=transparent] [backcolor=transparent]{*;}
- [backcolor=transparent]-[backcolor=transparent]dontwarn com[backcolor=transparent].[backcolor=transparent]taobao[backcolor=transparent].**
- [backcolor=transparent]-[backcolor=transparent]dontwarn com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].**
- [backcolor=transparent]-[backcolor=transparent]keep [backcolor=transparent]class[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]ut[backcolor=transparent].**[backcolor=transparent] [backcolor=transparent]{*;}
- [backcolor=transparent]-[backcolor=transparent]dontwarn com[backcolor=transparent].[backcolor=transparent]ut[backcolor=transparent].**
- [backcolor=transparent]-[backcolor=transparent]keep [backcolor=transparent]class[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]ta[backcolor=transparent].**[backcolor=transparent] [backcolor=transparent]{*;}
- [backcolor=transparent]-[backcolor=transparent]dontwarn com[backcolor=transparent].[backcolor=transparent]ta[backcolor=transparent].**
Part3 开始使用
3.1 反馈组件初始化
- [backcolor=transparent]FeedbackAPI[backcolor=transparent].[backcolor=transparent]init[backcolor=transparent]([backcolor=transparent]application[backcolor=transparent],[backcolor=transparent] appkey[backcolor=transparent],[backcolor=transparent]appSecret[backcolor=transparent]);
参数说明:
- application: Application对象
- appkey: 阿里云上应用的唯一标识, 阿里云控制台可查询到
- appSecret: 阿里云上应用的appSecret, 阿里云控制台可查询到
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.2 打开用户反馈界面
另起一个Activity打开用户反馈H5界面:
- [backcolor=transparent]FeedbackAPI[backcolor=transparent].[backcolor=transparent]openFeedbackActivity[backcolor=transparent]();
如果需要调用结果(例如显示加载中):
- [backcolor=transparent]FeedbackAPI[backcolor=transparent].[backcolor=transparent]openFeedbackActivity[backcolor=transparent]([backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]Callable[backcolor=transparent] success[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]Callable[backcolor=transparent] fail[backcolor=transparent])
如果希望使用Fragment方式打开:
- [backcolor=transparent] [backcolor=transparent]FragmentManager[backcolor=transparent] fm [backcolor=transparent]=[backcolor=transparent] getSupportFragmentManager[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]FragmentTransaction[backcolor=transparent] transaction [backcolor=transparent]=[backcolor=transparent] fm[backcolor=transparent].[backcolor=transparent]beginTransaction[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]Fragment[backcolor=transparent] feedback [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]FeedbackAPI[backcolor=transparent].[backcolor=transparent]getFeedbackFragment[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]// must be called
- [backcolor=transparent] [backcolor=transparent]FeedbackAPI[backcolor=transparent].[backcolor=transparent]setFeedbackFragment[backcolor=transparent]([backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]Callable[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]@Override
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]Object[backcolor=transparent] call[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]Exception[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] transaction[backcolor=transparent].[backcolor=transparent]replace[backcolor=transparent]([backcolor=transparent]R[backcolor=transparent].[backcolor=transparent]id[backcolor=transparent].[backcolor=transparent]content[backcolor=transparent],[backcolor=transparent] feedback[backcolor=transparent]);
- [backcolor=transparent] transaction[backcolor=transparent].[backcolor=transparent]commit[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}[backcolor=transparent]/*success callback*/[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent]/*fail callback*/[backcolor=transparent]);
PS:[backcolor=transparent]
fragment的使用务必使用上述setFeedbackFragment的回调[backcolor=transparent]
在xml中声明fragment那种方式暂时不支持[backcolor=transparent]
包装fragment的activity务必调用FeedbackAPI.cleanFeedbackFragment();此时的Fragment是support-v4包中的Fragment
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.3 获取反馈未读数
- [backcolor=transparent]FeedbackAPI[backcolor=transparent].[backcolor=transparent]getFeedbackUnreadCount[backcolor=transparent]([backcolor=transparent]IUnreadCountCallback[backcolor=transparent] callback[backcolor=transparent])
参数callback: onSuccess(int count)回调方法count指示当前未读消息数
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.4 设置标题栏中“历史反馈”的字号
FeedbackAPI.setHistoryTextSize(20);单位为sp注:3.1.0版本中需要将控制台中“历史反馈”字号设置为0,此方法才会生效。
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.5 设置返回按钮的图片
FeedbackAPI.setBackIcon(R.drawable.back);
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.6 沉浸式任务栏
默认使用沉浸式任务栏,如需要关闭可以使用FeedbackAPI.setTranslucent(false);注:3.1.0版本中需要将控制台中沉浸式任务栏设置为true,此方法才会生效。
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.7 设置默认联系方式
FeedbackAPI.setDefaultUserContactInfo(“13800000000”);
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
3.8 语音反馈
需要使用3.1.0以上的版本的sdk,并且在控制台-系统配置/Mobile客户端配置/全局配置中将“是否开启语音”打开。
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Part4 Demo
Demo地址: https://github.com/aptentity/alicloud-android-demo.git
注意: demo工程中, FeedbackAPI.init被调用了多次, 这是为了能够达到实时更新配置的效果, 实际使用上建议只在Application中, 调用FeedbackAPI.init方法一次即可