Go语言 使用Firebase进行通知,获取`应用示例已注销`

ghhaqwfi  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(97)

尝试使用Firebase进行跨平台的移动的通知。获取设备令牌的客户端代码似乎可以工作,因为我们可以从Firebase Web控制台发送通知。但是我不知道如何从我们的服务器发送通知。在下面的Go代码片段中调用messagingClient.Send时,我们得到错误:app instance has been unregistered; code: registration-token-not-registered; details: Requested entity was not found

ctx := r.Context()
    opt := option.WithCredentialsFile("serviceAccountKey.json")
    app, err := firebase.NewApp(context.Background(), nil, opt)
    if err != nil {
      return err
    }

    // Obtain a messaging.Client from the App.
    messagingClient, err := app.Messaging(ctx)
    if err != nil {
      return err
    }
    // See documentation on defining a message payload.
    message := &messaging.Message{
      Notification: &messaging.Notification{
        Title: "Notification title",
        Body:  "Notification body",
      },
      Token: myDeviceToken,
    }

    // Send a message to the device corresponding to the provided
    // registration token.
    response, err := messagingClient.Send(ctx, message)
    if err != nil {
      return err
    }

字符串
我们正在使用的凭据文件来自Firebase控制台,位于“设置”、“服务帐户”、“Firebase Admin SDK”下。

8ehkhllq

8ehkhllq1#

根据FCM错误代码的文档,registration-token-not-registered表示:
提供的注册令牌未注册。由于各种原因,可能会取消注册以前有效的注册令牌,包括:

  • 客户端应用程序已从FCM注册。
  • 客户端应用程序已自动注销。如果用户卸载应用程序,或者在iOS上,如果APNS反馈服务报告APNS令牌无效,则可能会发生这种情况。
  • 注册令牌已过期。例如,Google可能决定刷新注册令牌,或者iOS设备的APNS令牌可能已过期。
  • 客户端应用程序已更新,但新版本未配置为接收消息。

对于所有这些情况,请删除此注册令牌并停止使用它发送消息。
鉴于这里有几种可能性,我们真的不可能说它是哪一个。如果您需要帮助与FCM故障排除,请contact Firebase support directly与准确的步骤,任何人都可以采取重现问题。

yvt65v4c

yvt65v4c2#

在我的情况下,它从页面中删除通知权限并再次请求它们,这导致生成一个新的令牌,它不再给出该错误。
我希望帮你

相关问题