首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当应用程序处于“待定发布”阶段并被评审者/测试人员(Google )使用/评审时,InstallerPackageName是什么?

当应用程序处于“待定发布”阶段并被评审者/测试人员(Google )使用/评审时,InstallerPackageName是什么?
EN

Stack Overflow用户
提问于 2016-01-01 14:34:25
回答 2查看 1.1K关注 0票数 15

SITUATION

我的应用程序中有一组功能,它根据从安装的商店进行更改。例如,我希望为家庭观众和孩子展示一套更有限制的广告,使他们有资格进入Google Play for Education类别。在其他商店,我仍然想限制,但不想像我在过滤广告时那样严格。

最后的一般意见是,如果我选择"Google for Education“类别,则需要几个小时才能发布,因为如下所示(如开发人员控制台所述):

选中此框将此应用程序提交到Google for Education中的“教育者推荐”部分。推荐哪种应用程序的最终决定是由第三方教师网络做出的。如果您的应用程序被选中,我们将通过电子邮件通知您。如果不是,你的应用程序仍然可以在Google for Education中搜索。

现在,在这个应用程序发布到这个类别的教师网络之前,我假设,下载并验证这些指导原则是否符合并且没有违规行为。

问题

为了区分安装的商店和安装的商店,我显然使用了以下方法:

代码语言:javascript
运行
复制
    PackageManager packageManager = context.getPackageManager();
    String installer = packageManager.getInstallerPackageName(packageName);

    if (installer == null) installer = ""; //to avoid NPE

    if (installer.equals("com.android.vending")) {
        //It is installed from Google Play store
        //PROBLEM: THIS DOES NOT SEEM TO BE THE PACKAGE NAME RETURNED
        //WHEN GOOGLE PLAY REVIEWERS/TESTERS ARE USING THE APP
    }
    else ... 
    ....
    ....
    //similarly handling other stores here
    ....
    ....
    ....
    //After that also checking by installed app stores
    ....
    ....

正在发生的事情:在发布了东西之后,正确地标识了它是从play商店下载的,也就是说,它将com.android.vending作为installerPackageName。但是,当被教师网络审查或测试时,它似乎得到了一个不同的installerPackageName。这使得应用程序认为它是从Google商店以外的应用商店下载的。,正因为如此,我的应用程序被教育类拒绝了。我需要知道这个安装程序包名才能正确地处理这个场景。

如何知道这一点:当检测到的应用程序商店是Google时,有一个专用的广告单元id,所有请求都发布成功(即来自普通游戏商店的用户)到这个谷歌专用广告单元id。但是,在提交应用程序/更新后的短时间内,在应用程序或更新发布之前,有几个请求出现在非谷歌广告单元ids上,导致该应用程序没有遵守"Google for Education“类别的指导原则。因为,非google广告单元ids中的广告过滤级别略低一些。因此,评估/测试应用程序的老师会看到一些他们认为不符合指导原则的广告,并予以拒绝。

此外,这是一篇文章还支持这样一个事实,即在应用程序实际发布到商店之前,它会被手动检查,也可以通过自动脚本进行检查。

当前的修复或限制:我已经禁用了所有其他的广告网络,只能使用admob。过滤器的设置,即使是在其他广告网络最严格的水平,似乎并没有过滤所有的广告,谷歌评论员认为不适合儿童和家庭观众。当只使用admob时,这个过程是平滑的,我总是有资格的。

我想要克服这个问题的东西:,如果我知道在安装应用程序时返回的installerPackageName,无论老师从哪里安装这个应用程序,我都可以处理这个问题,就像我得到com.android.vending时处理的一样,一切都会很好。我找不到任何文件或参考资料来获取这些信息。

此外,如果有任何其他方法,我可以确定它的应用程序是在pending publication阶段,我强迫所有的请求转到谷歌的广告单位id。

假设:有一个独立的安装程序应用程序,供审阅者和测试人员使用(不管它在后台是自动的/手动的),它的installerPackageName不是com.android.vending。如果附近有谷歌人,并能帮助证实这一点(如果谷歌允许的话),请发表评论。:-)

我不想和一起去的其他可能性

当应用程序处于pending publication阶段时,手动禁用所有其他网络,并在发布后重新启用它们。但是,我不想这样做,因为这就像在吓唬谷歌,我不想那样做。我想我的应用程序逻辑来处理它,这样同样的事情被审查是释放在市场上。

我永远只和admob在一起。但这将是愚蠢的,因为没有这样的限制,在其他商店,我将发布我的应用程序,我将严重损失的填充率。

我有过这样的问题,在知道installerPackageName的下载位置之前,还是知道如何确定该应用程序目前是否处于playstore上的“待定发布”状态?

我也可以从com.androidcom.google开始,通过包名进行过滤,但我希望保留它作为最后一个选项。此外,还想知道在这些用户的情况下,installerPackage名称是否完全没有设置。在这种情况下,我需要看一看完全不同的情况来处理这种情况。

EN

回答 2

Stack Overflow用户

发布于 2016-01-08 09:38:06

在这种情况下,我找到了一件可以帮你的事。这是分析。只需创建您的定制事件,例如。INSTALLER_STRING在一些分析系统中,并在适当的时候记录该事件。以下是Fabric答案中的事件日志记录示例。

代码语言:javascript
运行
复制
  public static final String EVENT_OPEN_TOP_TRENDS = "EVENT_OPEN_TOP_TRENDS";
  public static final String TOP_TRENDS_TYPE = "TOP_TRENDS_TYPE";
  public static final String TYPE_TOP_TRENDS_IMAGES = "TYPE_TOP_TRENDS_IMAGES";

  public static void logEvent(String eventId, String attributeName, String name) {
    Answers.getInstance().logCustom(new CustomEvent(eventId).putCustomAttribute(attributeName, name));
  }

  logEvent(EVENT_OPEN_TOP_TRENDS, TOP_TRENDS_TYPE, TYPE_TOP_TRENDS_IMAGES);

稍后,您可以在fabric网站上看到您的应用程序是安装程序的来源。

票数 1
EN

Stack Overflow用户

发布于 2016-01-08 13:44:44

检查使用此日志对您使用的所有应用程序显示哪些结果,请检测安装程序包名称:

代码语言:javascript
运行
复制
final PackageManager pm = getPackageManager();

        //get a list of installed apps.
        List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

        for (ApplicationInfo packageInfo : packages) {
            String is = pm.getInstallerPackageName(packageInfo.packageName);//getPackageName());
            Log.d(TAG,  (packageInfo.packageName==null?"":packageInfo.packageName)  + " : " + (is==null?"":is));

        }

您将看到安装的应用程序和包源的完整列表,或者以您想要的方式记录这些数据。编辑 @Virus,我只想给你一个简单的想法。如果您想知道包安装程序的名称,您可以在应用程序启动时获取这些数据,并使用简单的http请求将其发送到您自己的服务器,以检测安装程序名。用这个简单的框架重新发布你的apo。我认为这是唯一的解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34557036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档