标签: google-play-core

Play 核心应用内评论 API 未显示评论活动

我正在尝试使用昨天刚刚发布的 Google 的 Review API(Play Core library 1.8.0)。请参阅https://developer.android.com/guide/playcore/in-app-review

我仔细地遵循了故障排除部分,我确保该应用程序是从内部测试轨道下载的,我的帐户没有对该应用程序的评论,该应用程序在该用户的库中等等。我什至尝试了一个全新的帐户,但每次 com.google.android.finsky.inappreviewdialog.InAppReviewActivity 仅显示立即消失。

我从我的活动的 onResume() 方法调用以下代码:

                reviewManager = ReviewManagerFactory.create(AlarmClock.this);
                Logger.logInfo("Rating: requestReviewFlow() ");
                reviewManager.requestReviewFlow().addOnSuccessListener(new OnSuccessListener<ReviewInfo>() {
                    @Override
                    public void onSuccess(ReviewInfo result) {
                        Logger.logInfo("Rating: launchReviewFlow() ");
                        reviewManager.launchReviewFlow(AlarmClock.this, result).addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void result) {
                                Logger.logInfo("Rating: launchReviewFlow() success ");
                            }
                        });
                    }
                });
Run Code Online (Sandbox Code Playgroud)

两个侦听器都返回成功。

这是日志输出:

2020-08-06 16:01:29.317 29618-29618/? I/MyApp: [06Aug 16:01:29.317, main]: Rating: requestReviewFlow()
2020-08-06 16:01:29.318 29618-29618/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : requestInAppReview (com.mypackage)
2020-08-06 16:01:29.320 29618-29774/? I/PlayCore: UID: [10409] …
Run Code Online (Sandbox Code Playgroud)

android google-play google-play-core

65
推荐指数
10
解决办法
3万
查看次数

Google Play In-App Review API:大概多久显示一次对话框?

文件上的话题时,要求复审规定:

在用户对您的应用或游戏有足够的体验以提供有用的反馈后,触发应用内审核流程。

不要过度提示用户进行评论。这种方法有助于最大限度地减少用户的挫败感并限制 API 使用(请参阅配额部分)。

但这是非常模糊的,我们是否可以经常触发它(例如在游戏中的每个级别之后),或者我们应该在应用程序中添加一些等待时间(例如每个级别之后但每月最少等待时间)?

iOS 上有一个类似的 API,据观察,弹出窗口显示“一年大约 3 次”。了解类似的粗略估计会有所帮助,这将有助于设计 API 的正确使用并消除不必要的用户挫败感。

android google-play google-play-services google-play-core

24
推荐指数
1
解决办法
3659
查看次数

应用内更新给出 InstallException (ERROR_API_NOT_AVAILABLE)

使用以下代码片段实现了应用内更新功能:

private void showInAppUpdateDialog(boolean isMandatoryUpdate) {
    Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

    appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
        if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                || appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {

            int appUpdateType = isMandatoryUpdate ? IMMEDIATE : AppUpdateType.FLEXIBLE;
            int requestCode = isMandatoryUpdate ? REQUEST_APP_UPDATE_IMMEDIATE : REQUEST_APP_UPDATE_FLEXIBLE;

            if (appUpdateInfo.isUpdateTypeAllowed(appUpdateType)) {
                // start the app update
                try {
                    appUpdateManager.startUpdateFlowForResult(appUpdateInfo, appUpdateType, targetActivity, requestCode);
                } catch (IntentSender.SendIntentException e) {
                    e.printStackTrace();
                }
            }
        }
    }).addOnFailureListener(e -> {
        e.printStackTrace();
    });
}
Run Code Online (Sandbox Code Playgroud)

我正在安装 Android 9 的设备上测试应用程序内更新。 尽管如此,它仍然给我以下错误(ERROR_API_NOT_AVAILABLE):

com.google.android.play.core.install.InstallException: Install Error(-3): The API is not available …
Run Code Online (Sandbox Code Playgroud)

android in-app-update google-play-core

16
推荐指数
3
解决办法
4722
查看次数

如何在Android中测试应用内更新?

最近,谷歌在Google I / O 2019中引入了``应用内更新''。

所以我正在尝试使用它。

val appUpdateManager = AppUpdateManagerFactory.create(this)
val appUpdateInfo = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnCompleteListener {
    val result = it.result
    if (result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
            && result.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {

        info("should show update")
        appUpdateManager.startUpdateFlowForResult(
                        result,
                        AppUpdateType.FLEXIBLE,
                        this,
                        1)
    } else {
        info("This is already latest version: ${result.updateAvailability()}")
    }
}
Run Code Online (Sandbox Code Playgroud)

result.updateAvailability()总是如此UpdateAvailability.UPDATE_NOT_AVAILABLE

为此,我制作了一个带有先前版本代码的签名发行版APK。但这是行不通的。

根据开发人员主题演讲中的演示(16:40〜)

他正在用模拟器来做。看起来像调试模式。

我该怎么做?

android google-play in-app-update google-play-core

12
推荐指数
6
解决办法
1869
查看次数

应用内更新检查它是AppUpdateType.FLEXIBLE还是AppUpdateType.IMMEDIATE

Playstore控制台中是否有任何选项可配置此值?

这是官方文件。码:

// Creates instance of the manager.
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context);

// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
    if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
          // For a flexible update, use AppUpdateType.FLEXIBLE
          && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
              // Request the update.
    }
});
Run Code Online (Sandbox Code Playgroud)

我们如何知道:

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
Run Code Online (Sandbox Code Playgroud)

在哪里配置以上类型?官方文档中没有相关描述。

在AppUpdateInfo.class中:

public final boolean isUpdateTypeAllowed(int var1) {
        if (var1 == 0) {
            return …
Run Code Online (Sandbox Code Playgroud)

android in-app-update google-play-core

11
推荐指数
2
解决办法
448
查看次数

应用程序内更新(立即)不重新启动应用程序

面临即时应用程序更新模式的问题。成功完成应用程序更新后,一切都会关闭,并且不会重新启动应用程序。这就是问题所在。但android文档说:

全屏用户体验,要求用户更新并重新启动应用程序才能继续使用该应用程序。此用户体验最适合更新对于继续使用应用程序至关重要的情况。用户接受立即更新后,Google Play 会处理更新安装和应用重新启动。

implementation 'com.google.android.play:core:1.9.1'
implementation 'com.google.android.play:core-ktx:1.8.1'
Run Code Online (Sandbox Code Playgroud)

代码

class MainActivity : AppCompatActivity() {

    companion object {
        const val UPDATE_REQUEST_CODE = 112
        const val TAG = "MainActivity"
    }

    private var appUpdateManager: AppUpdateManager? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        findViewById<TextView>(R.id.tv_text).text = "Version " + BuildConfig.VERSION_NAME

        // Returns an intent object that you use to check for an update.
        appUpdateManager = AppUpdateManagerFactory.create(this)
    }

    private val listener: InstallStateUpdatedListener =
        InstallStateUpdatedListener { installState ->
            if (installState.installStatus() == InstallStatus.DOWNLOADED) {
                // After …
Run Code Online (Sandbox Code Playgroud)

android in-app-update google-play-core

11
推荐指数
1
解决办法
1935
查看次数

禁用 Google Play Console 完整性 API

我最近启用了 Google Play Console 的 Integrity API,但我不打算使用它,有办法禁用它吗?

在“设置”>“应用程序完整性”>“完整性 API”上似乎没有禁用它的选项 我尝试联系 Play 支持,但几个月来我还没有收到回复。

google-play google-play-services google-play-developer-api google-play-console google-play-core

10
推荐指数
0
解决办法
918
查看次数

使用Play核心库验证是否安装了非Google Play应用

一些背景信息:ResourceNotFoundException当我们迁移到Android应用程序捆绑包发布方法时,我们大多数人都可能遇到过。显然,问题出在侧面加载应用程序。参考这里。

Google最近宣布了针对此问题的解决方案。使用播放核心库,我们可以确定该应用是否为侧面加载(标识丢失的拆分apk)。如果应用程序是侧面加载的,则会显示“ 安装失败 ”弹出窗口,并重定向到Play商店,用户可以在其中通过Google Play商店正确安装该应用程序。

问题:一切正常,直到从Play商店安装缺少的拆分APK。现在,当我重新启动该应用程序时,它立即崩溃并显示错误消息。

默认FirebaseApp未在此过程中初始化

注意:直接从Play商店下载应用程序可以正常运行,而不会导致崩溃。仅当由于侧面加载问题而重新下载应用程序时,才会发生崩溃。

代码:
项目的build.gradle

buildscript {
 dependencies {
  classpath 'com.android.tools.build:bundletool:0.9.0'
 }
}
Run Code Online (Sandbox Code Playgroud)

应用模块的build.gradle

 implementation 'com.google.android.play:core:1.6.1'
Run Code Online (Sandbox Code Playgroud)

扩展应用程序的类:

 public void onCreate() {
    if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
        // Skip app initialization.
        return;
    }
    super.onCreate();
    .....
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助都将非常棒。

crash android sideloading android-app-bundle google-play-core

9
推荐指数
1
解决办法
567
查看次数

在应用程序更新中执行 java.lang.reflect.InvocationTargetException

我使用链接集成了 Google Play 核心库的应用内更新功能。

我正在使用立即更新选项,因为我们会定期修复对更新很重要的各种关键错误。

以下是应用程序未崩溃并成功更新应用程序以及崩溃时的情况。

  1. 当应用程序更新可用时,单击“更新”按钮,让更新正确完成而不会在两者之间中断 - 应用程序更新成功。
  2. 单击“更新”按钮,更新开始下载,但用户通过按“更新下载进度条”后出现的“x”按钮取消中间更新 - 应用更新取消。
  3. 再次尝试打开应用程序,它因以下错误而崩溃。

致命异常:java.lang.RuntimeException java.lang.reflect.InvocationTargetException com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:586) com.android.internal.os.ZygoteInit.main (ZygoteInit.java) :942) 由 java.lang.reflect.InvocationTargetException 引起 java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:942) 由 android.content 引起。 IntentSender$SendIntentException android.app.Activity.startIntentSenderForResultInner (Activity.java:5019) com.google.android.play.core.appupdate.b.startUpdateFlowForResult (Unknown Source:5) co.behtarinternal.app.menu.MenuActivity$checkForAppUpdate$1 .onSuccess (MenuActivity.kt:239) co.behtarinternal.app.menu.MenuActivity$checkForAppUpdate$1.onSuccess (MenuActivity.kt:43) com.google.android.play.core.tasks.e.run (未知来源:27) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:942)

我也提到了这个问题及其答案,但无法理解如何实施此解决方案。

我到处搜索了很多,但没有找到与这个问题相关的任何可行的解决方案。

如果你们中的任何人遇到过类似的问题,并且您的解决方案有效,请帮助我。

android in-app-update google-play-core

9
推荐指数
1
解决办法
905
查看次数

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)在Android应用程序内更新API中有什么作用?

我已经在Android中关注应用内更新API已有相当一段时间了,但找不到以下行的相关性:

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
Run Code Online (Sandbox Code Playgroud)

-

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)
Run Code Online (Sandbox Code Playgroud)

isUpdateTypeAllowed()方法已在以下Android文档的代码段中使用:https : //developer.android.com/guide/app-bundle/in-app-updates#update_readiness。此外,以上两个方法调用在所有情况下均返回true,而我无法找到上述两个方法调用中的任何一个返回false的情况。

android kotlin in-app-update google-play-core

8
推荐指数
3
解决办法
883
查看次数