【问题标题】:Where to find Reference_Ids for Firebase Cloud Messaging?在哪里可以找到 Firebase 云消息传递的 Reference_Id?
【发布时间】:2016-12-22 17:24:43
【问题描述】:

经过大量阅读和谷歌搜索后,我似乎已经为 Google Cloud Messaging 完成了发送推送通知的设置。我缺少的链接是我必须用来定位应用程序的 Reference_Ids。我创建了一个项目并将我的应用程序添加到其中。

当我向 GCM 发送推送请求时,我收到以下响应:

{"multicast_id":7952352701122753715,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
    StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
    {
      X-Content-Type-Options: nosniff
      X-Frame-Options: SAMEORIGIN
      X-XSS-Protection: 1; mode=block
      Alt-Svc: quic=":443"; ma=2592000; v="35,34"
      Vary: Accept-Encoding
      Transfer-Encoding: chunked
      Accept-Ranges: none
      Cache-Control: max-age=0, private
      Date: Wed, 21 Dec 2016 16:12:43 GMT
      Server: GSE
      Content-Type: application/json; charset=UTF-8
      Expires: Wed, 21 Dec 2016 16:12:43 GMT
    }

错误显示为“InvalidRegistration”

所以我的问题是:

  • 在哪里可以找到我的注册 ID?
  • 作为一个相关的后续问题,我在哪里可以找到每个使用应用程序或特定组或用户的 Registration_Id?

顺便说一句:我找到了一个相关的问题,但似乎没有关于在哪里可以找到这些 ID 的答案。 StackOverflow post.

【问题讨论】:

  • 表示您的服务器 API 密钥或用户的 Token
  • @Divyesh 我使用我的服务器 API 密钥来验证请求,所以我无法想象我也必须使用它来定位应用程序,对吧?
  • 如何发送推送?控制台还是 php?
  • 确保您的 API 密钥在 ASP 服务器中是正确的,并且 FCM 最近将 API ley 更改为 TOken,因此请尝试
  • @Mr.Blonde 发送给多个用户时,您可以使用registration_ids 参数、主题消息或设备群组消息。见here

标签: android firebase firebase-cloud-messaging


【解决方案1】:

InvalidRegistration表示你使用的注册令牌(registration id)无效(不存在,格式错误):

检查您传递给服务器的注册令牌的格式。确保它与客户端应用通过 Firebase 通知注册收到的注册令牌相匹配。不要截断或添加其他字符。

确保您使用正确且对应的注册令牌到您打算向其发送消息的设备。对于测试,我建议也使用Firebase Console,以便您可以从那里查看错误是否仍然存在。

对于Android,您可以通过拨打电话retrieve the registration token

FirebaseInstanceID.getToken()

然后您可以选择将令牌存储到您的应用服务器。

【讨论】:

  • 您发布的示例代码我想是在设备上运行的。因此,如果我需要通知特定用户,每个设备都需要在第一次运行时在我的网络服务器中注册他们的令牌,然后我可以使用令牌进行通知 - 对吗?或者我可以直接从 Firebase 服务器获取令牌吗?
  • @Mr.Blonde 是的。注册 ID(又名注册令牌)在客户端应用程序端生成。之后您必须将令牌发送到您的应用服务器。
  • 对于阅读此问题的任何人,我可以确认将令牌发送到网络服务器然后将其用作registration_id 的建议方法有效。我确实觉得 API 中有几个词表示同一事物有点令人困惑。
【解决方案2】:

您应该使用 Api server_key 。

转到firebase 控制台 -> 点击你的项目 -> 点击齿轮图标 -> project_setting -> cloud_messaging

【讨论】:

  • 使用服务器 API 密钥,将针对我项目中所有应用的所有用户,对吗?
  • 这并没有真正提供问题的解决方案。 使用服务器密钥如何帮助解决 InvalidRegistration 错误?
  • @AL - 它确实消除了错误。但我不确定通知的去向。我想象项目中的所有应用程序,我想更具体地定位。
  • @Mr.Blonde 是吗?怎么会这样?如果 sohan shetty 能提供更多详细信息来解决这个问题,将会很有帮助。 AFAIK,服务器密钥用于消息的身份验证,并且拥有InvalidRegistrationError 并没有真正混淆它。
  • Api server _key 用于将您的设备和本地服务器与云连接,如果您想针对特定设备,那么您应该使用注册 ID,您将从客户端获取并发送到您的本地服务器
猜你喜欢
  • 2016-09-17
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多