我无法理解如何将消息从iOS设备发送到另一台iOS设备,并尝试了解Firebase Notifications与Google Cloud Messaging之间的区别 .
Firebase Notifications 说服务器可以向设备发送消息 .
Google Cloud Messaging: 它从服务器向设备(下游)或设备向服务器(上游)发送消息!!
上游示例:
[[FIRMessaging message]sendMessage:(nonnull NSDictionary *)message
to:(nonnull NSString *)receiver
withMessageID:(nonnull NSString *)messageID
timeToLive:(int64_t)ttl;
如果我需要从设备发送推送消息怎么办!这是否意味着在设备向服务器发送消息后,我必须对firebase服务器进行编程以将推送发送到客户端?它真的很混乱!
2 回答
不,你不能在使用firebase的iOS上做到这一点,你应该做的是在你的firebase上调用一个服务,它会向另一个设备发送通知 . APNS和GCM在服务器设置方面略有不同 .
对于GCM,您只需要在对https://android.googleapis.com/gcm/send进行的POST调用中添加API密钥,这可以在服务器,移动设备等任何地方进行 . 您只需要目标设备设备令牌和API密钥 .
APNS的工作方式不同,您需要附加在Apple开发人员门户上创建的服务器SSL证书,以对自己进行身份验证并向设备发送推送通知 . 我不确定如何在iOS设备上实现这一点 .
该主题阐明了GCM和Firebase之间的真正区别,
Real-time Push notifications with Firebase
https://firebase.google.com/support/faq/#gcm-not
Firebase和GCM不同,但它们可用于实现相同的目标 . 希望它能帮到你 .
我认为Firebase目前不具备处理此方案的能力 . 您需要一些服务器端代码来处理它 . 要么你可以得到托管和像一个PHP endpoints ,可以用来合并
代码并使其工作,或者您需要找到可以作为后端的其他服务 .
https://techcrunch.com/2016/02/02/batch-now-integrates-with-firebase-to-create-a-parse-alternative/
这个Batch.com公司似乎是迄今为止我发现的最佳解决方案 . 我已经能够让用户设备将json有效负载发送到其服务器上的 endpoints ,然后将定制的推送通知发送到特定的目标设备 . 看起来Batch特别是Push Notification公司,似乎免费的基本计划足以处理你所需要的东西,对于Parse如何运作起到了很好的作用 .
这是我为发送推送通知Objective C编写的实际代码 . (还可以从Batch.com下载Swift 2和Swift 3示例)
批量很容易安装Cocoa Pods .
我还使用此代码来使其工作:
在app委托中:
在didFinishLaunching中:
然后在app委托:
这就是你如何做到这一点,除了设置和安装的东西,这些都在Batch.com网站上解释 .
一旦从firebase获得令牌,您基本上就在Batch with上注册它
在App Delegate中 . 然后,当您希望用户device1将Push发送到另一个设备2时,假设您已经以某种方式将device1的自定义ID发送到device2,您可以使用该自定义ID将推送通知有效负载发送到Batch.com的API,Batch将处理服务器苹果APN的副作用,你的推送通知出现在device2上 .