我正在尝试在我的离子应用中设置Parse推送通知。我目前正在做的事情:
var parseInstallationId = Parse._getInstallationId().then(function(uuid){
alert(typeof uuid);
var d = {
"deviceType": platform,
"deviceToken": uuid,
"channels": [""]
}
alert(JSON.stringify(d));
$http({
method: 'POST',
url: 'https://api.parse.com/1/installations/',
headers: {'X-Parse-Application-Id':'parse-id','X-Parse-REST-API-Key':'parse-rest-id'},
data: d
}).then(...)
我继续获得无效的设备令牌:8493-4389-4839 ...'。我猜这个数字是错误的格式或只是错误的数字。
我尝试使用像https://github.com/grrrian/phonegap-parse-plugin之类的一些存储库,但是遇到了构建错误,所以想要去api。
我已经圈了好几个小时了。我被告知我需要创建一个Installation对象,订阅一个频道并将用户设置为该对象。我的合作伙伴在xcode上设置了后端和配置文件。所以只需要连接项目中的实际代码。
答案 0 :(得分:0)
结束解决它:
var parseInstallationId = Parse._getInstallationId().then(function(inId){
var d = {
"deviceType": platform,
"deviceToken": registrationId,
"channels": [""],
"installationId":inId
}
var userId = Parse.User.current().id;
d['user'] = {
"__type": "Pointer",
"className": "_User",
"objectId": userId
}
if(platform === 'android'){
d.pushType = 'gcm';
}
$http({
method: 'POST',
url: 'https://api.parse.com/1/installations/',
headers: {'X-Parse-Application-Id':'XXXX','X-Parse-REST-API-Key':'XXXX'},
data: d
}).then(function successCallback(response) {
installationId = response;
},
function errorCallback(response) {
console.log('pushInstallation error: ', response);
});
})
我获取了安装ID,并将其保存到传递给Parse的对象中。 registrationId来自使用:
var push = PushNotification.init({
android: {
senderID: "XXXX"
},
ios: {
alert: "true",
badge: true,
sound: 'false'
},
windows: {}
});
push.on('registration', function(data) {
User.pushInstallation(platform, data.registrationId);
})
答案 1 :(得分:0)
我还没有发表评论,所以我不得不在这里问一下。您是否在离子应用程序中使用Javascript SDK?您是否只安装了phonegap推送插件并仅使用上面的代码(我在您的app.js中假设)来设置推送通知?关心为我们设置一个指导你的灵魂:) ??
答案 2 :(得分:0)
在开发parse-push-plugin时,我发现对于离子项目,你正在处理2个不同的installationId:
Parse._getInstallationId()
由Parse Javascript sdk生成,它与您的设备无关。即使在桌面浏览器上也存在此installationId,而Parse不会将其作为安装对象存储在数据库中。
存储在数据库中的Installation对象中并用于目标推送的设备installationId由本机Parse SDK生成。在Android上,它是ParseInstallation.getCurrentInstallation().getInstallationId()
。在iOS上,它是[PFInstallation currentInstallation].installationId
此外,deviceToken
是一个完全不同的野兽。 InstallationId由您使用的Parse SDK生成,它完全在您的计算机上生成。设备令牌只能通过向GCM或APNS注册来获得。
因此,在您的原始问题中,错误是2折:使用错误的安装ID并将其用作deviceToken。