当应用程序不在前台时,从iOS应用程序向上游发送gcm + gcm用于上载APNs证书的API

时间:2017-06-17 12:13:10

标签: ios swift google-cloud-messaging firebase-cloud-messaging

我有APNs push notification使用gcm库的两个问题。

  1. gcmfcm是否有公开API 才能上传APNs certificates?我需要自动而不是手动执行此操作。

  2. 似乎在gcm中使用iOS app库发送上游,仅在应用处于前台时才有效。这是对的吗?即使应用程序未打开或处于后台,是否有任何解决方法可以向上游发送?我想使用gcm 上游向我的服务器发送点击事件通知,最好立即执行此操作。

    我知道我可以保存此点击事件并在应用变为活动时发送,但用户可能很长时间都无法打开该应用。

1 个答案:

答案 0 :(得分:1)

  

1。 gcm或fcm是否有用于上传APNs证书的公共API?

目前没有用于上传APN证书的公共API。对于FCM(以及任何新项目),只能通过Firebase Console完成。此外,似乎现在使用证书上的APNs身份验证密钥似乎更方便(APNs Overview)。

  

2。似乎在iOS应用程序中使用gcm库发送上游,仅在应用程序位于前台时才有效。这是正确的吗?

是。上游消息传递必须有连接才能工作。

  

即使应用程序未打开或处于后台,是否有任何解决方法可以向上游发送?

AFAIK,没有。正如FCM doc(强调我的)所述:

  

要向服务器上游发送消息,iOS客户端应用程序会编写消息,连接到FCM并调用sendMessage

     

要进行连接,请在shouldEstablishDirectChannel中将YES标记设置为AppDelegate FCM管理连接,当您的应用进入后台时关闭它,并在应用程序被预设时重新打开它。

     

...

     

FCM客户端库将消息缓存在客户端应用程序上,并在客户端具有活动服务器连接时发送该消息。收到消息后,FCM连接服务器会将其发送到应用服务器。

它提到FCM管理连接,但是AFAICT,iOS设备存在此限制,如果应用处于后台/关闭状态,则会限制应用维护正在运行的服务(请参阅此answer)。如果无法建立连接,则上游消息传递将无效。

作为一般惯例,通过FCM传递的数据应尽可能改善用户体验并且不会传递任何关键数据。

  

我知道我可以保存此点击事件并在应用变为有效时发送,但用户可能很长时间没有打开该应用。

这是可能的。但是,用户也不太可能在显示后立即点击推送通知。在这种情况下,通常的操作是用户在仍有打开的连接时立即点击通知。