【问题标题】:GCM push notifications not coming through proxyGCM 推送通知不通过代理
【发布时间】:2014-12-18 12:36:05
【问题描述】:

我正在为我的课程项目开发一个小应用程序(类似于 Snapchat),它允许人们发送和接收图片和视频。我正在使用一个名为 Parse 的 BaaS,它使用 GCM 来传递推送通知。但是,问题是我的校园使用代理网络,因此许多应用程序(WhatsApp、Instagram)无法运行,而某些应用程序(Snapchat)可以运行,但未发送通知。我的应用也是如此。

假设我对代理网络没有任何影响并且蜂窝网络无法选择,是否有任何可能的方法来克服这个问题。

【问题讨论】:

  • 所以你有发送推送通知的应用程序吗?
  • 没错。我的应用程序向已发送消息的用户发送推送通知。通知他们有新消息。

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


【解决方案1】:

这完全取决于您的校园网络访问策略。如果您的校园代理防火墙不提供对这些站点的访问,您将无法做到这一点。但是,您可以要求他们允许这些 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 的这些行之前,添加代理设置行,即上述两行。此外,尝试使用您的校园代理以及其他一些外部代理,您会知道问题出在您的校园代理与否。

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

【讨论】:

  • 假设我的校园网没有明确阻止访问谷歌API,如果我添加这两行,我就可以使用它们了吗?
  • 我刚刚在我的校园里尝试过这种方法,它失败了。
  • 您得到什么错误或响应,来自 Google API 的响应或 Http 错误?
【解决方案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;

}
}

【讨论】:

  • 这似乎是我问题的答案,但我无法实现它。它是如何工作的?把这段代码放在哪里,它已经过时了吗?请提供一些文章...
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多