【发布时间】:2020-09-07 12:55:56
【问题描述】:
我正在向端到端加密的 Android 客户端发送纯 FCM 数据通知。 android 应用程序解密数据通知负载并从加密数据创建本地通知。只要应用程序在前台或后台运行,它就可以正常工作:通知有效负载被接收、解密,甚至显示在锁定屏幕上,但前提是应用程序正在运行。我还在通知消息的 AndroidConfig 成员和数据字段中查看了消息优先级,并将其设置为发送到 FCM 的应用程序服务器中的“高”,但无济于事。将数据消息发送到相应应用当前未运行的 android 设备的正确方法是什么?这可能吗?
我的服务器代码(在 golang 中)看起来像这样,它希望片段有意义:
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
logger.Info("Error initializing app: %v\n", err)
os.Exit(-536870136) /// -536870136 = 0xE0000308 is ERR_INOTE_FCM_FAILED_APP_INITIALIZE
}
// Obtain a messaging.Client from the App.
ctx := context.Background()
client, err := app.Messaging(ctx)
if err != nil {
logger.Info("Error getting Messaging client: %v\n", err)
os.Exit(-536870137) /// -536870137 = 0xE0000307 is ERR_INOTE_FCM_FAILED_GET_MESSAGING_CLIENT
}
message := &messaging.Message{
Data: map[string]string{
"NotificationType": "Push",
"E2E": strEncrypted,
"IV": strIV,
"Key": strSessionKey,
"Signature": strSignature,
},
Token: registrationToken,
}
// Send a message to the device corresponding to the provided
// registration token.
response, err := client.Send(ctx, message)
if err != nil {
logger.Info(err)
os.Exit(-536870138) /// -536870138 = 0xE0000306 is ERR_INOTE_FCM_FAILED_SEND
}
任何帮助表示赞赏,
-- 斯蒂芬
【问题讨论】:
标签: android push-notification firebase-cloud-messaging firebase-notifications