推送通知未显示在设备上

时间:2019-03-07 23:33:35

标签: ios swift firebase apple-push-notifications

我已经写了很多代码,在其中设置通知,并尝试将一个用户的通知发送给另一个用户,但是现在这是我的问题,其他用户的设备上没有任何通知。该应用程序不会崩溃,我也没有构建失败,所以我真的不知道自己在哪里。预先感谢您的回答,这是我的代码...

//有关AppDelegate.swift中的推送通知的部分

static let NOTIFICATION_URL = "https://gcm-http.googleapis.com/gcm/send"
static var DEVICEID = String()
static let SERVERKEY = "AAAAuIcRiYI:APA91bHA8Q4IJBG9dG4RY9YOZ3v4MlcVZjmYs3XhiMY3xpQm3bTSjrINUiImaE0t17Y6mghR2vN1ezJTMSVFmHlgOUBX8KQZEckgwCkc1tlMdpm_UjxobmrHf3GbvwrKtHVZsJR-v1GG"

#available(iOS 10.0, *){
        UNUserNotificationCenter.current().delegate = self
        // Request Autorization.
        let option : UNAuthorizationOptions = [.alert,.badge,.sound]
        UNUserNotificationCenter.current().requestAuthorization(options: option) { (bool, err) in
        }
    }
    else{
        let settings : UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert,.badge,.sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }
    application.registerForRemoteNotifications()
    UIApplication.shared.applicationIconBadgeNumber = 0

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
    guard  let newToken = InstanceID.instanceID().token() else {return}
    AppDelegate.DEVICEID = newToken
    connectToFCM()
}

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

    let notification =  response.notification.request.content.body
    print(notification)
    completionHandler()
}

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    guard let token = InstanceID.instanceID().token() else {return}

    AppDelegate.DEVICEID = token
    print(token)
    connectToFCM()
}

func connectToFCM()
{
    Messaging.messaging().shouldEstablishDirectChannel = true
}

//关于messages.swift中通知的部分,我在用户发送消息后以接收消息的人同时接收通知的方式调用此函数。

fileprivate func setupPushNotification(fromDevice:String)
{

    Database.database().reference().child("users").child(userID).observeSingleEvent(of: .value, with: { (snapshot) in

        let value = snapshot.value as? NSDictionary
        let device = value?["device"] as? String ?? ""

    guard let message = self.authorText else {return}
    let title = "You received a new message !"
    let body = "from \(message)"
    let toDeviceID = device
    var headers:HTTPHeaders = HTTPHeaders()

    headers = ["Content-Type":"application/json","Authorization":"key=\(AppDelegate.SERVERKEY)"

    ]
    let notification = ["to":"\(toDeviceID)","notification":["body":body,"title":title,"badge":1,"sound":"default"]] as [String:Any]

    Alamofire.request(AppDelegate.NOTIFICATION_URL as URLConvertible, method: .post as HTTPMethod, parameters: notification, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
        print(response)
    }
    })

}

0 个答案:

没有答案
相关问题