我们的Android应用程序正在现场使用2000多台设备。这是一个企业应用程序,未在Google Play上发布,我们正在通过这些设备管理我们的运营。对我们来说最重要的一点是:我们所有的客户端Android设备都落后于代理。 (我们已经对Firebase文档警告采取了所有操作警告"如果您的组织有防火墙......")
我们正在测试将FCM调整到我们的应用程序以接收通知。我们正在使用HTTP协议,将Post请求发送到https://fcm.googleapis.com/fcm/send URL地址,因此我们选择下游HTTP消息(JSON),我们通过Postman和我们的.Net桌面应用程序发送数据消息。当设备通过独立WiFi连接到Internet时,Firebase云消息传递通知功能正常。当设备通过移动网络运营商SIM卡(无代理)连接到Internet时,它也能正常工作。但是这些方法对我们来说不是解决方案,因为我们所有的设备都在代理之后工作。
Firebase云消息传递通知是否无法在代理后面的设备上运行?我发现了一些关于FCM和代理设备背后的坏消息,但我不确定。我们想要使用FCM通知,但第三方额外的应用程序对我们来说不是一个好的解决方案。因为我们在现场管理太多设备,我们也有安全问题。有没有其他解决方案可以解决有关代理的问题?
答案 0 :(得分:2)
我收到了Firebase支持小组关于此问题的回复。答案如下:
请注意,FCM目前不支持代理,但是我们 将注意到这一点,我们可以考虑向前推进。一世 不能给你一个明确的时间表,请放心 反馈已得到承认。我们一直致力于提供 开发人员更友好的体验因此您的投入很大 赞赏。
我们已经花了一些时间与我们的应用开发和网络团队讨论此代理问题。请注意,FCM目前不支持代理。我希望将来可以支持Proxy,因为FCM有很多好处。
答案 1 :(得分:1)
如果您采取了if your organization has a firewall
中描述的操作
然后设备应该能够接收消息
https://firebase.google.com/docs/cloud-messaging/server#response
请注意,这些操作必须在设备所连接的网络中进行,而不是在发送通知的网络中进行。
答案 2 :(得分:0)
请注意,自2019年起,Firebase至少在Java或Node.js上具有某些代理支持,请参见此文章:https://medium.com/faun/firebase-accessing-firestore-and-firebase-through-a-proxy-server-c6c6029cddb1
万一Link断开了,这是Java配置的示例,所有功劳归功于Hiranya Jayathilaka,他写了这篇很棒的教程(非常感谢!)
String myProxyHost = "localhost"; // REPLACE
int myProxyPort = 3128; // REPLACE
InetSocketAddress address = new InetSocketAddress(myProxyHost, myProxyPort);
HttpTransport transport = new NetHttpTransport.Builder()
.setProxy(new Proxy(Proxy.Type.HTTP, address))
.build();
FirebaseOptions.Builder builder = new FirebaseOptions.Builder();
builder.setHttpTransport(transport);
// ... further configuration ...