Non ricevo notifiche edicole quando l'app non è in esecuzione, ecco cosa ho fatto.Ricevere notifiche edicola solo quando l'app è in esecuzione
L'applicazione ha le chiavi plist corrette 'UINewsstandApp = YES' e 'UIBackgroundModes = edicola-content'.
Nel delegato dell'app mi registro per tutti i tipi di notifica e ricevo il mio token da APNS, dal lato server (sto usando una gemma chiamata Grocer), ho impostato il certificato dev e ho inviato un push regolare e funziona .
se invio un push in edicola lo ricevo se l'app è in esecuzione su 'didReceiveRemoteNotification', ma quando l'app non è in esecuzione non ricevo nulla nel centro notifiche, che è principalmente dovuto al fatto che 'Grocer' ha il seguente payload {"aps": {"contenuto disponibile": 1}} e non è possibile aggiungere altri tasti (avviso, badge, ecc.)
così ho pensato che non dovrei ottenere nulla nel centro notifiche, guardo per "UIApplicationLaunchOptionsRemoteNotificationKey" nelle opzioni di avvio, quindi scrivi un file per assicurarti che l'app venga eseguita in background, il file non viene mai scritto come tale
NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(remoteNotif)
{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [cachePath stringByAppendingPathExtension:@"pushreceived.txt"];
[@"testing" writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil];
}
Ho NKDontThrottleNewsstandContentNotifications impostato su true nelle impostazioni predefinite dell'utente, quindi eseguo la sincronizzazione per essere sicuro.
quando l'applicazione è in esecuzione, non importa quante volte i inviare la spinta, ho sempre arrivare una richiamata da "didReceiveRemoteNotification", con il "contenuto-disponibile" corretta
se l'applicazione è chiusa o nel sfondo, non succede nulla.
Aggiornamento:
sono riuscito a cambiare la gemma che invia il carico utile di notifica, ecco il dizionario invia
{"aps"=>
{
"alert"=>"Hello iPhone!!",
"content-available"=>1,
"badge"=>1,
"sound"=>"default"
}
}
e qui il dizionario userinfo ricevo sul mio app (durante l'esecuzione)
{
aps = {
alert = "Hello iPhone!!";
badge = 1;
"content-available" = 1;
sound = default;
};
}
si prega di notare le virgolette intorno a contenuti disponibili, questo significa che APNS analizzato come una chiave personalizzata?
la notifica in edicola 'in teoria' dovrebbe essere in grado di avviare l'applicazione anche se è disattivata con 'UIApplicationLaunchOptionsRemoteNotificationKey' .. che non sta succedendo atm – Zoidberg
@Zoidberg questa risposta sembra utile? http://stackoverflow.com/a/4296282/187954 –
purtroppo, non è, è essenzialmente quello che sto facendo nel codice nella mia domanda: < – Zoidberg