Eu configurei notificações locais no App Delegate usando este:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
Quando executo o aplicativo e saio dele, recebo um erro dizendo:
2014-06-07 11: 14: 16.663 CCA-TV [735: 149070] Tentando agendar uma notificação local {fire date = Saturday, June 7, 2014 at 11:14:21 Pacific Daylight Time, time zone = America / Los_Angeles (PDT) offset -25200 (Daylight), repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Saturday, June 7, 2014 at 11:14:21 Pacific Daylight Time, user info = (null)} com um alerta mas não recebi permissão do usuário para exibir alertas
Como posso obter a permissão necessária para exibir os alertas?
ios
cocoa-touch
notifications
ios8
uilocalnotification
Dannysandler
fonte
fonte
registerUserNotificationSettings
. Se fosse o iOS 8, este tópico teria respondido sua pergunta. Mas,Respostas:
Como o iOS 8, você precisa pedir permissão ao usuário para mostrar notificações de seu aplicativo, isso se aplica a notificações remotas / push e locais. No Swift você pode fazer assim,
Atualização para Swift 2.0
Swift 3.2
A sintaxe do Objective C também é muito semelhante.
Para verificar os tipos de notificação registrados atualmente, você pode usar o método da classe UIApplication,
Portanto, se o usuário disse não ao seu aplicativo, esta função deve retornar uma configuração sem quaisquer tipos nela.
Eu escrevi um tutorial sobre isso, você pode vê-lo aqui .
fonte
dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings
. Existe alguma outra maneira no Swift de solicitar permissões ao usuário para trabalhar no iOS7? por favor ajude.Coloque este código no controlador de visualização onde você irá primeiro programar as notificações (se você programá-las na inicialização, então será
application:didFinishLaunchingWithOptions:
):Em Swift:
As soluções que testam contra o número da versão do sistema são abaixo do ideal e estão sujeitas a erros.
fonte
application.respondsToSelector(Selector("registerUserNotificationSettings"))
eif ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
application:didFinishLaunchingWithOptions:
que fornece umapplication
objeto útil :)Experimente isso para Objective-C:
Para Swift:
fonte
Acabei de enfrentar o mesmo problema. Parece que no iOS 8, precisamos realizar uma etapa adicional, geralmente feita dentro de:
Você pode usar este código se quiser mantê-lo compatível com versões anteriores:
O sistema se lembrará da decisão e só perguntará uma vez.
fonte
** Notificação local com ação de três botões para iOS8 +
// Botão: EU TIVE, LEMBREI DEPOIS, PULAR **
fonte