java - FCM 主题名称无效。 Base64 生成带有无效字符的字符串

标签 java android firebase-cloud-messaging

我正在创建一个为用户订阅 FCM 主题的应用。在许多情况下,该主题的名称中都有特殊字符。因此,我将此主题名称转换为 Base64 字符串,如下所示:

    byte[] data = myText.getText().toString().getBytes(StandardCharsets.UTF_8);
                    String base64 = Base64.encodeToString(data, Base64.DEFAULT);
                    String converted = base64.replace("\n","");

在许多情况下,上述代码可以完美运行。但在某些情况下,base64 函数会生成如下字符串:“UHJvcHJpw6E=”。 FCM 主题名称中不允许使用等号符号。如何解决这个问题?

最佳答案

基于documentation NO_PADDING 标志应该可以解决问题。

int NO_PADDING Encoder flag bit to omit the padding '=' characters at the end of the output (if any).

String base64 = Base64.encodeToString(data, Base64.NO_PADDING);

为了更好地理解,请检查 Base64 documantation .

关于java - FCM 主题名称无效。 Base64 生成带有无效字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149837/

相关文章:

angular - 如何在应用程序位于前台时显示弹出通知

java - PDFBox IOException : End of File, 预期行

Android Andengine 纹理质量差

javascript - Web firebase.messaging().onMessage 未触发,但后台通知完美触发

android - 如何检测Android O的进程前台

android:如何用模拟(假)坐标修复gps?

android - Firebase FCM 通知 click_action 有效负载

java - java 正则表达式到 javascript 正则表达式的通用转换

java - 日语字符串的模式匹配在 java 中有问题

java - 创建螺旋动画(延迟帮助)