And*_*tel 14 android publishing admob android-package-managers google-play
情况
我的应用程序中有一组功能,它们根据安装的商店进行更改.例如,我希望为家庭观众和儿童展示一组更受限制的广告,以便有资格获得该Google Play for Education类别.在其他商店,我仍然想限制,但不希望像过滤广告一样严格.
我最后的一般观察是,如果我选择加入"Google Play for Education"类别,则需要花费几个小时才能发布,因为以下内容(如开发者控制台所述):
选中此框会提交此应用,以便包含在Google Play for Education的"教育工作者推荐"部分中.关于推荐哪些应用程序的最终决定是由第三方教师网络完成的.如果您的应用被选中,我们将通过电子邮件通知您.如果没有,您的应用仍可在Google Play for Education中搜索.
现在,在应用程序在此类别中发布教师网络之前,我假设,下载并测试/验证是否符合指南且没有违规.
问题
为了区分我安装的商店我显然使用这个:
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
....
....
Run Code Online (Sandbox Code Playgroud)
发生了什么:发布后,应用程序正确识别它是从Play商店下载的,即它com.android.vending作为installerPackageName 获取.但是,当教师网络对其进行审核或测试时,它似乎会获得不同的installerPackageName.这导致应用认为它已从Google Play商店以外的应用商店下载.因此,我的应用程序被拒绝从教育类别.我需要知道此安装程序包名称才能正确处理方案.
我如何知道这一点:当检测到的应用商店是Google Play时,我有一个专门的广告单元ID,并且成功发布后的所有请求(即来自常规游戏商店用户)都会显示此Google专用广告单元ID.但是,在提交应用/更新后,应用程序或更新发布之前的短时间内,一些请求会转到非Google广告单元ID,导致应用无法遵守指南以符合条件"Google Play for Education"类别.因为,非Google广告单元ID中的广告过滤级别略低.因此,评估/测试应用程序的教师会看到一些他们认为不符合指南的广告并拒绝它.
此外,这篇文章还支持这样一个事实:在实际发布到商店之前,应用程序会自动审核应用程序以及自动脚本.
目前的修复或限制:我已禁用所有其他广告网络,只能使用admob.即使在其他广告网络中最严格的级别设置过滤器似乎也不会过滤Google评论员认为不适合儿童和家庭受众的所有广告.当只使用admob时,过程很顺利,我总是有资格.
我正在寻找什么来克服这个问题:如果我知道安装应用程序时返回的installerPackageName,从教师的审查网络安装应用程序的地方,我可以完全按照我处理时的情况处理得到com.android.vending,一切都会好起来的.我找不到任何文档或参考资料来获取此信息.
此外,如果有任何其他方式我可以识别它的应用程序处于pending publication阶段,我强制所有请求转到谷歌广告单元ID.
假设:有一个单独的安装程序应用程序供审阅者和测试人员使用(自动/手动可能在后台),其installerPackageName不是com.android.vending.如果周围有一些谷歌人,可以帮助确认这一点(如果谷歌允许),请做出评论.:-)
其他我不想的可能性
在应用程序处于pending publication同步状态时手动禁用所有其他网络,并在发布后重新启用它们.但是,我不想这样做,因为这就像虚张声势谷歌,我不想这样做.我希望我的应用程序逻辑能够处理它,以便在市场上发布被审查的相同内容.
我永远坚持只有admob.但这是愚蠢的,因为在我发布我的应用程序的其他商店中没有这样的限制,我将在填充率上非常失败.
我之前有任何人遇到过这个问题,或者知道审查的下载地点的installerPackageName,或者知道如何确定应用程序当前是否处于Playstore的"待定发布"状态?
我也可以通过以com.android或开头的包名来过滤所有内容com.google,但我希望将其保留为最后一个选项.此外,想知道在这些用户的情况下是否根本没有设置installerPackage名称.在这种情况下,我需要看一个完全不同的情况来处理这种情况.
在这种情况下,我发现一件事可以帮助你。这是分析。只需创建您的自定义事件,例如。在某些分析系统中安装 INSTALLER_STRING 并在适当时记录该事件。以下是 Fabric Answers 中事件日志记录的示例。
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);
Run Code Online (Sandbox Code Playgroud)
稍后,您可以在 Fabric 网站上查看您的应用程序安装程序的来源。