2016-12-24 47 views
5

To pytanie dotyczy zmian w APNS systemu iOS 10.Jak sprawdzić, czy użytkownik włączył ustawienia powiadomienia push?

To jest przepływ moim app:

  1. App Zainstalowane
  2. App Rozpoczyna ➝ Ekran logowania
  3. Udane ekran logowania ➝ strona
  4. push notyfikacji ➝ Zapytanie
  5. push Powiadomienie ➝ Don Zezwól na:
  6. Aplikacja Zamknij
  7. Ustawienia ➝ User enabled Push Notification
  8. Aplikacja otwarta
  9. Jak sprawdzić, czy ustawienia zostały zaktualizowane?
  10. App Close
  11. ➝ Ustawienia użytkownika Powiadamianie wyłączone push
  12. App Otwarte
  13. Jak sprawdzić, czy zaktualizowane ustawienia?

Pytam tylko o powiadomienie push (krok 4.), kiedy użytkownik się loguje. Tak więc dopóki użytkownik się nie wyloguje, nie będę mógł ponownie zażądać tego polecenia.

Czy jest na to jakieś czyste i jasne rozwiązanie, abyśmy mogli wesprzeć zmiany wprowadzone w systemie iOS 10, nadal obsługując iOS 8 lub 9?

+0

Czy znaleziono żadnego rozwiązania dla tej – Dory

Odpowiedz

0

możesz użyć currentUserNotificationSettings, gdy aplikacja wejdzie na pierwszy plan.

UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 
    if (grantedSettings.types == UIUserNotificationTypeNone) { 
      NSLog(@"No permiossion granted"); 
     } 
     else if (grantedSettings.types & UIUserNotificationTypeSound & UIUserNotificationTypeAlert){ 
      NSLog(@"Sound and alert permissions "); 
     } 
     else if (grantedSettings.types & UIUserNotificationTypeAlert){ 
      NSLog(@"Alert Permission Granted"); 
     } 

Jeśli chcesz sprawdzić, czy status zmienił się od poprzedniego, można zachować poprzednią wartość currentUserNotificationSettings do jakiejś zmiennej i porównać go z bieżącej wartości nadgodziny w applicationWillEnterForeground metody.

+0

To wydaje się być kod dla lokalnych powiadomień , czy zadziała w przypadku zdalnych powiadomień? – Hemang

+0

Nie, CurrentUserNotificationSettings działa dla obu. - będzie działać w przypadku zdalnych powiadomień – Darshana

6

użycie tego Code

if ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]) { 
// yes 
}else{ 
// no 
} 
3

UIUserNotificationSettings została zaniechana z powrotem w systemów iOS 8. Jeśli chcesz uzyskać dostęp do ogólnego stanu swoich ustawień aplikacji, sprawdź NUserNotifications, nowy framework. Rozumiem, że traktuje push i lokalność jako jedną rzecz. Gdy rejestrujesz powiadomienia, możesz zadzwonić, aby zarejestrować push. Ale w przypadku lokalnych uprawnień - oznaczanie i tak dalej, nadal musisz poprosić o pozwolenie użytkownika. Oznacza to, że urządzenie może akceptować powiadomienia push bez zgody użytkownika, aby otrzymywać aktualizacje danych, ale powiadomienia można wyświetlać tylko za pośrednictwem centrum z uprawnieniami. Oto, jak sprawdzić, jakie uprawnienia zostały przyznane.

  1. importować ramowe w swojej klasie

    @import UserNotifications; 
    
  2. Query ustawienia

    - (void)_queryNotificationsStatus 
    { 
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
        [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings *settings){ 
    
        //1. Query the authorization status of the UNNotificationSettings object 
        switch (settings.authorizationStatus) { 
        case UNAuthorizationStatusAuthorized: 
         NSLog(@"Status Authorized"); 
         break; 
        case UNAuthorizationStatusDenied: 
         NSLog(@"Status Denied"); 
         break; 
        case UNAuthorizationStatusNotDetermined: 
         NSLog(@"Undetermined"); 
         break; 
        default: 
         break; 
        } 
    
    
        //2. To learn the status of specific settings, query them directly 
        NSLog(@"Checking Badge settings"); 
        if (settings.badgeSetting == UNAuthorizationStatusAuthorized) 
        NSLog(@"Yeah. We can badge this puppy!"); 
        else 
        NSLog(@"Not authorized"); 
    
        }]; 
    }