gpt4 book ai didi

azure - 如何从 iOS 在 Azure 移动应用程序通知中心注册目标推送通知

转载 作者:行者123 更新时间:2023-12-03 05:07:36 31 4
gpt4 key购买 nike

我有一个移动应用程序,可以在 Azure 移动应用程序服务中注册推送通知。在以前的版本(Azure 移动服务)中,我可以在注册时添加标签。出于安全原因,当前的移动应用服务中删除了这种可能性。在这个论坛的另一个帖子中,我读到我们需要创建一个自定义 API 来添加标签,例如目标通知的用户 ID。Azure 中的文档仅提到 .NET,我需要用 javascript 来完成。所以,我写了这个API:

module.exports = {
"put": function (req, res, next) {

var token = req.query.token;
token = token.replace('<','');
token = token.replace('>',''); //Removing the token enclosures
token = token.replace(/\s+/g,''); //Removing the spaces in the token
req.azureMobile.push.apns.createNativeRegistration(token, req.azureMobile.user.id, function(error) {
if (error) {
console.log("Registration unsuccessful: ", error);
res.status(500).json({ error: error });
} else {
var result = "Registration successful"
console.log(result);
res.status(201).json({result: result});
}
});
}
}

我使用以下 Swift 代码从 iOS 调用它:

 self.client!.push?.registerDeviceToken(deviceToken, completion: {(error) in
var results = Dictionary<String, AnyObject>()
if error == nil {
let param = ["token":deviceToken]
AOAppDelegate.client!.invokeAPI("apnsRegistration", body: nil, HTTPMethod: "PUT", parameters: param, headers: nil, completion: {(objects, httpResponse, error) in
if error != nil {
print("Error registering for notifications: %@", error);
}
})
} else {
print("Error registering for notifications: %@", error);
}
})

这个过程在我的 iPhone 上运行得很好,但在我的 iPad 上却不行,而且这款 iPad 没有任何问题,这让我觉得代码缺少了一些东西。另外,如果我转到 Azure 门户内的通知中心,它会注册 0 个标签,而注册的 iPhone 应该至少有一个可以正常工作的标签。测试推送通知也仅向手机发送通知,而不向 iPad 发送通知。

有什么建议吗?我的代码有意义吗?

谢谢

最佳答案

该调用看起来没有写入。尝试这样的事情:

var promises = require('azure-mobile-apps/src/utilities/promises');

function createInstallation(context, installationId, pushChannel) {
var installation = {
installationId: installationId,
pushChannel: pushChannel,
platform: 'apns',
tags: [ 'some', 'list' ]
};

return promises.wrap(context.push.createOrUpdateInstallation, context.push)(installation);
}

module.exports = {
post: function (req, res, next) {
var context = req.azureMobile,
installationId = req.get('X-ZUMO-INSTALLATION-ID'),
pushChannel: req.body.pushChannel;

createInstallation(context, installationId, pushChannel)
.then((result) => {
res.status(204).end();
});
.catch(next);
}
}

context.push 只是包装通知中心 SDK,因此您可以使用其中的任何内容。

关于azure - 如何从 iOS 在 Azure 移动应用程序通知中心注册目标推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37050180/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com