こんにちは。
UMP SDKとファンディングチョイスを利用して、androidアプリでgdprの同意を得ようとしています。公式ドキュメントを読みながら、
import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.google.android.ump.* import com.google.android.ump.ConsentInformation.OnConsentInfoUpdateFailureListener import com.google.android.ump.ConsentInformation.OnConsentInfoUpdateSuccessListener import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { private var consentInformation: ConsentInformation? = null private var consentForm: ConsentForm? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val debugSettings = ConsentDebugSettings.Builder(this) .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA) // .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")←エミュレーターはデフォルトでテストが有効になっているため、コメントアウト。 .build() val params = ConsentRequestParameters.Builder().setConsentDebugSettings(debugSettings).build() // Set tag for under age of consent. Here false means users are not under age // params.setTagForUnderAgeOfConsent(false) consentInformation = UserMessagingPlatform.getConsentInformation(this) consentInformation?.reset() consentInformation?.requestConsentInfoUpdate( this, params, OnConsentInfoUpdateSuccessListener { // The consent information state was updated. // You are now ready to check if a form is available. loadForm() }, OnConsentInfoUpdateFailureListener { // Handle the error. textView.text="error" }) } fun loadForm() { UserMessagingPlatform.loadConsentForm( this, { consentForm -> this@MainActivity.consentForm = consentForm if (consentInformation!!.consentStatus == ConsentInformation.ConsentStatus.REQUIRED) { consentForm.show( this@MainActivity ) { // Handle dismissal by reloading form. loadForm() } } } ) { /// Handle Error. } } }
と実装しました。一番最初は同意画面が表示されて、同意ボタンを押したり、consentinformation.reset()して再び動作を確認するなどできました。しかし、その後他の箇所の実装を加えた後に起動すると、同意フォームが表示されなくなってしまいました。新しくアプリを作り直してadmobに追加し、APP IDを変更、ファンディングチョイスのメッセージも作成し直して仮想デバイスで起動してみたのですが、そちらも表示されません。ファンディングチョイスのメッセージは有効化済みです。
consentInformation?.requestConsentInfoUpdate(
this,
params,
OnConsentInfoUpdateSuccessListener { // The consent information state was updated.
// You are now ready to check if a form is available.
loadForm()
},
OnConsentInfoUpdateFailureListener {
// Handle the error.
textView.text="error"
})
この部分でtextViewに"error"が表示されるので、requestConsentInfoUpdate()が失敗していると思うのですが、原因と対処法が分かりません。
自分なりに調べてみての推測は、
・admobやファンディングチョイスの設定の問題。
・コードミスや不足、android studioまたはUMP SDKなどのバグ。(androi studioやsdkツールで気付ける範囲はアップデートしました)
・同意フレームワークの詳細(https://support.google.com/fundingchoices/answer/9187740)にある「同意を取り消すリンクをアプリまたはサイトに追加する」を行っていなかったため、アカウントに制限がかけられている?(admob通知や登録メールにそれらしいものは見つけられませんでした。起動は仮想デバイスのみです。)
・(関係ないかもしれませんが、params.setTagForUnderAgeOfConsent(false)の部分がkotlinではエラーになり、textViewで表示してみたらfalseになっていたため、必要ないかと思いコメントアウトした部分の影響。)
です。(初心者であるため見落としが多々あるかもしれません。)
また、補足としまして、一番最初同意フォームを表示できた前段階でも同じ現象が起きました。その時はファンディングチョイスのメッセージを有効にしていなかったので、それを有効にすることで表示されました。
textViewにtoString()で色々表示させてみた結果は、
consentInformation.consentStatus → 0(UNKNOWON)
consentInformation.consentType → 0(UNKNOWON)
consentInformation.isConsentFormAvailable → flse
UMP SDKのErrorCode→1(INTERNAL_ERROR)
でした。
追記:デバッグしてみると、W/libc: Unable to set property "qemu.gles" to "1": connection failed; errno=13 (Permission denied)とありました。
自分では問題が解決できず非常に困っています。知恵をお貸しいただければ幸いです。よろしくお願いします。
あなたの回答
tips
プレビュー