アプリケーションにfirebaseメッセージを実装しようとしていますが、アプリケーションがアクティブなときに通知を受信しています(コンソールで表示できます。アプリがアクティブな状態です。閉じている場合は、アプリが再びアクティブになるまで表示されません)。Firebaseアプリケーションがアクティブでないときに表示されない
私はバックグラウンド通知をオンにしています。また、p12証明書をfirebase設定にロードしました。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Fabric.with([Crashlytics.self])
FirebaseApp.configure()
Messaging.messaging().delegate = self
Messaging.messaging().shouldEstablishDirectChannel = true
if #available(iOS 11.0, *){
print("IOS 11")
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
}else if #available(iOS 10.0, *){
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
return true
}
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
print("Firebase registration token: \(fcmToken)")
}
@nonobjc func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
Messaging.messaging().apnsToken = deviceToken as Data
}
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
// Convert to pretty-print JSON
guard let data =
try? JSONSerialization.data(withJSONObject: remoteMessage.appData, options: .prettyPrinted),
let prettyPrinted = String(data: data, encoding: .utf8) else {
return
}
print("Received direct channel message:\n\(prettyPrinted)")
}
func application(received remoteMessage: MessagingRemoteMessage){
print("Received Remote Message")
guard let data =
try? JSONSerialization.data(withJSONObject: remoteMessage.appData, options: .prettyPrinted),
let prettyPrinted = String(data: data, encoding: .utf8) else {
return
}
print("Received direct channel message:\n\(prettyPrinted)")
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print(userInfo)
}
編集1: 、ここでは、コンソールに私が受け取るサンプル通知である
{
"from" : "480981200252",
"notification" : {
"e" : "1",
"body" : "hey"
},
"collapse_key" : "com.amplesftwr.thelifeofcarl"
}
編集2: ここでは写真である。ここ
は私のアプリデリゲートのコードがありますの背景モードの設定:
これはiOS 10では有効ですが、11では動作しませんか? – Honey
わかりません10で動作する場合は11を使用しています。 –
アップデート:ios 10と同じ結果 –