2013-04-16 15 views
18

Używam UILocalNotification w mojej aplikacji, aby zaplanować powiadomienia. Powiadomienia działają poprawnie i wyświetlają się, kiedy chcę. Nie mam z tym problemu. NIE wykonuję żadnych powiadomień zdalnych/wypychanych.Czy lokalne powiadomienia wymagają uprawnień użytkownika w systemie iOS?

Co mnie zastanawiało, to że nigdy nie widziałem słynnego okna dialogowego uprawnień, które zwykle widzisz w powiadomieniach push w kilku aplikacjach. Nawet zresetowałem urządzenie i uruchomiłem aplikację. To nadal nie powodowało pojawienia się okna uprawnień.

Czy to okno dialogowe uprawnień nie jest wyświetlane, jeśli aplikacja używa wyłącznie powiadomień lokalnych lub czy nie wdrażam jakiejś metody, która powoduje, że aplikacja prosi o to uprawnienie?

Wiem, że mogłem wdrożyć własne okno dialogowe po uruchomieniu aplikacji, które poprosiło użytkownika o pozwolenie, ale miałem nadzieję, że Apple zajął się tym, zwłaszcza, że ​​traktuje zdalne i lokalne powiadomienia tak samo w aplikacji Ustawienia.

Odpowiedz

4

UWAGA: ten obejmuje powiadomień push/Zdalne powiadomienia

podczas korzystania Xcode6 z iOS7 lub systemów iOS 8 próbę, gdy registerUserNotificationSettings: API jest dostępny w czasie wykonywania.

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { 
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} else { 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 
} 

Dzięki http://corinnekrych.blogspot.ae/2014/07/how-to-support-push-notification-for.html

11

Wygląda na to, że lokalne powiadomienia nie wymagają żadnych uprawnień użytkownika. Okno uprawnień pojawia się tylko w przypadku powiadomień push. Jestem w stanie zaplanować/anulować lokalne powiadomienia bez pozwolenia użytkownika.

+0

samo tutaj: patrząc na nowego iOS10 UserNotificationsCenter - lokalne Powiadomienia są zaplanowane bez punktu dostępowego. –

2

Tak, zgadza się. Lokalne powiadomienia nie wymagają żadnych uprawnień systemu operacyjnego. Jednak, jako dobrą praktykę, sugeruję, by w takich przypadkach dać użytkownikowi opcję rezygnacji z aplikacji. Byłoby dobrze działać na dwa sposoby:

  1. rozdrażnione użytkownika, sfrustrowany, bo widząc lokalnego zgłoszenie jeszcze raz czas &, nie znając różnicę między pchania/zgłoszenia Local może zostawić złą opinię na temat sklepu z aplikacjami.
  2. Zawsze dobrą praktyką jest dostarczanie flag do włączania/wyłączania takich funkcji dla danego użytkownika.
+0

Zgoda! Nasza aplikacja ma opcję kapeluszową :) – RPM

13

Tak, w iOS8 lokalne powiadomienia wymagają uprawnień.

The documentation dla registerUserNotificationSettings: przewiduje, że

If your app displays alerts, play sounds, or badges its icon while in the background, you must call this method during your launch cycle to request permission to alert the user in those ways. Typically, you make this requestjeśli aplikacja używa lokalnychor pushpowiadomieniato alert the user to new information involving your app.

It is recommended that youwywołać tę metodę przed zaplanować wszystkie lokalne powiadomieniaor register with the push notification service.

2

dokumentacji Apple na presentLocalNotificationNow i scheduleLocalNotification mówi

Przed planowania wszelkich lokalnych powiadomień, należy wezwać registerUserNotificationSettings: metoda aby system wie, jakie rodzaje ewentualne alerty, które zamierzasz wyświetlać użytkownikowi.

Nie jestem pewien, jak inni na tej stronie mówią Lokalne powiadomienia nie wymagają uprawnień użytkownika.

Zamówienie to inna dyskusja na ten sam temat:

Ask for User Permission to Receive UILocalNotifications in iOS 8

+0

To wydaje się być egzekwowane w systemie iOS 9 i nowszych wersjach. –