V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ZCPgyer
V2EX  ›  程序员

如何使内测应用集成蒲公英 Android SDK,实现自定义反馈信息功能

  •  
  •   ZCPgyer · 2016-08-01 16:09:21 +08:00 · 2995 次点击
    这是一个创建于 3065 天前的主题,其中的信息可能已经有所发展或是发生改变。

    SDK 的集成,主要可以带来以下便捷。「摇一摇」反馈,轻松截图,涂鸦,语音信息反馈,一目了然。 Crash 报告,全程追踪 Crash ,对 Crash 详细信息准确抓取,不让任何一个错误横行。版本管理,每一次应用的版本更新都会提示自动下载,同时表格化的展示版本更新详细信息。数据统计分析,全面的数据统计,详细的趋势分析,轻松明了展现内测过程的每一个细节。同时还可以自己设置个性化的 SDK ,更方便与应用内测。

    此次,蒲公英 Android SDK 更新到了 2.4.0 ,新增加 feedback 自定义信息的功能。一起来看下吧。


    注册应用获取 App ID

    App ID :唯一标识一个应用的 ID ,在蒲公英上的每一个 App 都有一个唯一的 App ID ,开发者可以在应用管理页面首页查看。

    导入 SDK

    Eclipse 用户

    下载蒲公英 Android SDK(包含异常上报,在线更新,摇一摇反馈等功能)。 将 jar 包复制到工程的 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:2.4.0'
    }
    

    Android Studio 工程示例代码

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

    配置 AndroidManifest

    <!-- 必选-->
    <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.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.activity.FeedbackActivity"/>
    
    <!-- 必选-->
    <meta-data
        android:name="PGYER_APPID"
        android:value="4b6e8877dfcc2462bedb37dcf66b6d87" >
    </meta-data>
    </application>
    

    上报 Crash 异常

    一、注册 Crash 接口(必选)

    1.在 application 中集成,可以有机会捕捉更多的异常(推荐)

    import com.pgyersdk.crash.PgyCrashManager;
    import android.app.Application;
    
    public class PgyApplication extends Application {
    
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
    
        PgyCrashManager.register(this);
    	}
    }
    

    在 AndroidManifest.xml 注意修改 android:name=".PgyApplication"此处的名字对应上面继承 Application 的类名。

    <application
    	android:name=".PgyApplication"
    	android:icon="@drawable/ic_launcher"
    	android:label="@string/app_name"
    	android:theme="@style/AppTheme" >
    </application>
    

    2.在 activity 中集成

    import com.pgyersdk.crash.PgyCrashManager;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
        	super.onCreate(savedInstanceState);
        	setContentView(R.layout.activity_main);
    
        	PgyCrashManager.register(this);
    	}
    }
    

    3.解除注册可以调用以下方法:

    PgyCrashManager.unregister();
    

    二、符号表配置(可选)

    通过 progurad 工具混淆时,工程目录下会自动生成符号表文件 mapping.txt

    在后台配置符号表文件。

    上报 catch 异常

    try 
    {
    } 
    catch (Exception e) 
    {	
    	PgyCrashManager.reportCaughtException(MainActivity.this, e);            
    }
    

    摇一摇用户反馈

    1.普通的应用在 Activity 中添加如下代码即可

    import com.pgyersdk.feedback.PgyFeedbackShakeManager;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
        	super.onCreate(savedInstanceState);
        	setContentView(R.layout.activity_main);
    	}
    
    	@Override
    	protected void onResume() {
        	// TODO Auto-generated method stub
        	super.onResume();
    
        	// 自定义摇一摇的灵敏度,默认为 950 ,数值越小灵敏度越高。
        	PgyFeedbackShakeManager.setShakingThreshold(1000);
    
        	// 以对话框的形式弹出
        	PgyFeedbackShakeManager.register(MainActivity.this);
    
        	// 以 Activity 的形式打开,这种情况下必须在 AndroidManifest.xml 配置 FeedbackActivity
        	// 打开沉浸式,默认为 false
        	// FeedbackActivity.setBarImmersive(true);
        	PgyFeedbackShakeManager.register(MainActivity.this, false);
    
    	}
    
    	@Override
    	protected void onPause() {
        	// TODO Auto-generated method stub
        	super.onPause();
        	PgyFeedbackShakeManager.unregister();
    	}
    }
    

    2.游戏还需要在 GLSurfaceView.Renderer 这个类的 public void onDrawFrame(final GL10 gl) 的方法中添加以下代码

    public void onDrawFrame(GL10 gl) {
    	PgyFeedbackShakeManager.setGLSurface(true);
    	GLSurfaceUtils.getInstance().takeScreenShot(gl);
    }
    

    3.通过点击按钮的方式弹出反馈界面:

    // 以对话框的形式弹出
    PgyFeedback.getInstance().show(MainActivity.this);
    
    // 以 Activity 的形式打开,这种情况下必须在 AndroidManifest.xml 配置 FeedbackActivity
    // 打开沉浸式,默认为 false
    // FeedbackActivity.setBarImmersive(true);
    PgyFeedback.getInstance().showActiivty(MainActivity.this);
    

    4.自定义反馈界面对话框 title

    PgyerDialog.setDialogTitleBackgroundColor("#ff0000");
    PgyerDialog.setDialogTitleTextColor("#ffffff");
    

    5.自定义反馈界面 Activity

    // 设置顶部导航栏和底部 bar 的颜色
    FeedbackActivity.setBarBackgroundColor("#ff0000");
    
    // 设置顶部按钮和底部按钮按下时的反馈色
    FeedbackActivity.setBarButtonPressedColor("#ff0000");
    
    // 设置颜色选择器的背景色
    FeedbackActivity.setColorPickerBackgroundColor("#ff0000");
    

    6.自定义反馈信息(不限制增加的数量)

    PgyFeedback.getInstance().setMoreParam("tao","value");
    

    将在用户反馈的详情界面看到自定义的数据,如下图:

    检查更新

    1.默认对话框的版本更新检查

    PgyUpdateManager.register(this);
    

    2.带回调的版本更新检查

    PgyUpdateManager.register(MainActivity.this,
    new UpdateManagerListener() {
    
      @Override
      public void onUpdateAvailable(final String result) {
    
        // 将新版本信息封装到 AppBean 中
        final AppBean appBean = getAppBeanFromString(result);
        new AlertDialog.Builder(MainActivity.this)
            .setTitle("更新")
            .setMessage("")
            .setNegativeButton(
                    "确定",
                    new DialogInterface.OnClickListener() {
    
                        @Override
                        public void onClick(
                                DialogInterface dialog,
                                int which) {
                            startDownloadTask(
                                    MainActivity.this,
                                    appBean.getDownloadURL());
                        }
                    }).show();
      }
    
      @Override
      public void onNoUpdateAvailable() {
      }
    });
    

    3.解除注册可以调用以下方法:

    PgyUpdateManager.unregister();
    

    result 的格式为:

    混淆

    -libraryjars libs/pgyer_sdk_x.x.jar
    -dontwarn com.pgyersdk.**
    -keep class com.pgyersdk.** { *; }
    

    欢迎大家在内测自己应用的时候使用蒲公英 SDK 哦~

    如果有什么问题或者不方便的地方欢迎大家在下面留言反馈~ε٩(๑> ₃ <)۶з

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2142 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:09 · PVG 00:09 · LAX 08:09 · JFK 11:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.