簡體   English   中英

Appcelerator / Titanium:獲取Android憑據以推送通知

[英]Appcelerator/ Titanium: Getting Android credentials to push notifications

我希望能夠在Android上使用Titanium發送推送通知。 但是,每當嘗試此操作時,我都會遇到一個后端錯誤,我認為這與無效憑據有關。 我嘗試關注文檔,但它們似乎已過時。

這是我所做的:

  1. 我去了Google API管理器並啟用了“ Google Cloud Messaging”。
  2. 在“憑據”>“ OAuthConsentScreen”下,我添加了電子郵件,產品名稱和網址
  3. 在“憑證”>“創建憑證”>“ OAuthClientID”>“ Web應用程序”下,給它命名,並將一些URL放在“授權JavaScript”來源(如localhost)下。 這是否需要具體說明,因為文檔中未提及。
  4. Google然后給我一個客戶ID和一個客戶機密。 這是文檔過時的地方

    • 客戶端ID的格式為: 123456789012-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com
    • 客戶機密的格式為: XXXXXXXXXXXXXXXXXXXXXXXX
  5. 然后,我導航到Appcelerator儀表板中的推送通知部分,然后單擊“ Android Cloud Messaging”。 注意,根據文檔,我應該:

在“ GCM API密鑰”字段中輸入服務器密鑰,在“ GCM發送者ID”字段中輸入GCM發送者ID

但是,現在雙方的領域都不同。 因此,我將以下內容從Google復制到了Appcelerator:

  • Google對Appcelerator服務器密鑰的客戶端機密
  • Google的客戶端ID到Appcelerator的服務器ID

/

  1. 然后,我使用建議的CloudPush模塊將我的Andriod設備訂閱了一個頻道(工作正常)

  2. 但是,當要從Appcelerator儀表板發送通知時,Android設備旁邊會出現“失敗”字樣。

推送通知時出錯

突出顯示“?”時的完整錯誤消息 圖標如下:

異常類型:GCM; 錯誤代碼:3103; 錯誤消息:RegistrationId為空或為空; 捕獲的異常:參數不能為空

我在http://docs.appcelerator.com/arrowdb/latest/#!/guide/疑難解答中查找了此錯誤,它的意思是:

GCM客戶端提供了一個空或空的注冊ID。 如果使用的是Modules.CloudPush模塊,此錯誤很少見。

這沒有幫助。

我究竟做錯了什么? 我認為我輸入的憑證有誤,但不確定如何。

我使用的文檔如下:

配置推送服務

訂閱推送通知

模塊.CloudPush

謝謝!

UPDATE

經過大量建議后,我通過轉到“創建憑據”>“ API密鑰”創建了另一組憑據。 這給出了一個新的密鑰,格式為XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 然后,我使用了:

  • Google的Appcelerator服務器密鑰的API密鑰
  • Google的項目編號(格式為123456789012 ),用於Appcelerator的服務器ID

但是仍然出現完全相同的錯誤。

更新2

在閱讀了另一個Stack Overflow答案( Appcelerator Titanium Android推送通知GCM失敗? )之后,我決定將應用程序鏈接到Firebase。 在Friebase儀表板上,我轉到“ Cog”>“項目設置”>“ Cloud Messaging”。

它顯示了發件人ID(與項目編號完全相同)和不同的服務器密鑰。

使用這些憑據時,發送推送通知時會出現一個略有不同的錯誤:

異常類型:GCM; 錯誤代碼:3006; 錯誤消息:registration_id中包含的sender_id與用於向GCM服務器注冊的sender_id不匹配

我終於設法使它起作用。 基本上,文檔已經過時了。

我設法使其運行的方法是將應用程序鏈接到Firebase 從那里我去了“齒輪/設置”>“雲消息傳遞 ”。

這將顯示您的“發件人ID” (與您的項目編號相同)。 對我來說,這是一個12位數字。

該頁面還顯示了服務器密鑰舊服務器密鑰 使用哪一個似乎無關緊要。

如果您在推送通知時仍然收到以下錯誤:

異常類型:GCM; 錯誤代碼:3006; 錯誤消息:registration_id中包含的sender_id與用於向GCM服務器注冊的sender_id不匹配

只需卸載該應用程序並重建它。

邊注:

將您的應用程序鏈接到Firebase會在您的Google Console API憑據頁面中自動創建很多API密鑰,例如“ ____ key(由Google Service自動創建) ”。

“舊版服務器密鑰”似乎與以下名稱相匹配: 服務器密鑰(由Google Service自動創建)

請注意,僅自己創建一個API密鑰似乎無效。 它必須是與Firebase關聯的API密鑰。

完成此操作后,我創建了一個API密鑰,而不是OAuth客戶端ID。 與您擁有的屏幕相同,但是從“創建憑據”下拉列表中選擇“ API密鑰”。

這是我的筆記中的一個片段:

創建一個Google API項目

第一步是創建一個Google API項目並啟用其GCM服務。 您還需要獲取GCM發送者ID並創建Google API服務器密鑰。

從此處創建/編輯項目: https : //console.developers.google.com/project

創建完畢后,點擊左上方的漢堡菜單,然后將鼠標懸停在API管理器上,然后選擇憑據

在“憑據”選項卡上,單擊“創建憑據”,然后選擇“ API密鑰”

復制並將其粘貼到Arrow儀表板中

單擊漢堡菜單-IAM和管理->設置復制項目編號-將其粘貼到Arrow儀表板

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM