使用Windows Azure实现Safari推送通知

3
我正在尝试将Safari Push Notifications与Windows Azure后端一起使用。我已经成功将网站推送ID:web.com...证书上传到Azure的移动服务中,并且在苹果推送通知设置中没有出现任何错误信息。
为了处理Web服务端点(webServiceURL/version/pushPackages/websitePushIDwebServiceURL/version/devices/deviceToken/registrations/websitePushID等),我在Mobile Services中创建了一个API,一切都运行良好。
但是我无法发送推送通知或获得错误消息。
我的测试代码如下:
function send(req, res) {
    var push = req.service.push;
    var devicesTable = req.service.tables.getTable('devices');
    devicesTable.read({
        success: function(devices) {
            devices.forEach(function(device) {

                console.log("send to deviceToken " + device.deviceToken);

                push.apns.send(device.deviceToken, {
                    alert: 'Toast: A new Mobile Services task.',
                    payload: {
                        inAppMessage: "Hey, a new item arrived: '"
                    }
                });

                push.apns.send(device.deviceToken, {
                        alert: {
                            "title": "Test 123 ",
                            "body": "Test 123 ",
                            "action": "View"
                        },
                        "url-args": ["boarding"]
                    },
                    {
                        error : function(err) {
                            console.log("send error " + err);
                        }
                    }
                );

            });
        }
    });

    res.send(200, "");
}

我的问题是字典的格式还是Azure移动服务不支持Safari推送通知?请注意,据我所知,APNS在iOS、Mac和Safari推送通知中是相同的。

更新:我使用SimplePush进行了测试,因此证书和Safari的注册都没有问题。我的有效载荷如下:

// Create the payload body
$body['aps'] = array(
    'alert' => array(
        'title' => 'test',
        'body' => $message
    ),
    'url-args'  => array('test'),
);

我注意到你的第一个push.apns.send没有错误处理程序 - 也许在那里添加一个以查看是否有返回值。此外,通过使用apns.getFeedback()查看是否有任何具体返回值。请参阅此页面上的示例:http://msdn.microsoft.com/en-us/library/windowsazure/jj839711.aspx - Simon W
我尝试了两种方法,都没有任何错误信息。 - catlan
简化您发送的消息格式,以查看是否有消息导致无法传递。您设备令牌在表中是否有效?它们也可能会随着操作系统升级而更改。 - Simon W
设备令牌有效,正如我所写的,它可以与SimplePush一起使用。我还测试了最简化的消息格式:标题和正文是必需的。当在urlFormatString中使用占位符时,也需要url-args。 - catlan
1个回答

0

我假设您已按照苹果的指导正确注册了Safari客户端 - 您是否已经在非Azure实现中测试过您的客户端?从苹果的实现指南来看,即使不考虑Azure作为推送信息源,似乎也有很多需要注意的地方。


是的,我已经测试过非 Azure 实现。 - catlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接