[SWIFT] Das Problem, dass das Popup-Fenster für Push-Benachrichtigungsberechtigungen unter iOS14 nicht angezeigt wird

Fehlerdetails

Es scheint ein Problem zu sein, das iOS14 eigen ist, aber wenn der Produktname der Anwendung ein bestimmtes Zeichen enthält (wahrscheinlich ein anderes als das Alphabet), wird es bei der Implementierung der Push-Benachrichtigung verwendet. Die Methode "UNUserNotificationCenter.current (). RequestAuthorization (options :, CompletionHandler :)" wird mit einem Fehler umgedreht, und das Popup, in dem der Benutzer aufgefordert wird, Benachrichtigungen zuzulassen, wird nicht mehr angezeigt.

In meinem Fall habe ich ein flaches Pseudonym in den Produktnamen eingefügt (warum ich es eingefügt habe ...) und war süchtig danach, weil das Popup nicht angezeigt wurde. Daher werde ich die Details des Fehlers und die Lösung beschreiben.

Alle Details zu diesem Problem finden Sie in den Apple Developer Forums. Wenn Sie mit Englisch einverstanden sind, ist es meiner Meinung nach schneller, den Link zu lesen. https://developer.apple.com/forums/thread/660715

Code- und Fehlerdetails

AppDelegate


import UIKit
import UserNotifications

    ***

class AppDelegate: UIResponder, UIApplicationDelegate {

    ***

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 
        
        UNUserNotificationCenter.current().delegate = self
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: { granted, error in
            print(error)
            guard error == nil else { return }
            if granted {
                DispatchQueue.main.async {
                    application.registerForRemoteNotifications()
                }
            }
        })

        return true
    }
    
}

Wenn Sie eine Push-Benachrichtigung an einen Benutzer senden, verwenden Sie die Methode "requestAuthrization ()" des "UNUserNotificationCenter", um um Erlaubnis zu bitten. Wenn jedoch ein Problem mit dem Produktnamen auftritt, wird dieser mit einem Fehler im "CompletionHandler" abgespielt und "registerForRemoteNotifications ()" ausgeführt. Die Popup-Anzeige wird nicht ausgeführt.

Wenn Sie den Inhalt mit "Drucken (Fehler)" überprüfen, wird er wie unten gezeigt auf der Konsole angezeigt.

Error Domain=UNErrorDomain Code=1 "Notifications are not allowed for this application"

Lösungen

  1. Ändern Sie den Produktnamen im Element ZIELE-> BuildSettings-> Verpackung in etwas, das funktioniert (offiziell werden einfache ASCII-Zeichen angegeben). Der Produktname ist für den Benutzer unsichtbar, sodass Sie nicht zu viel darüber nachdenken müssen.

  2. Wenn Sie flaches Kana oder Kanji an einer Stelle verwenden möchten, die der Benutzer sehen kann (z. B. den App-Namen unter dem App-Symbol), fügen Sie Info.plist ein Element mit dem Namen Bundle-Anzeigename hinzu und geben Sie den App-Namen ein, den Sie dort anzeigen möchten. Machen.

  3. Das Popup wurde problemlos angezeigt. 3E638F8B-D27B-4E31-9FFF-522DB5D96F0F_1_201_a.jpeg

das ist alles.

Recommended Posts

Das Problem, dass das Popup-Fenster für Push-Benachrichtigungsberechtigungen unter iOS14 nicht angezeigt wird
Erhalten Sie parametrisierte PUSH-Benachrichtigungen unter iOS
Uri Components Builder codiert je nach Version der Feder nicht "+"