問題是通知服務擴展本身是無用的,除了應用程序被終止時可以顯示的一件事情。因此,通過inapp通知和內容擴展,我可以顯示自定義通知,但只有當應用程序未被終止/強制關閉時纔會顯示該通知。 問題:如果在有內容和服務通知擴展的情況下如何管理inapp通知,以及如何強制通知服務擴展來調用/喚醒通知內容擴展。IOS:Inapp通知+通知服務+內容擴展
回答
看起來我需要清理項目並刪除應用程序並重新安裝。下面是FCM完整步驟來實現這種情況下,也許有些步驟是多餘的,但我不想去觸摸它,而它正在工作:
應用程序被殺害/關閉:通知出現自定義內容視圖 應用程序是在後臺:通知出現使用自定義內容視圖 應用程序是在前臺:通知到達默默
從服務器端的通知應該是這樣的
{ 「notification」://必填 { 「data」:{}, 「body」:「」//似乎也是強制性的,無論如何,您可以在服務擴展中更改它 } 「content_available」:true,//強制性 「mutable_content」:真實的,//強制 「要」: 「」 //強制 }
創建通知服務擴展目標。
- 在NSExtension下的info.plist中,將UNNotificationExtensionCategory添加爲Array,並添加一個具有所需名稱的類別,但在任何地方都使用相同的名稱。
- 在通知服務擴展目標中,確保所有內容與主要目標(快速版本,構建版本,部署目標,設備)相同。
- 在功能中添加應用程序組(應與主目標中的相同)。
在NotificationService在didReceive得到可變內容
bestAttemptContent =(request.content.mutableCopy()作爲?UNMutableNotificationContent)
添加您的類別,內容
bestAttemptContent.categoryIdentifier =「您的類別「
呼叫
contentHandler(bestAttemptContent)
後,出現標準通知。創建通知內容擴展目標。
- 在NSExtension下的info.plist中,將UNNotificationExtensionCategory添加爲Array,並添加一個您已爲該服務創建的名稱相同的類別。
- 根據您的設計更改MainInterface.storyboard中的設計。
- 在NotificationViewController中,自定義數據將在
notification.request.content.userInfo["gcm.notification.data"]
中。所以在NotificationViewController中用數據填充視圖。不要忘記preferredContentSize
。 - 在功能中添加應用程序組(應與主目標中的相同)。
- 主要目標AppDelegate工具
UNUserNotificationCenterDelegate
。 在
didFinishLaunchingWithOptions
添加UNUserNotificationCenter.current()代表=自 UNUserNotificationCenter.current()requestAuthorization(選項:[.badge,.alert,.sound])。。{(授予,誤差) } application.registerForRemoteNotifications()
在AppDelegate中添加
FUNC應用(_應用:UIApplication的,didRegisterForRemoteNotificationsWithDeviceToken deviceToken :數據){。 Messaging.messaging()apnsToken = deviceToken }
在userNotificationCenter willPresent檢查,如果您的應用程序沒有運行。我做這樣說:
FUNC userNotificationCenter?(_中心:UNUserNotificationCenter,willPresent通知:未通知,withCompletionHandler completionHandler:@escaping(UNNotificationPresentationOptions) - >無效){ 如果self.window .rootViewController == {零 completionHandler ([.badge,.alert,.sound]) } UIApplication.shared.applicationIconBadgeNumber = UIApplication.shared.applicationIconBadgeNumber + 1 }
拉手無聲通知這裏:
FUNC應用(_應用:UIApplication的,didReceiveRemoteNotification USERINFO:[AnyHashable:任何],fetchCompletionHandler completionHandler:@escaping(UIBackgroundFetchResult) - >空隙)
- 手柄上在通知中的抽頭在這裏:
FUNC userNotificationCenter(_中心:UNUserNotificationCenter,didReceive響應:UNNotificationResponse,withCompletionHandler completionHandler:@escaping() - >無效)
在這裏你可以自定義DAT一個用同樣的方式response.notification.request.content.userInfo["gcm.notification.data"]
- 如果你有異步調用網絡加載數據/圖像不會忘記實現
func application(_ application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: @escaping() -> Void)
似乎是所有:)。啊,擴展工作正在開始IOS 10。請糾正我,如果有什麼缺失或什麼是多餘的。
- 1. 通知擴展
- 2. 擴展通知
- 3. 本地通知的通知服務擴展
- 4. 帶NSLocalizedString的通知服務擴展
- 5. 與推送通知服務擴展
- 6. 通知服務擴展不起作用
- 7. iOS 10通知服務擴展
- 8. 通知服務通知
- 9. 小縮略圖與通知的內容擴展倒塌的通知
- 10. 通知服務
- 11. 帶擴展卡的Chrome擴展通知
- 12. Chrome擴展更新通知
- 13. Firefox擴展啓動通知
- 14. iOS共享擴展通知
- 15. Chrome擴展顯示通知
- 16. 無法擴展Firebase通知
- 17. 可擴展通知android 4.1
- 18. 調試通知擴展
- 19. Joomla擴展更新通知
- 20. 點擊通知時通知android服務
- 21. 通過Android擴展Android通知
- 22. 擴展,通知用戶有關新的網站內容
- 23. 如何獲取通知內容擴展的寬度?
- 24. iOS 10通知內容擴展:使用NSURLSession?
- 25. 無法調試notificaton內容擴展,在IOS 10通知
- 26. 更改通知內容擴展背景顏色
- 27. 從內容腳本觸發Chrome擴展程序通知
- 28. 鉻擴展名 - 通知內容腳本關於被刪除的擴展名
- 29. 通知服務Android
- 30. 服務棧通知