Skonfigurowałem powiadomienia lokalne w delegacie aplikacji, używając tego:
- (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]];
}
Kiedy uruchamiam aplikację, a następnie ją zamykam, pojawia się komunikat o błędzie:
2014-06-07 11: 14: 16.663 CCA-TV [735: 149070] Próba zaplanowania lokalnego powiadomienia {data pożaru = sobota, 7 czerwca 2014 r. O 11:14:21 czasu pacyficznego letniego, strefa czasowa = America / Los_Angeles (PDT) przesunięcie -25200 (światło dzienne), interwał powtórzeń = 0, liczba powtórzeń = UILocalNotificationInfiniteRepeatCount, data następnego pożaru = sobota, 7 czerwca 2014 r. O godzinie 11:14:21 czasu pacyficznego, informacje o użytkowniku = (null)} z alertem ale nie otrzymałem pozwolenia od użytkownika na wyświetlanie alertów
Jak mogę uzyskać niezbędne pozwolenie na wyświetlanie alertów?
źródło
registerUserNotificationSettings
. Gdyby to był iOS 8, ten wątek odpowiedziałby na twoje pytanie. Ale, g naprzód, spójrz - stackoverflow.com/questions/24006998/ ...Odpowiedzi:
Ponieważ iOS 8 musisz poprosić użytkownika o pozwolenie na wyświetlanie powiadomień z Twojej aplikacji, dotyczy to zarówno powiadomień zdalnych / wypychanych, jak i lokalnych. W Swift możesz to zrobić w ten sposób,
Aktualizacja dla Swift 2.0
Swift 3.2
Składnia celu C jest również bardzo podobna.
Aby sprawdzić aktualnie zarejestrowane typy powiadomień możesz skorzystać z metody klasy UIApplication,
Jeśli więc użytkownik powiedział „nie” Twojej aplikacji, ta funkcja powinna zwrócić ustawienie bez żadnych typów.
Napisałem o tym tutorial, możesz to zobaczyć tutaj .
źródło
dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings
. Czy w Swift jest inny sposób, aby poprosić użytkownika o uprawnienia do pracy w iOS7? proszę pomóż.Umieść ten kod w kontrolerze widoku, w którym najpierw zaprogramujesz powiadomienia (jeśli zaprogramujesz je przy uruchomieniu, to będzie
application:didFinishLaunchingWithOptions:
):W Swift:
Rozwiązania testujące pod kątem numeru wersji systemu są nieoptymalne i podatne na błędy.
źródło
application.respondsToSelector(Selector("registerUserNotificationSettings"))
iif ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
application:didFinishLaunchingWithOptions:
co zapewnia poręcznyapplication
przedmiot :)Spróbuj tego dla Objective-C:
Dla Swift:
źródło
Właśnie stanąłem przed tym samym problemem. Wygląda na to, że w iOS 8 musimy zrobić dodatkowy krok, zwykle wykonywany w środku:
Możesz użyć tego kodu, jeśli chcesz zachować zgodność wsteczną:
System zapamięta decyzję i zapyta tylko raz.
źródło
** Lokalne powiadomienie z trzema przyciskami dla iOS8 +
// Przycisk: ZACZĘŁEM, PRZYPOMNIJ PÓŹNIEJ, POMIŃ **
źródło