是否有API允许Android应用确定Google Play用户是否为该应用的测试人员?

时间:2013-12-04 18:11:07

标签: android google-play-services

我正在开发基于Google Play服务的应用。我使用建议的BaseGameActivity超类来继承许多功能。用户可以通过他们的Google帐户登录。

我想为Android应用的测试人员提供特殊的偏好设置。 查看SDK reference后, 我还没有找到是否有办法确定登录用户是否配置为应用程序的测试人员。这可能吗?

是否有另一种推荐方法可以为与测试相关的应用测试人员提供额外的功能?例如,在我的游戏应用中,我想让测试人员重置他们的成就和排行榜条目,我发现可以通过网络服务call完成。

由于

1 个答案:

答案 0 :(得分:0)

我知道没有这样的API。

我一直在使用的技巧,欢迎您使用 通过ANDROID_ID确定设备是否为测试设备,并且fork不同 相应的行为。像这样:

 static String androidId;
 static boolean isTesterDevice;

 boolean isTesterDevice() {
      if (androidId != null) {
           return isTesterDevice; // optimization: run string compares only once
      }
      androidId = Secure.getString(context.getContentResolver(),Secure.ANDROID_ID);
      isTesterDevice = Arrays.asList(ALL_TESTER_DEVICES).contains(androidId);
      return isTesterDevice;
 }

其中ALL_TESTER_DEVICES是包含所有测试者ANDROID_IDs的String数组:

 static final String[] ALL_TESTER_DEVICES = {
     "46ba345347f7909d", 
     "46b345j327f7909d" ... };

一旦我们完成了这项工作,我们就可以在代码中创建特定于测试人员的逻辑:

 if (isTesterDevice()) {
     perform tester logic
 }

我们还可以将isTester字段作为握手的一部分传递给后端服务器  程序,允许它执行自己的测试人员处理。

这适用于小型测试人员团队。当QA团队变得更大,或者  当你无法使用某些测试设备查询他们的ID时,我们会发现它  有用的是允许我们的测试人员通过添加特殊文件来标记他们的身份  SDCARD。在这种情况下,isTesterDevice()将更改为:

 boolean isTesterDevice() {
      if (androidId != null) {
           return isTesterDevice; // optimization: run string compares only once
      }
      // check by device ID
      androidId = Secure.getString(context.getContentResolver(),Secure.ANDROID_ID);
      isTesterDevice = Arrays.asList(ALL_TESTER_DEVICES).contains(androidId);
      if (!isTesterDevice) {
          // check by tester file
          File sdcard = Environment.getExternalStorageDirectory();
          File testerFile = new File(sdcard.getAbsolutePath(), "I_AM_TESTER.txt");
          isTesterDevice = testerFile.exists();
      }
      return isTesterDevice;
 }

希望它有所帮助。