【问题标题】:How to configure Android Push Notifications (GCM) in Appcelerator Titanium Dashboard?如何在 Appcelerator Titanium Dashboard 中配置 Android 推送通知 (GCM)?
【发布时间】:2016-04-25 21:27:29
【问题描述】:

我已尝试按照说明进行操作

Configuring push services for Android devices

但是,这些步骤提到“左侧导航中的单击推送通知”,但它们不存在...

创建启用 GCM 的 Google API 项目后,您需要使用您生成的 API 密钥和发件人 ID 更新应用程序在仪表板中的设置页面。

使用 Dashboard 为推送通知配置 Arrow:

打开仪表板并从应用程序下拉菜单中选择您的应用程序。

点击左侧导航中的推送通知。

选择 Android 推送选项卡。

在 GCM API 密钥字段中输入服务器密钥,在 GCM 发件人 ID 字段中输入 GCM 发件人 ID。

这是一个显示列出内容的屏幕截图...

如果我在 Arrow 下(我怀疑它可能会被列出)是空的(我没有使用 Arrow - 我认为它是使用声明性 XML 的替代 UI)...

我检查了我正在订阅的(独立),它表明我应该能够免费发送多达 100 万条推送通知。

有谁知道我如何将 Appcelerator Titanium 项目与 GCM 服务器密钥相关联??

另外,当我查看 Google 的开发者控制台时,我的应用程序(在他们的应用商店中已上线)并未列出,因此我创建了一个名为“Gcm”的新应用程序。 Appcelerator Titanium 似乎确认我需要“创建”应用程序,我只是太担心无法将其与实时应用程序同名。 “Google Developer Console”应用程序与“Google Play”应用程序有何关系?! - 如果有的话?

更新

我刚刚在 TiApp.xml 中发现我可以启用一些“云”设置,这已经解锁了“推送”菜单 - 所以我认为现在一切都很好,有人可以确认这是正确的做法吗并回答我关于 Google Play 应用程序与谷歌开发者控制台应用程序的相关问题?

更新 2

我开始收到此错误

[错误]:GooglePlayServicesUtil:Google Play 服务资源 没有找到。检查您的项目配置以确保 资源包括在内。 [信息]:CloudPush.retrieveDeviceToken 错误:INVALID_SENDER

我只是调用它来尝试注册 Android 推送通知...

CloudPush.retrieveDeviceToken({
                success : function(e) {
                    console.info("CloudPush.retrieveDeviceToken success");
                },
                error : function(e) {
                    console.info("CloudPush.retrieveDeviceToken error:"+e.error);
                }
            });

我尝试过使用和不使用 ti.cloud 模块(我认为它是在我单击“启用服务”按钮时添加的,这意味着我可以看到“推送通知”选项卡,但它似乎仍然列出是否the ti.cloud module is elected or not)..

之前..

Q - 如何停止 Google Play 错误并检索设备令牌(奇怪的是我在启用服务之前获取了令牌。

Q - ti.cloud 是否用于接收推送通知,或者 ti.cloudpush 是否足够?

【问题讨论】:

  • 我提出这张票已经有一段时间了,但我记得我输入了错误的 GCM 代码,最后我在网上找到另一篇文章指出这应该是一个数字,谷歌移动到哪里显示出来了。

标签: google-cloud-messaging appcelerator appcelerator-titanium


【解决方案1】:

感谢您提供详细的问题 :) 让我谈谈您提到的一些事情并澄清我能做的事情。

如果我查看箭头下方(我怀疑它可能会被列出),那是空的

您后来发现您必须为您的应用启用平台服务,这将创建一个与您的应用同名的 ArrowDB 应用。此应用程序将在侧边栏中配置推送通知。我已经 updated 指南的措辞明确我们指的是 ArrowDB 应用程序,而不是 Titanium 应用程序。

(我没有使用 Arrow - 我认为它是使用声明性 XML 的替代 UI)...

不要将 Arrow 与 Alloy 混淆 - 这是 Titanium 的 MVC 框架,它确实使用了 XML。

“Google Developer Console”应用程序与“Google Play”应用程序有何关系?! - 如果有的话?

它没有。您甚至可以让多个应用共享同一个 GCM 发件人。

[错误]:GooglePlayServicesUtil:未找到 Google Play 服务资源。

你用什么来测试的?一个没有安装 Google Apps 的 Genymotion 模拟器?你需要那个。

ti.cloud 是否用于接收推送通知,或者 ti.cloudpush 是否足以满足此要求?

ti.cloud 是与 ArrowDB 通信、订阅频道等的模块。在 Android 上,您需要 ti.cloudpush(或 @Shawn 提到的另一个模块)来检索设备令牌,而在 iOS 上,您可以为此使用 Ti. API。按照this guide 进行所有步骤。

【讨论】:

  • 谢谢@Fokke 我用的是实体设备,三星 S5。我成功地测试了一个推送通知,使用 Amazon SNS 将有效负载发送到 Google GCM。但是,我随后终止了该应用程序,发送了相同的消息,但它没有到达。我是否遗漏了什么,但无论应用程序是否正在运行,iOS 推送通知都有效。
  • 如果你使用ti.cloudpush,那么推送通知应该会到达,除非你强制终止应用程序,这也会杀死模块注册的后台广播接收器。这是一种 Android 行为。如果您只是将应用程序移到后台后没有收到通知,那么这是一个错误。
  • 更新@Fokke - 我终于完成了集成,只是在 Google GCM 页面上看到它已被 Firebase Cloud Messaging (FCM) 淘汰,这很典型!无论如何,感谢您的所有帮助,它现在运行良好。我有一个小问题,我需要将 AWS 示例从发送“消息”属性更改为“有效负载”,否则应用程序在后台运行时会崩溃。顺便说一句 - 有没有办法在没有像 iOS 那样运行应用程序的情况下获得推送通知?这是 Android 的东西,还是 Appcelerator Titanium 的东西?
【解决方案2】:

您可以忽略 Google Play 服务错误,但您的 GCM 发件人 ID 和/或 API 密钥似乎有误。通读本教程并确保您输入了正确的内容。

如果您使用 Appcelerator Cloud Service 发送推送通知,您需要 ti.cloud 来注册设备。

要获取设备令牌并接收推送通知,您可以使用 ti.cloudpush。您可以使用其他模块来代替 ti.cloudpush。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2016-04-20
    相关资源
    最近更新 更多