繁体   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