GCM推送通知不通过代理

时间:2014-12-18 12:36:06

标签: android proxy parse-platform push-notification google-cloud-messaging

我正在为我的课程项目开发一个小应用程序(类似于Snapchat),允许用户发送和接收图片和视频。我使用名为Parse的BaaS,它使用GCM来发送推送通知。然而,问题是我的校园使用代理网络,因为许多应用程序不起作用(WhatsApp,Instagram),而一些应用程序(Snapchat)工作,但他们的通知没有交付。我的应用也是如此。

有没有办法克服这个问题,假设我对代理网络没有任何影响,而且蜂窝网络没有​​选择。

enter image description here

3 个答案:

答案 0 :(得分:4)

这完全取决于您的校园网络访问策略。如果您的校园代理防火墙不提供对这些站点的访问,则无法执行此操作。但是,您可以要求他们通过代理防火墙允许这些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的这些行之前,添加代理设置行,以上两行。此外,尝试使用您的校园代理以及其他一些外部代理,您将了解问题是否与您的校园代理有关。

试试这个,希望这对你的问题有帮助.. !!!!!

答案 1 :(得分:2)

使用像这样的东西,

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;

}
}

答案 2 :(得分:2)

根据谷歌的说法,为了正确接收GCM,我们必须打开几个端口。详情如下,

“如果您的组织有防火墙限制进出互联网的流量,您需要将其配置为允许与GCM连接,以便您的Android设备接收消息。要打开的端口是:5228,5229, GCM通常仅使用5228,但它有时使用5229和5230. GCM不提供特定的IP,因此您应该允许防火墙接受到Google的ASN中列出的IP块中包含的所有IP地址的传出连接15169 。“

您是否尝试通过解析SDK发送GCM? 你能访问这些网址吗?