2016-12-22 30 views
0

經過大量的閱讀和谷歌搜索,似乎我已經完成了Google雲消息傳遞的完整設置以發送推送通知。我缺少的鏈接是我必須用於定位應用程序的Reference_Ids。我創建了一個項目並添加了我的應用程序。哪裏可以找到Firebase 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_Ids?

順便說一句:我找到了一個相關的問題,但它似乎沒有答案,在哪裏可以找到這些ID。 StackOverflow post

+0

這意味着你的用戶 –

+0

@Divyesh的服務器API密鑰或令牌我用我的服務器API密鑰認證的要求,所以我無法想象我必須使用也爲目標的應用程序,對不對? –

+0

你如何發送推送?控制檯或PHP? –

回答

0

InvalidRegistration意味着你使用的註冊令牌(註冊ID)是無效的(不存在,錯誤的格式):

檢查您傳遞給服務器的註冊令牌的格式。確保它與客戶端應用程序從註冊Firebase通知時收到的註冊令牌相匹配。不要截斷或添加其他字符。

確保您正在使用正確且相應的註冊令牌給您要發送消息的設備。爲了測試,我建議也使用Firebase Console,以便您可以從那裏看到錯誤是否仍然存在。

對於Android,您可以通過調用可以retrieve the registration token

FirebaseInstanceID.getToken() 

然後,您可以選擇令牌存儲到您的應用程序服務器。

+0

您發佈的示例代碼我想象在設備上運行。因此,如果我需要通知特定用戶,每個設備需要在第一次運行時在我的網絡服務器中註冊他們的令牌,然後我可以使用令牌進行通知 - 這是否正確?或者我能否直接從Firebase服務器獲取令牌? –

+1

@Blonde Yup先生。註冊ID(即註冊令牌)在客戶端應用程序端生成。之後,您必須將令牌發送到您的應用服務器。 –

+1

對於閱讀此問題的任何人,我可以確認將令牌發送到Web服務器並將其用作registration_id的建議方法有效。我覺得有一點讓人困惑,因爲API中有同樣的詞彙。 –

-1

您應該使用Api server_key。

轉到firebase控制檯 - >點擊您的項目 - >點擊齒輪圖標 - > project_setting - > cloud_messaging

+0

使用服務器API密鑰,將針對我項目中所有應用程序的所有用戶,是否正確? –

+0

這並不能真正爲問題提供解決方案。 *使用*服務器密鑰如何幫助處理InvalidRegistration錯誤? –

+0

@AL - 它確實刪除了錯誤。但我不確定通知的去向。我想象了項目中的所有應用程序,並且我想更具體地針對。 –