Android使用Google ConsentSDK显示授权表单时遇未就绪错误求助
解决Google ConsentSDK调用form.show()时的"Consent form is not ready to be displayed"错误
这个问题的核心原因很明确:form.load()是异步执行的,它不会阻塞主线程等待表单加载完成。你现在的代码在调用form.load()之后立刻执行form.show(),这时候表单还在加载过程中,自然会抛出"表单未准备好"的错误。
正确的做法是,只有当表单加载完成的回调触发后,再调用show()方法。你需要把form.show()移到onConsentFormLoaded()方法内部,这个回调就是专门用来通知你表单已经可以安全展示的。
修正后的代码如下:
ConsentForm form = new ConsentForm.Builder(context, privacyUrl) .withListener(new ConsentFormListener() { @Override public void onConsentFormLoaded() { // 表单加载完成后,才调用show() Log.d("SplashScreen", "Consent form Loaded "); form.show(); // 移到这里! } @Override public void onConsentFormOpened() { Log.d("SplashScreen", "Consent form opened "); } @Override public void onConsentFormClosed( ConsentStatus consentStatus, Boolean userPrefersAdFree) { Log.d("SplashScreen", "Consent form Closed "); } @Override public void onConsentFormError(String errorDescription) { Log.d("SplashScreen", "Consent form error " + errorDescription); } }) .withPersonalizedAdsOption() .withNonPersonalizedAdsOption() .build(); form.load();
另外补充几个需要注意的点:
- 确保
privacyUrl是有效的隐私政策链接,否则可能会在加载阶段就触发错误回调 - 如果表单加载失败(比如网络问题),
onConsentFormError会被触发,记得在这里做相应的错误处理,比如提示用户重试
内容的提问来源于stack exchange,提问作者Pingu
相关产品推荐
相关产品推荐

