Frage an push-notification, iphone, apple-push-notifications, ios, permissions – Apple Push-Benachrichtigung über iPhone-App aktivieren / deaktivieren?

20

Ich habe noch einen ZweifelAPNS. Zu diesem Zeitpunkt fragt die App beim ersten Start nach der Apple Push Notification-Berechtigung, ob der Benutzer akzeptiert hat, dass er die Benachrichtigungen erhalten kann. Wenn der Benutzer storniert, kann er keine Benachrichtigungen erhalten. Ist das klar??

Jetzt ist mein Zweifel,

Zum ersten Mal, wenn der Benutzer den Push-Benachrichtigungsdienst über die App abgebrochen hat (Klicken aufCancel Wenn Sie nach einigen Tagen erneut die Apple Push-Benachrichtigung erhalten möchten, können Sie die Apple Push-Benachrichtigung für den jeweiligen Benutzer über die App erneut aktivieren.

Und wenn der Benutzer den Apple Push-Benachrichtigungsdienst zuerst akzeptiert und nach einigen Tagen die Benachrichtigungen nicht erhalten möchte, ist es möglich, den zu deaktivierenAPNS in unserer App? Ich hoffe du verstehst meine Zweifel. Kann jemand bitte diesen Zweifel klären?

Ist es möglich, diese oben genannten Szenarien in unserer iPhone-App durchzuführen?

Bitte hilf mir. Danke im Voraus.

Deine Antwort

7   die antwort
0

Mit diesem Code können Sie Unterstützung für iOS 9 geben

<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>

sehenWie aktualisiere ich Code mit enabledRemoteNotificationTypes, weil er "in iOS 8 nicht unterstützt wird"?

1

Wenn Sie zum ersten Mal die Erlaubnis erteilen, wird das Geräte-Token Ihres iPhones beim APN-Server registriert und Sie können die Push-Benachrichtigung erhalten. Später können Sie in Ihren Geräteeinstellungen → Benachrichtigung → Ihre App aktivieren / deaktivieren.

16

Sie können die Berechtigungen Ihrer App mit lesenUIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; und dann eine bitweise und Operation mit den verschiedenen Typen durchführen, um zu sehen, welche aktiviert sind. Sie können auch anrufenunregisterForRemoteNotifications Benachrichtigungen deaktivieren. Das einzige, was Sie nicht tun können, ist Benachrichtigungen zu aktivieren, obwohl Sie den Benutzer anweisen können.

0

In der Praxis ist es möglich, die Push-Benachrichtigung zu aktivieren und zu deaktivieren, indem Sie die Push-Benachrichtigung registrieren und die Registrierung aufheben.

Push-Benachrichtigung aktivieren:

<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>

Delegieren von Methoden

<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>

Push-Benachrichtigung deaktivieren:

<code>UIApplication.shared.unregisterForRemoteNotifications()
</code>
ja bitte überprüfe ob es möglich ist. shaqir saiyed
Das heißt, ich kann einen EIN / AUS-Schalter für meine App-Benachrichtigung in meine App einfügen und ich kann ihn jederzeit aktivieren / deaktivieren. Ist Apple damit einverstanden? shaqir saiyed
@shaqirsaiyed Ich habe es noch nicht bestätigt, da ich mich nur mit der Enterprise-App beschäftigt habe. Aber ich werde das mit Apfel überprüfen. Dies kann sehr nützlich sein. Krunal
15

Leider können Sie die Push-Benachrichtigungen für Ihre App nicht über den App-Code aktivieren oder deaktivieren. Der Dialog zur Erlaubnis wird nur einmal angezeigt. In der Regel zeigen andere Apps dem Benutzer Anweisungen zum Aktivieren / Deaktivieren von Push-Benachrichtigungen unter Einstellungen-> Benachrichtigung-> App-Name an.

Sie können folgendermaßen überprüfen, ob Push-Benachrichtigungen aktiviert sind:if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone) adig
Danke für deine Antwort Adig. Gibt es eine Möglichkeit, anhand des Codes zu ermitteln, dass der Benutzer ausgeschaltet hat, um Benachrichtigungen von meiner App zu erhalten (über den Bildschirm mit den Einstellungen für das iPhone-Gerät)? Danke im Voraus. Gopinath
4

Meine Anforderung bestand darin, die Push-Benachrichtigung mit einem zu aktivieren und zu deaktivierenUISwitch.DamitAktivieren Sie die Push-Benachrichtigung über den Code Verwenden Sie dies innerhalb der Tastenaktion.

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

Um zu deaktivieren

<code>[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
</code>
Wie oben erwähnt, kann die Aktivierung nur einmal erfolgen. Itai Spector
Dieser Code ist gut, funktioniert aber in iOS 10 nicht iPatel
1

1.Aus Ihrer App Nein, es wird nur angezeigt, wenn der Benutzer Ihre App nach der Installation zum ersten Mal öffnet. Wenn er dies zulässt, kann er es über die Geräteeinstellungen aktivieren.

2.Es kann über die App und die Einstellungen erfolgen. Wenn Sie die App deaktivieren möchten, können Sie das Geräte-Token (das die Push-Benachrichtigung deaktiviert) an Ihren Server senden und es beispielsweise speichern. Als "keine Benachrichtigungsliste" und wenn Sie die Nutzdaten senden, ignorieren Sie diese Token, damit sie keine Benachrichtigung erhalten.

3. Ich beantworte es bereits.

Viel Glück.

Danke für deine Antwort Malek_jundi. Gibt es eine Möglichkeit, anhand des Codes zu ermitteln, dass der Benutzer ausgeschaltet hat, um Benachrichtigungen von meiner App zu erhalten (über den Bildschirm mit den Einstellungen für das iPhone-Gerät)? Danke im Voraus. Gopinath
Ich glaube nicht .. aber es ist einfach, dass Sie eine API-Funktion mit 1 Parameter (Geräte-Token) erstellen, sobald der Benutzer die Benachrichtigung deaktiviert hat (es liegt an Ihnen, wie Sie sie in Ihrer App einrichten, aber der UISwitch ist die beste Wahl ) Sie rufen diese API auf und setzen ein Flag, damit dieses Token keine Benachrichtigung erhält. Malek_Jundi

Verwandte Fragen