蒲公英文檔中心
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.jsjtzm.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 信息