我正在为我的课程项目开发一个小应用程序(类似于Snapchat),允许用户发送和接收图片和视频。我正在使用一个名为Parse的BaaS,它使用GCM来传递推送通知。然而,问题是,我的校园使用代理网络,由于许多应用程序无法工作(WhatsApp,Instagram),而一些应用程序(Snapchat)工作,但它们的通知没有送达。我的应用程序也是如此。
假设我对代理网络没有任何影响,而蜂窝网络没有选择,有没有可能解决这个问题?

发布于 2014-12-23 22:30:59
这完全取决于您的园区网络访问策略。如果您的校园代理防火墙不提供对这些站点的访问,则无法执行此操作。但是,您可以要求它们允许这些URL通过其代理防火墙。
或者,您可以简单地通过在代码中添加行来使用其他外部代理服务器
System.setProperty("https.proxyHost", "<IP>"); System.setProperty("https.proxyPort", "<Port>");
您正在尝试连接Google API的位置。比方说,如果你正在使用这样的东西,
URL url = new URL("https://android.googleapis.com/gcm/send");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "key="+<your api key>);在尝试连接到Google API的这些行之前,添加代理设置行,即以上两行。此外,尝试使用您的园区代理以及其他一些外部代理,您将会知道问题是否与您的园区代理有关。
试试这个,希望这对你的问题有帮助。!
发布于 2014-12-21 06:38:07
使用这样的东西,
import com.google.android.gcm.server.Sender;
public class ProxySender extends Sender {
public ProxySender(String key) {
super(key);
// TODO Auto-generated constructor stub
}
@Override
protected HttpURLConnection getConnection(String url) throws IOException {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("<YOUR SERVER IP>", YOUR PORT));
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(proxy);
return conn;
}
}发布于 2014-12-26 19:35:10
根据谷歌,为了正确地接收GCM,我们必须打开几个端口。详细信息如下:
“如果您的组织具有限制进出Internet的流量的防火墙,您需要将其配置为允许与GCM连接,以便您的Android设备可以接收消息。要打开的端口为:5228、5229和5230。GCM通常只使用5228,但有时也使用5229和5230。GCM不提供特定IP,因此您应该允许防火墙接受到Google ASN 15169中列出的IP块中包含的所有IP地址的传出连接。”
您是否正在尝试通过parse SDK发送GCM?您是否能够访问这些URL?
https://stackoverflow.com/questions/27546757
复制相似问题