集成Google UMP SDK时遇cannot find symbol variable canRequestAds错误求助
问题
我正尝试为应用集成Google User Messaging Platform(UMP)SDK,以便向欧洲经济区(EEA)和英国用户投放广告。严格遵循官方指南操作,但在代码行consentInformation.canRequestAds处遇到错误提示:"cannot find symbol variable canRequestAds"。相关代码如下:
import com.google.android.gms.ads.MobileAds; import com.google.android.material.tabs.TabLayout; import com.google.android.ump.ConsentForm; import com.google.android.ump.ConsentInformation; import com.google.android.ump.ConsentRequestParameters; import com.google.android.ump.UserMessagingPlatform; import java.util.concurrent.atomic.AtomicBoolean; public class MainActivity extends AppCompatActivity { private ConsentInformation consentInformation; // 用原子布尔值确保Google移动广告SDK只初始化并加载广告一次 private final AtomicBoolean isMobileAdsInitializeCalled = new AtomicBoolean(false); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 设置未成年人同意标签,false表示用户不属于未成年人 ConsentRequestParameters params = new ConsentRequestParameters .Builder() .setTagForUnderAgeOfConsent(false) .build(); consentInformation = UserMessagingPlatform.getConsentInformation(this); consentInformation.requestConsentInfoUpdate( this, params, (OnConsentInfoUpdateSuccessListener) () -> { UserMessagingPlatform.loadAndShowConsentFormIfRequired( this, (OnConsentFormDismissedListener) loadAndShowError -> { if (loadAndShowError != null) { // 同意信息收集失败 Log.w(TAG, String.format("%s: %s", loadAndShowError.getErrorCode(), loadAndShowError.getMessage())); } // 已完成同意信息收集 if (consentInformation.canRequestAds) { initializeMobileAdsSdk(); } } ) }, (OnConsentInfoUpdateFailureListener) requestConsentError -> { // 同意信息收集失败 Log.w(TAG, String.format("%s: %s", requestConsentError.getErrorCode(), requestConsentError.getMessage())); }); // 检查是否可以在检查新同意信息的同时并行初始化Google移动广告SDK,上一次会话获取的同意可用于请求广告 if (consentInformation.canRequestAds) { initializeMobileAdsSdk(); } } private void initializeMobileAdsSdk() { if (isMobileAdsInitializeCalled.getAndSet(true)) { return; } // 初始化Google移动广告SDK MobileAds.initialize(this); // TODO: 请求广告 // InterstitialAd.load(...); } }
解决方案
- 错误原因:UMP SDK版本更新后,
canRequestAds不再是ConsentInformation的成员变量,而是需要通过方法调用获取,原代码中缺少方法调用的括号。 - 修复方法:将所有
consentInformation.canRequestAds替换为consentInformation.canRequestAds()。
修复后的关键代码片段:
// 已完成同意信息收集 if (consentInformation.canRequestAds()) { initializeMobileAdsSdk(); } // ... // 检查是否可以在检查新同意信息的同时并行初始化Google移动广告SDK if (consentInformation.canRequestAds()) { initializeMobileAdsSdk(); }
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

