无法获得缺少的 gcm 推送通知

Posted

技术标签:

【中文标题】无法获得缺少的 gcm 推送通知【英文标题】:Could not get missing gcm push notification 【发布时间】:2017-01-18 05:24:21 【问题描述】:

我正在将 gcm 推送通知从 php 发送到 cordova 应用程序。当用户移动连接到互联网时,它运行良好。如果用户手机在 4 小时内没有连接到互联网,并且在此期间我的服务器正在发送 5 个通知。在连接到互联网时,用户必须收到 5 个丢失的通知,但没有收到任何通知。我在cordova应用程序中使用phonegap-plugin-push 1.6.4“PushPlugin”提前谢谢。

PHP 代码

            $registrationIds = array($to);
    $msg = array
        (
        'notId' => rand(1, 999999),
        'message' => $message,
        'title' => $title,
        'vibrate' => 1,
        'sound' => 1
    );
    $fields = array
        (
        'registration_ids' => $registrationIds,
        'data' => $msg
    );
    $headers = array
        (
        'Authorization: key=' . API_ACCESS_KEY,
        'Content-Type: application/json'
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    $result = curl_exec($ch);
    curl_close($ch);

科尔多瓦 JS 代码

      var push = PushNotification.init("android": "senderID": appsenderid, "alert": true, "badge": true, "sound": true,
    "ios": "alert": "true", "badge": "true", "sound": "true", "windows": );

push.on('registration', function (data) 
    //alert(data.registrationId);
    register_device(data.registrationId);
);

【问题讨论】:

【参考方案1】:

也许消息只是延迟了。请注意,当设备重新连接到互联网时,message to arrive 最多可能需要 15 分钟。如果设备离线,一旦重新连接,它将收到所有待处理的通知。如果注册 ID 错误或任何其他错误,Google 会返回相应的响应。

检查thread 和tutorial 是否有帮助。

【讨论】:

但我从来没有收到待处理的通知

以上是关于无法获得缺少的 gcm 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

QuickBlox:无法使用 REST api 获得推送通知

无法从 Urban Airship 获得推送通知

如何在 Android + GCM 中获得带有声音 + 自定义应用程序图标的推送通知

仅接收来自 GCM 的最后一个后台静默推送通知

推送通知错误 - 缺少注册

React本机推送通知,GCM服务器返回401