在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知

Posted

技术标签:

【中文标题】在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知【英文标题】:Azure Push Notifications with iOS Badges on Cordova/Phonegap 【发布时间】:2015-08-13 03:30:05 【问题描述】:

我有以下代码可以使用 Azure 通知中心发送推送通知。当新项目插入数据库时​​,此代码会向使用该标签注册的设备发送推送通知。

我将 Ionic/Phonegap 用于 ios 应用程序和 ngCordova 推送插件。我想为 iOS 设备添加徽章计数,但我似乎找不到这样做的方法。我试过使用 push.apns.send 功能,但无法让它工作。

Azure 移动服务

function insert(item, user, request) 
    // Execute the request and send notifications.
    request.execute(
       success: function()  
            // Create a template-based payload.
            var payload = ' "message" : "This is my message" ';            

            push.send("My Tag", payload,           
               success: function(pushResponse) 
                   // Send the default response.
                   request.respond();
               ,              
               error: function (pushResponse) 
                   console.log("Error Sending push:", pushResponse);
                    // Send the an error response.
                   request.respond(500,  error: pushResponse );
                              
            );                
       
   );   

电话隔断

var iosConfig = 
    "badge": true,
    "sound": true,
    "alert": true
;

$cordovaPush.register(iosConfig).then(function (deviceToken) 
    var hub = new NotificationHub(mobileClient);

    // This is a template registration.
    var template = "\"aps\":\"alert\":\"$(message)\"";

    // Register for notifications.
    // (deviceId, ["tag1","tag2"], templateName, templateBody, expiration)
    hub.apns.register(deviceToken, myTags, "myTemplate", template, null).done(function () 
        // Registered with hub!
    ).fail(function (error) 
        alert("Failed registering with hub: " + error);
    );

, function (err) 
    alert("Registration error: " + err)
);

我已经搜索了几十篇文章/教程,但没有一篇有用。任何帮助将不胜感激。

【问题讨论】:

我认为问题可能是Phonegap代码中的模板注册。我将不得不进一步调查以确保。 【参考方案1】:

我终于明白了。问题是模板注册需要包含徽章。以下是有效的:

Azure 移动服务

function insert(item, user, request) 
    // Execute the request and send notifications.
    request.execute(
       success: function()  
            // Create a template-based payload.
            var payload = ' "message" : "' + originalMessage + '", "badge" : "100" ';            

            push.send("My Tag", payload,           
               success: function(pushResponse) 
                   // Send the default response.
                   request.respond();
               ,              
               error: function (pushResponse) 
                   console.log("Error Sending push:", pushResponse);
                    // Send the an error response.
                   request.respond(500,  error: pushResponse );
                              
            );                
       
   );   

电话隔断

var iosConfig = 
    "badge": true,
    "sound": true,
    "alert": true
;

$cordovaPush.register(iosConfig).then(function (deviceToken) 
    var hub = new NotificationHub(mobileClient);

    // This is a template registration.
    var template = "\"aps\":\"alert\":\"$(message)\",\"badge\":\"#(badge)\" ";

    // Register for notifications.
    // (deviceId, ["tag1","tag2"], templateName, templateBody, expiration)
    hub.apns.register(deviceToken, myTags, "myTemplate", template, null).done(function () 
        // Registered with hub!
    ).fail(function (error) 
        alert("Failed registering with hub: " + error);
    );

, function (err) 
    alert("Registration error: " + err)
);

【讨论】:

以上是关于在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上调试 Cordova (PhoneGap) 代码

Ionic / Cordova / Phonegap:有没有办法在iOS和Android上禁用表情符号键盘?

Cordova/Phonegap IOS 键盘滚动问题,显示白色背景

Cordova/PhoneGap:childBrowser UI 图像低分辨率/大块(iOS)

Safari 中针对不同 iOS 设备的不同主体(Cordova/phonegap)

IOS Cordova/Phonegap 离线视频源标签不起作用