指定为非空的参数pendingDynamicLinkData为空

use*_*924 6 android firebase firebase-dynamic-links

private fun getReferralId() {
    Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            pendingDynamicLinkData?.link?.getQueryParameter(
                DEEP_LINK_QUERY_PARAM_REFERRAL_ID
            )?.let { refId ->
                viewModel.saveReferralId(refId)
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

java.lang.NullPointerException:指定为非空的参数为空:方法kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数pendingDynamicLinkData位于app.package.activity.MainActivity.getReferralId$lambda-2(未知来源:7)在应用程序.package.activity.MainActivity.$r8$lambda$ANLS0uCuXrQe7RFQ5b0C-RFsBKE(未知来源:0)在app.package.activity.MainActivity$$ExternalSyntheticLambda3.onSuccess(未知来源:4)

版本:

implementation platform("com.google.firebase:firebase-bom:28.3.1")
implementation "com.google.firebase:firebase-dynamic-links-ktx"
Run Code Online (Sandbox Code Playgroud)

这里有什么问题吗?

更新

当我更新 play-services-auth 库的版本时会发生这种情况

implementation "com.google.android.gms:play-services-auth:19.2.0"
implementation "com.google.android.gms:play-services-auth-api-phone:17.5.1"
Run Code Online (Sandbox Code Playgroud)

到最新版本

implementation "com.google.android.gms:play-services-auth:20.0.0"
implementation "com.google.android.gms:play-services-auth-api-phone:18.0.0"
Run Code Online (Sandbox Code Playgroud)

这有什么关系呢?

brw*_*dev 7

由于播放服务更新,这是库中的一个错误。要修复它,您应该显式声明 可以pendingDynamicLinkData为空。

像这样:

private fun getReferralId() {
    Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
            pendingDynamicLinkData?.link?.getQueryParameter(
                DEEP_LINK_QUERY_PARAM_REFERRAL_ID
            )?.let { refId ->
                viewModel.saveReferralId(refId)
            }
        }
 }
Run Code Online (Sandbox Code Playgroud)