小编Eze*_*ian的帖子

重量在哪里(在喷气背包中)?

今天更新到 Jetpack Compose a-08 并遇到问题。在以前的版本中我使用了权重修改器,但现在我找不到它。发生了什么或者有什么替代方案?在变更日志中我没有找到有关它的信息。

android kotlin android-jetpack-compose

8
推荐指数
1
解决办法
7278
查看次数

Firebase 令牌在 API 调用之间不一致

我正在使用 Firebase FCM 将通知从我的服务器发送给用户。

当用户第一次安装应用程序时,我在MessagingService.java中捕获了新鲜的令牌:

@Override
public void onNewToken(@NonNull String tkn) {
    super.onNewToken(tkn);
    sendTokenToServer(tkn);
}
Run Code Online (Sandbox Code Playgroud)

问题来了,当用户关闭会话(不卸载应用程序)时,SharedPreferences 被删除。新的会话开始;但onNewToken()没有被调用。因此,我必须手动检索MainActivity中的令牌才能将其发送到服务器。我正在使用这段代码获取更新的令牌:

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(MainActivity.this, new OnSuccessListener<InstanceIdResult>() {
    @Override
    public void onSuccess(InstanceIdResult instanceIdResult) {
        sendTokenToServer(instanceIdResult.getToken());
    }
});
Run Code Online (Sandbox Code Playgroud)

如您所知,该代码已被弃用,应该避免使用。相反,我尝试用这段代码替换它,但没有成功:

FirebaseInstallations.getInstance().getToken(true).addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
    @Override
    public void onComplete(@NonNull Task<InstallationTokenResult> task) {
        if(task.isSuccessful()) {
            String token = task.getResult().getToken();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在 onNewToken() 中获得的令牌长度是 163。在已弃用的调用中获得的令牌长度是 163(完美,但已弃用)。在 FirebaseInstallations 中获取的令牌长度为 316。

我在服务器端的 firebase API 无法使用 316 长度的代码发送通知。有人知道我做错了什么吗?或者为什么我会得到那些不同长度的令牌?

更新:

服务器端Python,从数据库检索令牌并发送通知,如下所示。请注意,当 token len 为 163 时,此代码有效。

from pyfcm import …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging

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