相关疑难解决方法(0)

Google Cloud Messaging(GCM)使用哪种端口和协议?

Google Cloud Messaging(GCM)使用哪种端口和协议?

我们经历过一些消息无法通过的事情,并且已经注意到它取决于我们坐在哪个网络上.

android push-notification google-cloud-messaging

23
推荐指数
1
解决办法
4万
查看次数

Google Cloud Messaging无法在公司网络上使用4.1.2设备

我已经实现了一个简单的GCM客户端和服务器.客户端使用当前的GCM客户端API(而不是已弃用的帮助程序库).服务器(C#和.NET)遵循相应的服务器准则(使用HTTP).我的服务器在公司域内的计算机上运行,​​因此我将客户端设备连接到公司网络内的Wi-Fi接入点,但可以访问Internet.

简而言之,我的问题是在4.3+手机上收到通知,但在连接到公司Wi-Fi网络时,4.1.2手机上从未收到通知.如果我将4.1.2设备连接到我们的公共访客Wi-Fi网络,则会按预期接收GCM消息,但该应用程序无法连接到公司服务器.

我看到一些迹象表明,当公司网络具有过度保护的防火墙时,GCM可能会失败(例如此处).但如果它只是一个防火墙问题,那么4.3+设备肯定不会收到任何消息?

一些额外的细节

我的测试手机如下:

  • 华硕Nexus 7(4.4.2)
  • 三星Galaxy S4(4.4.2)
  • HTC One(4.3)
  • 三星Galaxy S3(4.1.2)
  • 摩托罗拉Razr HD(4.1.2)

服务器已从所有五个设备接收到有效的注册ID.在一个15秒的计时器上,它发出一条发往所有五个注册IDS的消息.响应始终显示发送了5条消息,没有错误,也没有更改注册ID.但是,它始终在上面列出的前三个设备上接收,而从不在最后两个设备上接收(运行4.1.2).当我调试它们时,根本没有调用广播接收器.

我还验证了所有五种设备:

  • 拥有Google Play服务4.3.25
  • 没有SIM,因此没有蜂窝数据,并且在同一个WiFi网络上
  • 有正确的日期和时间
  • 已在同一Gmail测试帐户中注册
  • 我正在运行相同版本的客户端应用
  • 为其Google帐户启用所有同步设置

networking android google-cloud-messaging

7
推荐指数
1
解决办法
5316
查看次数

如何诊断GCM结果为"成功"但未到达设备的通知

这实际上是我发布的另一个问题的延续,除了现在我正在使用Azure的推送通知遥测,Google在Play控制台中停止了FCM诊断.

我收到用户的报告称他们没有收到通知.但Azure遥测会显示这些结果,即使对于这些通知:

"GcmOutcomeCounts": {
    "Outcome": {
        "Name": "Success",
        "Count": "1"
    }
}
Run Code Online (Sandbox Code Playgroud)

Crashlytics没有显示崩溃,所以我唯一想到的就是调用日志API来查看它失败或停止工作的地方,但在这种情况下它甚至都没有到达应用程序.

必须有一种方法来确定通知失败的确切位置和原因.它是什么?

android azure push-notification firebase-cloud-messaging

7
推荐指数
1
解决办法
299
查看次数

Google Cloud Messaging 服务器的 IP 地址

我即将在服务器上推出 GCM 的实现,需要通过 IP 打开适当的防火墙。

有谁知道我在哪里可以找到 android.googleapis.com 的 IP 地址范围?

谢谢!

android google-cloud-messaging

5
推荐指数
1
解决办法
2万
查看次数

为什么GCM没有在Android设备上发出推送通知?

我是Android新手,并为gcm推送通知做一个演示应用程序.

我已经开发了所有这些代码,并且GCM推送通知正在我的环境中的设备上出现,但是当我在其他网络设备中测试此代码获得注册ID时,但是当向云发送消息时服务器端获得不匹配的发送者ID响应.我的代码如下:

        checkNotNull(CommonUtilities.SENDER_ID, "SENDER_ID");

    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);

    setContentView(R.layout.activity_push_android);
    mDisplay = (TextView) findViewById(R.id.display);

    final String regId = GCMRegistrar.getRegistrationId(this);
    Log.i(TAG, "registration id =====  " + regId);

    if (regId.equals("")) {
        GCMRegistrar.register(this, CommonUtilities.SENDER_ID);
    } else {
        // Device is already registered on GCM
        if (GCMRegistrar.isRegisteredOnServer(this)) {
            // Skips registration.
            Toast.makeText(getApplicationContext(),
                    "Already registered with GCM", Toast.LENGTH_LONG)
                    .show();
        } else {
            // Try to register again, but not in the UI thread.
            // It's also necessary to cancel the thread onDestroy(),
            // hence the use of AsyncTask …
Run Code Online (Sandbox Code Playgroud)

android google-cloud-messaging

2
推荐指数
1
解决办法
4980
查看次数