我正在尝试向特定收件人发送推送通知。我现在只是使用在解析后端存在的对象ID的硬编码数组进行练习。

我在appDelegate中调用代码。我的证书和个人资料中有正确的权利。在分析仪表板中,它表示正在发送通知,但在测试设备上未收到通知。测试设备可以接收从解析仪表板发送的通知。我已经包括了必需的框架。

码:
func应用程序(应用程序:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData){
        让安装= PFInstallation.currentInstallation()
        println(“已使用设备令牌(deviceToken)注册”)
        installation.setDeviceTokenFromData(deviceToken)
        installation.saveInBackground()
        println(“对象ID可能是(installation.objectId)”)

    let query = PFQuery()
    let objectIDArray : [String] = ["uQfdVtB6pk","kUL0EeXjzY", "6uGdmKv599"]

    for object in objectIDArray {
        println("objectid is \(object)")

        let message: NSString = "test" as NSString

        var data = [ "title": "Some Title",
            "alert": message]

        var userQuery: PFQuery = PFUser.query()!
        userQuery.whereKey("objectId", equalTo: object)

        var query: PFQuery = PFInstallation.query()!
        query.whereKey("Installation", equalTo: installation)
        query.whereKey("device_id", equalTo: object)

        var push: PFPush = PFPush()
        push.setQuery(query)
        push.setData(data)
        push.sendPushInBackgroundWithBlock {
            (success: Bool, error: NSError?) -> Void in
            if success {
                println("IN success")
            } else {
                println("IN ERROR WITH \(error?.localizedDescription))")
            }
        }

    }

}


我正在进入“成功”

最佳答案

您在哪里运行此代码?另外,“ device_id”是什么?那是您添加到Installation类的另一列吗?

您可能需要在Installation类中添加指向当前用户的指针。这样,您可以在将来查询特定用户的安装。

您也不需要使用for循环来遍历所有objectIds。所有这些都可以通过使用以下查询的一个查询来处理:

var query: PFQuery = PFInstallation.query()!
query.whereKey("objectId", containedIn: objectIDArray)

var push: PFPush = PFPush()
push.setQuery(query)
push.setData(data)
push.sendPushInBackgroundWithBlock {
    (success: Bool, error: NSError?) -> Void in
    if success {
        println("IN success")
    } else {
        println("IN ERROR WITH \(error?.localizedDescription))")
    }
}

10-08 05:46