Android SDK 3.0.0 集成指南
蒲公英 Android SDK 3.0.0 版本的集成步骤,涵盖 App Key 获取、SDK 导入、用户反馈与版本更新。
蒲公英 SDK 已停止维护,新集成请直接使用 蒲公英 API。本文保留用于已集成项目参考。
本文介绍如何在 Android 工程中集成蒲公英 SDK 3.0.0,并启用用户反馈与版本更新检查。
前置要求
- Android API 16 及以上。
- 已在蒲公英注册应用并获取 App Key。
- Android Studio 或 Eclipse 工程。
App Key 可在应用管理页面首页查看:

导入 SDK
Android Studio
在 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'
}示例工程:PgyerSdkDemoForAndroidStudio。
Android Studio 用户也可以使用与 Eclipse 相同的 jar 包方式集成。
Eclipse
将 jar 包复制到工程的 libs 目录。

配置 AndroidManifest
aar 方式
仅需配置 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>PGYER_APPID 即 App Key。jar 包方式
jar 包需要完整配置权限、provider 与 App Key:
<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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_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" />
<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"/>
<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>Android 8.0 安装 apk 需要添加权限:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />Android 9.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>用户反馈
旧版本方法不兼容新版本接口。
启用摇一摇反馈
默认弹出 Dialog:
new PgyerFeedbackManager.PgyerFeedbackBuilder().builder().register();改为弹出 Activity:
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setDisplayType(PgyerFeedbackManager.TYPE.DIALOG_TYPE)
.builder()
.register();可配置项
| 方法 | 说明 | 默认值 |
|---|---|---|
setShakeInvoke(boolean) | 是否以摇一摇激活;为 false 时需调用 invoke() 直接显示 | true |
setDisplayType(TYPE) | 显示方式,DIALOG_TYPE 或 ACTIVITY_TYPE | DIALOG_TYPE |
setColorDialogTitle(String) | Dialog 标题字体色 | #ffffff |
setColorTitleBg(String) | Dialog 标题栏背景色 | #2E2D2D |
setBarBackgroundColor(String) | 顶部按钮与底部背景色 | #2E2D2D |
setBarButtonPressedColor(String) | 按钮按下反馈色 | #383737 |
setColorPickerBackgroundColor(String) | 颜色选择器背景色 | #272828 |
setBarImmersive(boolean) | Activity 模式下是否沉浸式 | false |
setMoreParam(String, String) | 自定义反馈数据,可多次调用 | — |
自定义触发反馈
Dialog 方式直接弹出:
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setShakeInvoke(false)
.setDisplayType(PgyerFeedbackManager.TYPE.DIALOG_TYPE)
.setColorDialogTitle("#FF0000")
.setColorTitleBg("#FF0000")
.setBarBackgroundColor("#FF0000")
.setBarButtonPressedColor("#FF0000")
.setColorPickerBackgroundColor("#FF0000")
.setMoreParam("KEY1", "VALUE1")
.setMoreParam("KEY2", "VALUE2")
.builder()
.invoke();Activity 方式直接弹出:
new PgyerFeedbackManager.PgyerFeedbackBuilder()
.setShakeInvoke(false)
.setBarBackgroundColor("#FF0000")
.setBarButtonPressedColor("#FF0000")
.setColorPickerBackgroundColor("#FF0000")
.setBarImmersive(true)
.setDisplayType(PgyerFeedbackManager.TYPE.ACTIVITY_TYPE)
.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)
.setDeleteHistroyApk(false)
.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());
PgyUpdateManager.downLoadApk(appBean.getDownloadURL());
}
@Override
public void checkUpdateFailed(Exception e) {
Log.e("pgyer", "check update failed ", e);
}
})
// 调用 PgyUpdateManager.downLoadApk() 后此回调才生效
// 用于自行实现下载进度与状态 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");
// 调用 SDK 提供的安装方法
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,可在 Logcat 中使用 PgyerSDK 标签筛选。