适用于 Android 谷歌云消息 (GCM) 的 Azure 移动服务从不向设备发送通知

Posted

技术标签:

【中文标题】适用于 Android 谷歌云消息 (GCM) 的 Azure 移动服务从不向设备发送通知【英文标题】:Azure mobile service for Android Google Cloud message(GCM) never sents notification to device 【发布时间】:2014-05-28 04:07:32 【问题描述】:

xamarian android 项目并不总是收到从 push.gcm.send() 触发的推送消息。广播接收者第一次只调用 onregister(),而不调用 onmessage()。 我的 php 服务器脚本与 https://android.googleapis.com 配合得很好,它调用了广播接收器的 onmessage()。同样具有 azure 移动服务的 Native android 项目使用 push sharp 客户端的行为相同,当 push.gcm.send() 在 azure 服务器中执行时,它不会调用 onmessage()。让我知道我做错了什么,我使用了完美的应用程序密钥,服务器密钥,项目编号,........下面是日志详细信息。我收到状态码 201。

日志条目详细信息:

信息

测试推送通知发送:APA91bELUme4gM35eHBH4dmxo7AVBkmVu6Gsown_8zrROb5SsKzHn7MgpypBirmmDDuyPlr8hRjBDRX2lBc_j9voAPYv2RotXiVTHMaXFRRADu0xNfrPk-G-bCkfsCO7Uv-OnPMW8bgmTHIX8u8exKpGxfSrFZvN8dEDAoC5iw isSuccessful:真, 状态码:201, 身体: '', 标题: '传输编码':'分块', '内容类型':'应用程序/xml;字符集=utf-8', 服务器:'Microsoft-HTTPAPI/2.0', date: '2014 年 5 月 27 日星期二 19:40:00 GMT' , md5: 未定义

输入脚本:

function insert(item, user, request) 
    request.execute(
        success: function() 
            // Write to the response and then send the notification in the background
            request.respond();
            push.gcm.send(item.channel, item.text, 
                success: function(response) 
                    console.log('Push notification sent: ', response);
                , error: function(error) 
                    console.log('Error sending push notification: ', error);
                
            );
        
    );

【问题讨论】:

【参考方案1】:

请确保您的客户端代码与已完成的示例相匹配,并从此处替换适当的字段,以仔细检查您的测试是否正确:http://go.microsoft.com/fwlink/p/?linkid=331303&clcid=0x409

完整说明见:http://azure.microsoft.com/en-us/documentation/articles/partner-xamarin-mobile-services-android-get-started-push/

如果您在仔细检查后仍然遇到问题,请发送电子邮件至 toddreif@microsoft.com 并附上您的移动服务帐户名称。

【讨论】:

【参考方案2】:

参考Migrate a Mobile Service to use Notification Hubs.

Microsoft 已升级移动服务,以推送由通知中心提供支持的通知。如果您在升级之前创建了移动服务,则不会受到影响。

根据响应 isSuccessful: true, statusCode: 201, body ... ,说明你的Mobile Service是新版本。

如果您希望不使用通知中心发送推送,不要使用 push.gcm.send,请改用以下代码 sn-p。

var legacyGcm = require('dpush');
legacyGcm.send(your_GCM_APIKEY, regId, item, function (error, response) 
    if (!error) 
        // success code
     else 
        // error handling
    
);

【讨论】:

以上是关于适用于 Android 谷歌云消息 (GCM) 的 Azure 移动服务从不向设备发送通知的主要内容,如果未能解决你的问题,请参考以下文章

GCM 问题(谷歌云消息)

无需谷歌云消息(GCM)将通知从 PC 推送到 android

使用谷歌云消息时项目未列入白名单 - GCM Service for android

GCM(谷歌云消息)无法覆盖所有注册用户?

Android 中的谷歌云消息服务如何工作?

如何使用谷歌云连接服务器发送上游 GCM 消息