Pytanie w sprawie push-notification, iphone, ios, permissions, apple-push-notifications – Włącz / wyłącz powiadomienia Apple Push Notification z aplikacji iPhone?

20

Mam jeszcze jedną wątpliwośćAPNS. To wtedy aplikacja uruchamia aplikację po raz pierwszy z prośbą o pozwolenie na powiadomienie Apple Push, jeśli użytkownik zaakceptuje, że może otrzymywać powiadomienia. Jeśli użytkownik anulował, nie może otrzymywać żadnych powiadomień. Jestem czysty??

Teraz mam wątpliwości

Po raz pierwszy, jeśli użytkownik anulował usługę powiadomień wypychanych z aplikacji (kliknięcieCancel przycisk) ponownie po kilku dniach, jeśli chcą otrzymać powiadomienie push Apple, możliwe jest ponowne włączenie powiadomienia Apple Push dla konkretnego użytkownika z aplikacji.

A jeśli użytkownik zaakceptuje najpierw usługę powiadamiania push Apple, a po kilku dniach, jeśli nie chce otrzymywać powiadomień, możliwe jest wyłączenieAPNS w naszej aplikacji? Mam nadzieję, że rozumiesz moje wątpliwości. Czy ktoś może wyjaśnić tę wątpliwość?

Możliwe jest wykonanie powyższych scenariuszy w naszej aplikacji na iPhone'a?

Proszę pomóż mi. Z góry dziękuję.

Twoja odpowiedź

7   odpowiedzi
0

aby udzielić wsparcia w iOS 9

<code>    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {

    UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];

    if (types == UIUserNotificationTypeNone) {
        // Do something
        NSLog(@"");
    }
} else {

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone) {
        // Do something
        NSLog(@"");
    }
}
</code>

widziećJak zaktualizować kod przy użyciu enabledRemoteNotificationTypes, ponieważ jest on „nieobsługiwany w systemie iOS 8”?

4

Moim wymaganiem było włączenie i wyłączenie pushnotificaton za pomocąUISwitch.W celuwłącz powiadomienie push z kodu użyj tego w akcji przycisku.

<code>[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
   (UIRemoteNotificationTypeBadge |  UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
</code>

Inorder, aby wyłączyć

<code>[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
</code>
Jak wspomniano powyżej, włączenie może nastąpić tylko raz. Itai Spector
Ten kod jest dobry, ale nie działa w systemie iOS 10 iPatel
1

1. że po raz pierwszy użytkownik otworzy aplikację po jej zainstalowaniu .. jeśli zdecyduje się na to, może aktywować ją z poziomu ustawień urządzenia.

2. Można to zrobić z poziomu aplikacji i ustawień. Jeśli chcesz wyłączyć ją z aplikacji, możesz wysłać token urządzenia (który zdecyduje się wyłączyć powiadomienie push) na swój serwer i zapisać go na przykład. jako „brak listy powiadomień” i po wysłaniu ładunku ignorujesz te żetony, aby nie otrzymały powiadomienia.

3. Już odpowiedziałem.

Powodzenia.

Dziękuję za odpowiedź Malek_jundi. Czy istnieje możliwość znalezienia przez kod, że użytkownik wyłączył się, aby otrzymywać powiadomienia z mojej aplikacji (z naszego ekranu ustawień urządzenia iPhone). Z góry dziękuję. Gopinath
Nie wydaje mi się .. ale jego proste sprawisz, że funkcja api zatrzyma 1 parametr (toke urządzenia), gdy użytkownik wyłączy powiadomienie (zależy od ciebie, jak zrobić to w aplikacji, ale UISwitch to najlepszy wybór ) zadzwonisz do tego api i ustawisz flagę dla tego tokena, aby nie otrzymywać powiadomień .. to znaczy. Malek_Jundi
15

z kodu aplikacji. Okno dialogowe z prośbą o pozwolenie jest wyświetlane tylko raz. Zwykle inne aplikacje wyświetlają instrukcje użytkownikowi, aby włączyć / wyłączyć powiadomienia push, przechodząc do Ustawienia-> Powiadomienie-> Nazwa aplikacji.

Dziękujemy za odpowiedź Adig. Czy istnieje możliwość znalezienia przez kod, że użytkownik wyłączył się, aby otrzymywać powiadomienia z mojej aplikacji (z naszego ekranu ustawień urządzenia iPhone). Z góry dziękuję. Gopinath
Możesz sprawdzić, czy dowolny typ powiadomień wypychanych jest włączony za pomocą tego:if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone) adig
16

UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; a następnie wykonanie bitwise i operacji z różnymi typami, aby zobaczyć, które są włączone. Możesz także zadzwonićunregisterForRemoteNotifications aby wyłączyć powiadomienia. Jedyne, czego nie możesz zrobić, to włączyć powiadomienia, chociaż możesz skierować użytkownika.

1

token urządzenia iPhone'a jest rejestrowany na serwerze APN, a następnie możesz otrzymywać powiadomienia push. Później możesz włączyć / wyłączyć ustawienia urządzenia → powiadomienie → Twoja aplikacja.

0

ania poprzez rejestrację i wyrejestrowanie powiadomienia wypychanego.

Włącz powiadomienie wypychane:

<code>if #available(iOS 10.0, *) {
   // For iOS 10.0 +
   let center  = UNUserNotificationCenter.current()
   center.delegate = self
   center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
        if error == nil{
           DispatchQueue.main.async(execute: {
                 UIApplication.shared.registerForRemoteNotifications()
           }) 
        }
   }
}else{
    // Below iOS 10.0

    let settings = UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil)
    UIApplication.shared.registerUserNotificationSettings(settings)

    //or
    //UIApplication.shared.registerForRemoteNotifications()
}
</code>

Metody delegowania

<code>@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

}

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

}


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    // .. Receipt of device token
}


func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    // handle error
}
</code>

Wyłącz powiadomienie wypychane:

<code>UIApplication.shared.unregisterForRemoteNotifications()
</code>
Oznacza to, że mogę umieścić jeden włącznik / wyłącznik w mojej aplikacji do powiadomienia o aplikacji i mogę go włączyć / wyłączyć w dowolnym momencie. Czy Apple to zatwierdza? shaqir saiyed
@ shaqirsaiyed Jeszcze tego nie potwierdziłem, ponieważ byłem zaangażowany tylko w aplikację dla przedsiębiorstw. Ale na pewno sprawdzę to z jabłkiem. To może być bardzo przydatne. Krunal
tak, proszę sprawdzić, czy to możliwe. shaqir saiyed

Powiązane pytania