iOS- FCM在应用被终止时未收到推送通知

时间:2018-10-09 05:11:35

标签: ios swift apple-push-notifications firebase-cloud-messaging

我的应用程序被杀死时,我没有收到推送通知,但是在后台运行良好。收到通知后,我正在通过从领域数据库获取数据来生成本地通知。在有效负载内容中,可用密钥为1。请向我提示出现错误的地方,获取fcm通知或在后台运行。

这是我的代码-

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let state: UIApplicationState = UIApplication.shared.applicationState

    print(userInfo)
    if state == .active{
        let messageBody = userInfo["aps"] as! Dictionary<String,Any>
        print("@@@@@@@@@@@@@ got notification")
        if let message = messageBody["message"] {
            let messageDict = DCUtilityClass.convertToDictionary(text: message as! String)
            let _ = DCPushNotificationAPI.getNotificationResult(info: (messageDict)!)
        }
    } else if state == .inactive {
        let messageBody = userInfo["aps"] as! Dictionary<String,Any>
        print("@@@@@@@@@@@@@ got notification")
        if let message = messageBody["message"] {
            let messageDict = DCUtilityClass.convertToDictionary(text: message as! String)
            let _ = DCPushNotificationAPI.getNotificationResult(info: (messageDict)!)
        }
    } else if state == .background {
        let messageBody = userInfo["aps"] as! Dictionary<String,Any>
        print("@@@@@@@@@@@@@ got notification")
        if let message = messageBody["message"] {
            let messageDict = DCUtilityClass.convertToDictionary(text: message as! String)
            let _ = DCPushNotificationAPI.getNotificationResult(info: (messageDict)!)
        }
    }

    completionHandler(UIBackgroundFetchResult.noData)
    //receiveMessageMethod(recieveMessage: messageBody as! Dictionary<String, Any>)
}

class func triggerLocalPushNotification(title:String, body:Dictionary<String,Any>) {


    //creating the notification content
    let content = UNMutableNotificationContent()

    //adding title, subtitle, body and badge

    let messageDictModel = DCChatListHistoryModel.init().initWithUserChatDictionary(userDictionary: body)

    if messageDictModel.mIsGroup{
        if messageDictModel.mGroupDetailsModelArray.count == 0 {
            let groupData =  DCDBDataUtilityClass.getGroupInfoByConversationId(id: messageDictModel.m_id)
            content.title = (groupData?.mGroupsModelArray.first?.mGroup_name)!
            content.body = messageDictModel.mlatest_message
        } else {
            content.title = (messageDictModel.mGroupDetailsModelArray.first?.mGroup_name)!
            content.body = messageDictModel.mlatest_message
        }

    } else {
        var messageSender = ""
        if messageDictModel.mMessageFrom == UserDefaults.standard.value(forKey: "user_id") as! String {
            messageSender = messageDictModel.mMessage_to
        } else {
            messageSender = messageDictModel.mMessageFrom
        }
        let name = DCDBDataUtilityClass.getInfoById(id: messageSender)
        content.title = (name?.mFull_name)!
        content.body = messageDictModel.mlatest_message
    }
    //getting the notification trigger
    //it will be called after 5 seconds
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.2, repeats: false)

    //getting the notification request
    let request = UNNotificationRequest(identifier: "iOSNotification", content: content, trigger: trigger)

    //adding the notification to notification center
    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

}

0 个答案:

没有答案