1

よく知られているユーザーをどのようにプロンプ​​トすることができるのでしょうか?'app'はユーザーがプッシュ通知を送ろうとしますユーザーは(ユーザーでなくても)デフォルトで私のアプリを開きます。Swift FIRMessagingはサインアップ時にプッシュ通知のリクエストを送信します

どうすればよいですか? appDelegate.swiftでプッシュ通知の設定のみを構成すると思いましたか?前もって感謝します!

答えて

3

あなたは、あなたのアプリがログインページを持っている現実的ならば、確かにログインした後、あなたがそれを行う必要があるところ、どこにでもしたいプッシュ通知のための許可を求めることができます。

最初に、アクセス許可を求めるコードを関数AppDelegate.swiftに配置する必要があります。

func registerUserNotification() { 


     if #available(iOS 10.0, *) { 
      let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound] 

      UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: { (bool, error) in 

       UNUserNotificationCenter.current().delegate = self 

       if (error == nil) { 
        // its required for iOS 11 to avoid getting warning about "UI API called on a background thread" 
        DispatchQueue.main.async { 

        UIApplication.shared.registerForRemoteNotifications() 

        } 
       } 

      }) 


     } else { 
      if UIApplication.shared.responds(to: #selector(UIApplication.registerUserNotificationSettings(_:))) { 

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

      } 

     } 
} 

:また、アプリのデリゲートを参照し、その関数を呼び出す必要が任意のビューコントローラでiOSの10

の最新のSDKを使用できるようにimport UserNotificationsすることを忘れないでください:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    appDelegate.registerUserNotification() 

アップデート1

あなたのw病気の必要性(})クラスのスコープ外AppDelegateの最後に次のコードを配置し、以下のようUNUserNotificationCenterのデリゲートを実装するために、これはiOSの10のために必要とされています

@available(iOS 10, *) 
extension AppDelegate : UNUserNotificationCenterDelegate { 


    // Receive displayed notifications for iOS 10 devices. 
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 

     print("Userinfo \(notification.request.content.userInfo)") 



    } 


    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

     print("Userinfo \(response.notification.request.content.userInfo)") 



    } 



} 
+0

私はそこにいる!私はあなたのコードをチェックアウトし、それは非難/間違ったコードがたくさんあるようです。あなた自身でこれを試しましたか?私に助けてくれてありがとう、ありがとう、ありがとう! – askaale

+0

@askaaleあなたはどんなスピーディーを使っていますか?これは迅速な3です!廃止予定のものはありません! – AaoIi

+0

私はSwift 3も使用しています。奇妙な..いくつかのエラーは: "宣言されていないタイプのUNAuthorizationOptionsの使用"、 "未解決の識別子" UNUserNotificationCenter "の使用、"メンバーアプリケーションへの曖昧な参照 "などです。奇妙な.. – askaale

1

Firebaseによって概説されているすべてのリモート通知設定を実行できますが、「アプリはプッシュ通知を送信します」というメッセージを表示する手順はスキップできます。その後、ユーザーが登録プロセスを完了したら、iOSからプッシュ通知の承認をリクエストします。

次のコードは、システムプロンプトをユーザーに表示する重要な部分を示しています。いつでも呼び出すことができます。これらは、アプリケーションの起動時に省略しなければならないコード行でもあります。

func turnOnNotifications() { 
    if #available(iOS 10.0, *) { 
     UNUserNotificationCenter 
      .currentNotificationCenter() 
      .requestAuthorizationWithOptions([.Alert, .Badge, .Sound]) { authorized, error in 
     } 
    } else { 
     let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: .None) 
     UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
    } 
} 
+0

私はUNUserNotificationCenter上のエラーを取得し、これは間違っていますか?しかし、私を助けてくれてありがとう! – askaale

+0

次のインポートが必要です:Firebase、FirebaseMessaging、UserNotifications – kjones

+0

ええ、私はそうしましたが、上記のコード全体で問題を解決することができました。それにかかわらず、私はあなたの貢献に感謝したいと思います。それは有り難いです。 – askaale

関連する問題