2017-05-23 22 views
0

アプリがアクティブなときにバナー通知を表示しようとしています。 私は与えられた方法を用いるが、何の結果が存在しない、バナー通知アプリケーションが閉じているときにのみ表示されている:iOSアプリで通知を表示するフォアグラウンドでアプリを実行中/即時にアクティブにする3

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { 
    print("Push notification received: \(userInfo)") 

    if application.applicationState == .active { 
     print("active") 
     let localNotification = UILocalNotification() 
     localNotification.userInfo = userInfo 
     localNotification.alertAction = "Test" 
     localNotification.soundName = UILocalNotificationDefaultSoundName 
     localNotification.alertBody = "Notification test!!" 
     localNotification.fireDate = Date() 
     UIApplication.shared.scheduleLocalNotification(localNotification) 
    } 
} 

これは「アクティブ」印刷が、通知が表示されません。私は何か足跡がないのですか?

ありがとうございます。

+0

プッシュアプ​​リに来るときあなたは 'BRYXBanner'を使用することができ、見てください。https://github.com/bryx-inc/BRYXBanner –

+0

@Museerアンサリ、私は、ライブラリを使用し、それが働いています。ありがとうございました。 –

+0

@yaseerあなたを助けてうれしいです、ありがとうございます。 –

答えて

4

アプリケーションがフォアグラウンドで実行されている場合、iOSは通知バナー/アラートを表示しません。アプリがフォアグラウンドにいる間に通知を受け取る状況に対処するためのコードを書く必要があります。

それとも、人気のサードパーティのライブラリを使用することができます、github.com/bryx-inc/BRYXBanner

import BRYXBanner // import in your class 

// Put this code where you are getting notification 
let banner = Banner(title: "title", subtitle: "subtitle", image: UIImage(named: "addContact"), backgroundColor: UIColor(red:137.0/255.0, green:172.0/255.0, blue:2.0/255.0, alpha:1.000)) 
banner.dismissesOnTap = true 
banner.show(duration: 1.0) 

以下のようにそれを使用していますが、iOS 10.0+を使用している場合、あなたはアプリがフォアグラウンドにあるときにバナーメッセージを表示するための目標に近づくことができます次の方法を使用してください。

// This method will be called when app received push notifications in foreground for iOS 10+ 
@available(iOS 10.0, *) 
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
    completionHandler([.alert, .badge, .sound]) 
} 
+0

completionHandler([.alert、.badge、.sound]) –

1

通知をフォアグラウンドで表示する。デリゲートメソッドを記述する必要があります。\

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

     //Called when a notification is delivered to a foreground app. 

     let userInfo = notification.request.content.userInfo as? NSDictionary 
     print("\(userInfo)") 

    } 

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

     // Called to let your app know which action was selected by the user for a given notification. 
     let userInfo = response.notification.request.content.userInfo as? NSDictionary 
     print("\(userInfo)") 
    } 
+0

私は両方のメソッドをappDelegateで使用しましたが、動作していないため、userInfoは表示されませんでした。これらの方法はどこに置くべきですか? –

+0

この機能をAppDelegateファイルに保存し、 "UNUserNotificationCenterDelegate"というメッセージを追加する必要がある機能を実行することができます – Rohit

0

このコードを追加します。あなたはuserInfoを解析する必要があります。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
    let userInfo = notification.request.content.userInfo 
    let notification = JSON(userInfo) 
    print(notification) 
} 
関連する問題