• Pgyer document center

    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.credom.org</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(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 信息

    常見問題

    點擊查看

  • 红豆视频