Я не получаю уведомления в газетных киосках, когда приложение не работает, вот что я сделал.
В приложении есть правильные ключи plist "UINewsstandApp = YES" и "UIBackgroundModes = newsstand-content".
В делегате приложения я регистрируюсь для всех типов уведомлений, и я получаю свой токен от APNS, со стороны сервера (я использую драгоценный камень под названием Grocer). Я установил сертификат разработчика и отправлю обычный push, и он работает.
если я отправлю push-киоск, я получаю его, если приложение работает на 'didReceiveRemoteNotification', но когда приложение не работает, я ничего не получаю в центре уведомлений, что связано главным образом с тем, что "Grocer" имеет следующую полезную нагрузку { "aps": { "content-available": 1}} и не может добавлять другие ключи (предупреждение, значок и т.д.)
поэтому я подумал, что я не должен ничего получать в центре уведомлений, я ищу "UIApplicationLaunchOptionsRemoteNotificationKey" в параметрах запуска, а затем записываю файл, чтобы убедиться, что приложение работает в фоновом режиме, файл никогда не записывается как таковой
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];
}
У меня есть NKDontThrottleNewsstandContentNotifications, установленное true в моих настройках по умолчанию, а затем я синхронизирую, чтобы убедиться.
когда приложение запущено, независимо от того, сколько раз я отправляю push, я всегда получаю обратный вызов на "didReceiveRemoteNotification" с соответствующим "содержимым"
Если приложение закрыто или в фоновом режиме, ничего не происходит.
Update:
Мне удалось изменить драгоценный камень, который отправляет полезную нагрузку уведомления, вот словарь, который он отправляет
{"aps"=>
{
"alert"=>"Hello iPhone!!",
"content-available"=>1,
"badge"=>1,
"sound"=>"default"
}
}
и вот словарь userinfo, который я получаю в своем приложении (во время работы)
{
aps = {
alert = "Hello iPhone!!";
badge = 1;
"content-available" = 1;
sound = default;
};
}
обратите внимание на кавычки вокруг контента, доступного, означает ли это, что APNS проанализировал его как пользовательский ключ?