Pgyer document center
App Key:唯一标识一个应用的 Key,在蒲公英上的每一个 App 都有一个唯一的 App Key,开发者可以在应用管理页面首页查看。
将 jar 包复制到工程的 libs 目录下面。
添加代码到project下的build.gradle文件中:
allprojects {
repositories {
jcenter()
maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer/master" }
}
}
然后在module下的build.gradle文件中添加依赖即可:
dependencies {
compile 'com.pgyersdk:sdk:3.0.10'
}
Android Studio
用户除了可以使用以上方法集成SDK外,也可以使用和Eclipse
用户相同的方法来集成SDK。
需要配置相关的权限,provider,PgyerProvider,PGYER_APPID
<!-- 必选-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络通信-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 获取设备信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取MAC地址-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读写sdcard,storage等等 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 允许程序录制音频 -->
<uses-permission android:name="android.permission.GET_TASKS"/>
<!-- 可选-->
<uses-permission android:name="android.permission.READ_LOGS" /> <!-- 获取logcat日志 -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- 可选-->
<activity android:name="com.pgyersdk.feedback.FeedbackActivity"/>
<!-- Jar 包集成的方式 必填 -->
<provider
android:name="com.pgyersdk.PgyerProvider"
android:authorities="${applicationId}.com.pgyer.provider"
android:exported="false"/>
<!-- 必填 -->
<meta-data
android:name="PGYER_APPID"
android:value="4b6e8877dfcc2462bedb37dcf66b6d87" >
</meta-data>
</application>
仅需要配置 PGYER_APPID,即是App Key
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application >
<!-- 可选-->
<activity android:name="com.pgyersdk.feedback.FeedbackActivity"/>
<!-- 必选-->
<meta-data
android:name="PGYER_APPID"
android:value="4b6e8877dfcc2462bedb37dcf66b6d87" >
</meta-data>
</application>
</manifest>
注意:APPID 即 App Key
Android8.0 安装 apk 需要添加权限:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
Android9.0 需要配置允许 SDK http请求配置: network_security_config.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">www.pgyer.com</domain>
<domain includeSubdomains="true">app-global.pgyer.com</domain>
</domain-config>
</network-security-config>
PgyCrashManager.register(getApplicationContext()); // 弃用
PgyCrashManager.register(); //推荐使用
//这个方法慎用
PgyerCrashObservable.get().attach(new PgyerObserver() {
@Override
public void receviedCrash(Thread thread, Throwable exception) {
// 禁止做耗时操作
// 添加自定义操作
}
}
});
注意
:自定义的 crash 操作中禁止做耗时操作,循环操作。
PgyCrashManager.setIsIgnoreDefaultHander(true); //默认设置为false;
//设置为 true ,则忽略系统默认Crash 操作,SDK 会重启启动 app 的当前页面
try {
// code
} catch (Exception e) {
/** 旧版本 **/
PgyCrashManager.reportCaughtException(MainActivity.this, e); // 弃用,不推荐使用
/** 新版本 **/
PgyCrashManager.reportCaughtException(e);
}
// 默认采用摇一摇弹出 Dialog 方式
new PgyerFeedbackManager.PgyerFeedbackBuilder().builder().register();
// 采用摇一摇弹出 Activity 方式
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setDisplayType(PgyerFeedbackManager.TYPE.DIALOG_TYPE)
.builder()
.register();
// 可自定义的选项
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setShakeInvoke(false) //设置是否摇一摇的方式激活反馈,默认为 true
// fasle 则不触发摇一摇,最后需要调用 invoke 方法
.setColorDialogTitle("#FF0000") //设置Dialog 标题的字体颜色,默认为颜色为#ffffff
.setColorTitleBg("#FF0000") //设置Dialog 标题栏的背景色,默认为颜色为#2E2D2D
// 默认参数为PgyerFeedbackManager.TYPE.DIALOG_TYPE, Dialog UI 显示
// 可选参数PgyerFeedbackManager.TYPE.ACTIVITY_TYPE Activity UI 显示
.setDisplayType(PgyerFeedbackManager.TYPE.DIALOG_TYPE)
.setMoreParam("KEY1","VALUE1") //自定义的反馈数据
.setMoreParam("KEY2","VALUE2") //自定义的反馈数据
.builder()
.register();
2.自定义触发反馈
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setShakeInvoke(false) //fasle 则不触发摇一摇,最后需要调用 invoke 方法
// true 设置需要调用 register 方法使摇一摇生效
.setDisplayType(PgyerFeedbackManager.TYPE.DIALOG_TYPE) //设置以Dialog 的方式打开
.setColorDialogTitle("#FF0000") //设置Dialog 标题的字体颜色,默认为颜色为#ffffff
.setColorTitleBg("#FF0000") //设置Dialog 标题栏的背景色,默认为颜色为#2E2D2D
.setBarBackgroundColor("#FF0000") // 设置顶部按钮和底部背景色,默认颜色为 #2E2D2D
.setBarButtonPressedColor("#FF0000") //设置顶部按钮和底部按钮按下时的反馈色 默认颜色为 #383737
.setColorPickerBackgroundColor("#FF0000") //设置颜色选择器的背景色,默认颜色为 #272828
.setMoreParam("KEY1","VALUE1") //自定义的反馈数据
.setMoreParam("KEY2","VALUE2") //自定义的反馈数据
.builder()
.invoke(); //激活直接显示的方式
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setShakeInvoke(false) //fasle 则不触发摇一摇,最后需要调用 invoke 方法
// true 设置需要调用 register 方法使摇一摇生效
.setBarBackgroundColor("#FF0000") // 设置顶部按钮和底部背景色,默认颜色为 #2E2D2D
.setBarButtonPressedColor("#FF0000") //设置顶部按钮和底部按钮按下时的反馈色 默认颜色为 #383737
.setColorPickerBackgroundColor("#FF0000") //设置颜色选择器的背景色,默认颜色为 #272828
.setBarImmersive(true) //设置activity 是否以沉浸式的方式打开,默认为 false
.setDisplayType(PgyerFeedbackManager.TYPE.ACTIVITY_TYPE) //设置以 Activity 的方式打开
.setMoreParam("KEY1","VALUE1") //自定义的反馈数据
.setMoreParam("KEY2","VALUE2") //自定义的反馈数据
.builder()
.invoke(); //激活直接显示的方式
将在用户反馈的详情界面看到自定义的数据,如下图:
旧版本需修改如下
/** 旧版本修改 **/
PgyUpdateManager.register(); // 弃用方法,不推介
新版本
/** 新版本 **/
/** 默认方式 **/
new PgyUpdateManager.Builder()
.register();
/** 可选配置集成方式 **/
new PgyUpdateManager.Builder()
.setForced(true) //设置是否强制提示更新
// v3.0.4+ 以上同时可以在官网设置强制更新最高低版本;网站设置和代码设置一种情况成立则提示强制更新
.setUserCanRetry(false) //失败后是否提示重新下载
.setDeleteHistroyApk(false) // 检查更新前是否删除本地历史 Apk, 默认为true
.register();
旧版本需修改如下
/** 旧版本修改 **/
PgyUpdateManager.register(new UpdateManagerListener() { // 弃用方法,不推介
@Override
public void onNoUpdateAvailable() {
//检测没有跟新的回调
}
@Override
public void onUpdateAvailable(AppBean appBean) {
//检测有更新的回调
Log.d("pgyer", "there is new version can update"
+ "new versionCode is " + appBean.getVersionCode());
//调用以下方法,DownloadFileListener 才有效;
//如果完全使用自己的下载方法,不需要设置DownloadFileListener
PgyUpdateManager.downLoadApk(appBean.getDownloadURL());
}
@Override
public void checkUpdateFailed(Exception e) { //再回调失败的时候,增加了新的接口
//更新拒绝(应用被下架,过期,不在安装有效期,下载次数用尽)以及无网络情况会调用此接口
}
});
新版本 (新方法:添加了使用蒲公英下载的回调接口)
/** 新版本 **/
new PgyUpdateManager.Builder()
.setForced(true) //设置是否强制提示更新,非自定义回调更新接口此方法有用
.setUserCanRetry(false) //失败后是否提示重新下载,非自定义下载 apk 回调此方法有用
.setDeleteHistroyApk(false) // 检查更新前是否删除本地历史 Apk, 默认为true
.setUpdateManagerListener(new UpdateManagerListener() {
@Override
public void onNoUpdateAvailable() {
//没有更新是回调此方法
Log.d("pgyer", "there is no new version");
}
@Override
public void onUpdateAvailable(AppBean appBean) {
//有更新回调此方法
Log.d("pgyer", "there is new version can update"
+ "new versionCode is " + appBean.getVersionCode());
//调用以下方法,DownloadFileListener 才有效;
//如果完全使用自己的下载方法,不需要设置DownloadFileListener
PgyUpdateManager.downLoadApk(appBean.getDownloadURL());
}
@Override
public void checkUpdateFailed(Exception e) {
//更新检测失败回调
//更新拒绝(应用被下架,过期,不在安装有效期,下载次数用尽)以及无网络情况会调用此接口
Log.e("pgyer", "check update failed ", e);
}
})
//注意 :
//下载方法调用 PgyUpdateManager.downLoadApk(appBean.getDownloadURL()); 此回调才有效
//此方法是方便用户自己实现下载进度和状态的 UI 提供的回调
//想要使用蒲公英的默认下载进度的UI则不设置此方法
.setDownloadFileListener(new DownloadFileListener() {
@Override
public void downloadFailed() {
//下载失败
Log.e("pgyer", "download apk failed");
}
@Override
public void downloadSuccessful(File file) {
Log.e("pgyer", "download apk success");
// 使用蒲公英提供的安装方法提示用户 安装apk
PgyUpdateManager.installApk(file);
}
@Override
public void onProgressUpdate(Integer... integers) {
Log.e("pgyer", "update download apk progress" + integers);
}})
.register();
一般不需要添加,如果需要,则添加以下代码
-libraryjars libs/pgyer_sdk_x.x.jar
-dontwarn com.pgyersdk.**
-keep class com.pgyersdk.** { *; }
-keep class com.pgyersdk.**$* { *; }
蒲公英 SDK 会在调试的过程中打印 Log,可以通过 PgyerSDK
标签筛选 Log 信息