У меня были некоторые проблемы вначале, но теперь он работает нормально. Попробуйте код ниже, он очень понятен.
И это работает и на iOS 8! Я думаю, что сначала я пытался использовать другие методы, в течение которых я получил зарегистрированное приложение iOS 8, и поэтому, когда я вставлял плагин, регистрационная часть снова не требовалась, и теперь я получаю уведомления на iOS 8 тоже.
Две проблемы, с которыми я столкнулся в iOS 7, - это уведомление не очищается от строки состояния даже после того, как я нажимаю и открываю приложение, а значки не отображаются.
var pushNotification;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
console.log("ON DEVICE READY!!!");
navigator.splashscreen.hide();
$("#app-status-ul").append('<li>deviceready event received</li>');
document.addEventListener("backbutton", function(e)
{
$("#app-status-ul").append('<li>backbutton event received</li>');
if($("#home").length > 0)
{
// call this to get a new token each time. don't call it to reuse existing token.
//pushNotification.unregister(successHandler, errorHandler);
e.preventDefault();
navigator.app.exitApp();
}
else
{
navigator.app.backHistory();
}
}, false);
try
{
pushNotification = window.plugins.pushNotification;
$("#app-status-ul").append('<li>registering ' + device.platform + '</li>');
if (device.platform == 'android' || device.platform == 'Android' || device.platform == 'amazon-fireos')
{
pushNotification.register(successHandler, errorHandler, {"senderID":"XXXXXXXXXXXXX","ecb":"onNotification"}); // required!
}
else
{
pushNotification.register(tokenHandler, errorHandler, {"badge":"true","sound":"true","alert":"false","ecb":"onNotificationAPN"}); // required!
}
}
catch(err)
{
txt="There was an error on this page.\n\n";
txt+="Error description: " + err.message + "\n\n";
alert(txt);
console.log(txt);
}
}
// эта часть вне onDeviceReady()
function tokenHandler (result)
{
console.log("token:"+result);
// $("#app-status-ul").append('<li>token: '+ result +'</li>');
// Your iOS push server needs to know the token before it can push to this device
// here is where you might want to send it the token for later use.
}
function successHandler (result)
{
console.log("in succ handler:"+result);
// $("#app-status-ul").append('<li>success:'+ result +'</li>');
}
function errorHandler (error)
{
console.log("in errorhandler:"+error);
// $("#app-status-ul").append('<li>error:'+ error +'</li>');
}
Если вы используете IOS 8, то это, вероятно, потому, что плагин не поддерживает его. В окне отладки в XCode вы можете видеть такие ошибки, как: «registerForRemoteNotificationTypes: не поддерживается в iOS 8.0 и более поздних версиях» и «Попытка присвоить значку приложения значок, но не получила разрешения от пользователя на значок приложения». См .: https://github.com/phonegap-build/PushPlugin/issues/364 – Ade