蒲公英文檔中心

Android SDK 3.0.0以上集成指南

注冊應用獲取 App Key

App Key:唯一標識一個應用的 Key,在蒲公英上的每一個 App 都有一個唯一的 App Key,開發者可以在應用管理頁面首頁查看。

下載 SDK

點擊這里下載 Android SDK。

導入SDK

Eclipse用戶

將 jar 包復制到工程的 libs 目錄下面。

加入libs目錄

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'
}

Android Studio工程示例代碼

Android Studio用戶除了可以使用以上方法集成SDK外,也可以使用和Eclipse用戶相同的方法來集成SDK。

jar包引用SDK方式,配置 AndroidManifest

需要配置相關的權限,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>

aar 引用SDK方式,配置 AndroidManifest

僅需要配置 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

Jar 包方式集成需要手動配置以下文件

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.kzjqkb.live</domain>
        <domain includeSubdomains="true">app-global.pgyer.com</domain>
    </domain-config>
</network-security-config>

上報 Crash 異常

一、注冊Crash接口(必選)

  1. 啟動 Pgyer 檢測 Crash 功能;
   PgyCrashManager.register(getApplicationContext());  // 棄用
   PgyCrashManager.register(); //推薦使用
  1. 添加自定義的 Crash 功能(新功能)
   //這個方法慎用 
   PgyerCrashObservable.get().attach(new PgyerObserver() {
    @Override
    public void receviedCrash(Thread thread, Throwable exception) {
    // 禁止做耗時操作
    // 添加自定義操作
      }
     }
   });

注意:自定義的 crash 操作中禁止做耗時操作,循環操作。

  1. 設置是否忽略系統默認的Crash流程
   PgyCrashManager.setIsIgnoreDefaultHander(true); //默認設置為false;
   //設置為 true ,則忽略系統默認Crash 操作,SDK 會重啟啟動 app 的當前頁面

二、上報異常

try  {
    // code
} catch (Exception e) {
/** 舊版本 **/
    PgyCrashManager.reportCaughtException(MainActivity.this, e); // 棄用,不推薦使用
/** 新版本 **/
    PgyCrashManager.reportCaughtException(e);       
}

搖一搖用戶反饋(舊版本方法不兼容)

  1. 默認搖一搖啟動
 // 默認采用搖一搖彈出 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.自定義觸發反饋

  1. Dailog UI 顯示反饋
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();                  //激活直接顯示的方式
  1. Activity UI 顯示反饋
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();                  //激活直接顯示的方式

將在用戶反饋的詳情界面看到自定義的數據,如下圖:

檢查更新

  1. 默認對話框的版本更新檢查

舊版本需修改如下

 /** 舊版本修改 **/
 PgyUpdateManager.register(); // 棄用方法,不推介

新版本

/** 新版本 **/
/** 默認方式 **/
new PgyUpdateManager.Builder()
    .register();

/** 可選配置集成方式 **/
new PgyUpdateManager.Builder()
    .setForced(true)                //設置是否強制提示更新
                // v3.0.4+ 以上同時可以在官網設置強制更新最高低版本;網站設置和代碼設置一種情況成立則提示強制更新
    .setUserCanRetry(false)         //失敗后是否提示重新下載
    .setDeleteHistroyApk(false)     // 檢查更新前是否刪除本地歷史 Apk, 默認為true
    .register();
  1. 帶回調的版本更新檢查

舊版本需修改如下

/** 舊版本修改 **/
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(Uri uri) { Log.e("pgyer", "download apk failed"); // 使用蒲公英提供的安裝方法提示用戶 安裝apk PgyUpdateManager.installApk(uri); } @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 信息

常見問題

點擊查看

彩票中心新浪竞技风票