我的应用程序在很大程度上依赖于静默通知来向用户发送数据。此功能在开发中运行良好,但是当我使用TestFlight进行测试时,它不起作用。我读到这是一些iOS版本中可能存在的错误,但我没有运行它们中的任何一个。我正在使用parse发送推送通知,它说通知已发送,但它没有执行任何代码didReceiveRemoteNotification
有没有人知道为什么这不起作用?
Parse.Push.send({
where: pushQuery,
data: {
"content-available" : 1,
"sound" : "",
"time" : alarmTimeDate,
},
push_time: alarmTime
}, { }).then(function() {
response.success("Push was sent successfully.")
}, function(error) {
response.error("Push failed to send with error: "
+ error.message);
});
},
error: function(user, error) { // error is an instance of Parse.Error. } });
});
答案 0 :(得分:1)
所以我终于得出了结论。事实证明,在iOS 8中,无声通知不保证在使用生产证书时didReceiveRemoteNotification
中的代码执行。在开发中,它的工作方式与在iOS 7中的工作方式相同,但不在生产中。你可以阅读更多关于这个问题here.“苹果公司不承认这种背景行为的变化是一个错误,他们承认这一变化,但却说它是故意的。” - mungbeans
希望这有助于任何有同样问题的人,抱歉告诉你这个消息。因此,我需要重建我的整个应用程序。
答案 1 :(得分:0)
在开发中,我假设您使用的是与您在Parse上配置的推送证书相关联的开发配置文件。
使用TestFlight时,您需要使用Release配置文件。该配置文件将与不同的推送证书相关联。因此,如果您尚未配置发布推送证书(并且已启用推送应用程序ID以进行分发),那么您就不会在TestFlight构建中看到推送。
我之前没有使用Parse进行推送,但是在Urban Airship中,它们可以让您轻松为单个应用配置开发和发布证书。
希望有所帮助!