iOS支持Google云消息传递服务

28

我在谷歌开发者控制台中看到GCM允许生成适用于iOS的API密钥。我在网络上搜索了有关如何通过GCM在iOS应用程序中实现推送通知的任何文档,但我没有找到答案。

是否真的可以使用GCM在iOS应用程序中实现推送通知?有文档、示例或可学习的内容吗?


http://stackoverflow.com/questions/33339774/gcm-google-cloud-messaging-for-ios-apps/35546895#35546895#answer-35546895 - abhimuralidharan
8个回答

25

是的

我尝试了它,效果很棒。 按照这个https://developers.google.com/cloud-messaging/ios/start的步骤操作。

以下是它的工作原理。

你需要在Google控制台上创建应用程序条目。在创建向导中上传开发和生产证书。(你需要同时上传两者) 并按照文档中的步骤操作。

逻辑如下

  1. 我们像往常一样从apns请求设备令牌。
  2. 然后我们使用提供的API将该令牌发送到gcm服务。
  3. 然后gcm会返回另一个令牌。
  4. 我们将那个令牌发送到应用服务器。
  5. 应用服务器可以使用该令牌发送通知。

酷炫功能。

iOS的GCM具有一些很酷的功能,例如

  • 订阅基于特定主题的通知。忽略其他通知。

  • 向应用程序内的其他设备发送通知。

如果你想尝试Google示例应用程序。 更新:现在是大写字母G的Google。 只需

pod try Google

在那里,你将会得到一个在ObjC、Swift甚至Mac应用中发送通知的示例。

更新。

Google正在从GCM转移到Firebase云消息


性能方面怎么样?在iOS上保持持久连接有什么缺点吗? - Lizza
我从服务器收到通知消息,但不像APNS那样在导航栏上方显示,那么我该如何处理呢?@MadNik - Anil Prasad
@AnilPrasad,你的意思是“从服务器获取消息,但不像APNS”? - Gajendra K Chauhan
1
数据负载和通知负载在iOS和Android上都适用。在iOS上,不同之处在于通知负载通过APNS发送,而数据负载则通过GCM自己的连接发送,该连接仅在应用程序在前台时存在。因此,如果我想在Android和iOS上同时使用GCM,则负载应该只包含通知吗?还是数据和通知都可以? - abhimuralidharan

17

谷歌现在为iOS推出了Google Cloud平台, 欲了解更多信息请参见他们的博客文章. Google Cloud Messaging现在支持Android和iOS.


5
GCM不支持iOS:Android和iOS都具有相同的功能集,后端管理平台特定技术,例如使用Google云消息传递(GCM)用于Android,以及APNS用于iOS设备。这只是使开发服务器端在iOS和Android上实现推送通知更加简单。 - Eran
4
您说得对,GCM 在 iOS 上不受支持,但是同样的服务器 API 可以与 GCM 或 APNS 进行通信。这使得实施后端服务器的人们的工作变得更加轻松。 - Scott Leslie
2
这个答案有我实际正在寻找的链接,请不要给它投反对票。 - Zsolt Safrany
看起来这个答案中的链接已经过时了,建议使用一个不再受支持的库。我还在搜索中,找到应该使用的库后会回报。 - livingtech
1
当前链接在这里:https://developers.google.com/cloud-messaging/ios/api/gcm/ 更多细节请参考:https://developers.google.com/cloud-messaging/ios/client(通过Sergio Feo的下面回答提供) - livingtech
数据负载和通知负载在iOS和Android上都适用。在iOS上的区别是,通知负载通过APNS发送,而数据负载通过GCM的自有连接发送,该连接仅在应用程序处于前台时存在。所以,如果我想在Android和iOS上都使用GCM,负载应该只包含通知吗?还是数据和通知都可以? - abhimuralidharan

9

谷歌已更新他们的在线文档。您仍需要有效的APNS证书。之后,您的应用程序可以使用iOS GCM API注册GCM。您的通知服务器应该不需要修改即可正常工作。


5

5

4
不错的文章,但是你的描述不准确。这篇文章讲解如何使用Google AppEngine和Apple Push Notification service (APNs)实现推送通知给iOS应用程序。GCM API似乎只适用于Android设备。 - Joaquin Cuenca Abela
1
现在是404错误页面,无论如何。 - Kevin Krumwiede
我如何在不使用 CocoaPods 的情况下使用 GCM? - Gajendra K Chauhan

3

虽然一些Google API可以与iOS一起使用,但GCM仅适用于Android。向iOS设备发送推送通知的唯一方法是通过Apple推送通知系统。谷歌必须支持这一点。

如果您想要向多个平台推送,您可以随时使用像Urban Airship这样的工具。


1
你可以通过链接来改进答案 - shareef
1
数据负载和通知负载在iOS和Android上都适用。在iOS上,不同之处在于通知负载通过APNS发送,而数据负载则通过GCM自己的连接发送,该连接仅在应用程序在前台时存在。因此,如果我想在Android和iOS上同时使用GCM,则负载应该只包含通知吗?还是数据和通知都可以? - abhimuralidharan

1

对于Google Cloud Messaging,回答是否定的。但是可以使用Google Cloud Platform中的Google App EngineGoogle Cloud Endpoints向iOS设备发送推送通知。(请参阅此文档
但是,您肯定需要与Apple Push Notification Service进行通信。完成这项任务肯定比直接使用Apple服务更加复杂。


0

哇,这真的很糟糕。实际上,你需要修改iOS端的客户端才能让它工作!不幸的是,在我的公司这不是一个选项,所以回到Amazon SNS。

这里的想法是,通过Google的实现,你只需要与GCM通信,但是为了发送消息到iOS,那么你的设备必须先与GCM同步传递令牌等信息,因此需要iOS客户端库。

作为Google App Engine的用户,我对此非常兴奋,但这确实让人失望。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接