swift - 如何将变量从 Swift 传递到 Cloud Code?

标签 swift parse-platform parse-cloud-code

我已经从基本意义上成功理解了 Cloud Code 中的推送通知。我可以从我的应用程序发送一条测试消息,它会显示在我的手机上。

但我不明白如何在我的云代码中更改 request.params.message 的值。

此外,我在下面看到的内容会导致云代码错误“ key 消息的类型无效,预期为字符串,但得到的是数组。”什么数组?

如果不清楚,我正在尝试向订阅特定 channel 的用户发送推送通知。

我的 Swift 代码:

    import UIKit
    import Parse
    import Bolts

    class ViewController: UIViewController {

    var channels = "B08873"
    var minyanID = "bethel08873"
    var message = "This is a test message."



    override func viewDidLoad() {
      super.viewDidLoad()

    let currentInstallation = PFInstallation.currentInstallation()
    currentInstallation.addUniqueObject( (minyanID), forKey:"channels")
    currentInstallation.addUniqueObject(message, forKey: "message")

    currentInstallation.saveInBackground()


}

@IBAction func sendPush(sender: AnyObject) {

    if minyanID == channels {


        PFCloud.callFunctionInBackground("alertUser", withParameters: [channels:message], block: {
            (result: AnyObject?, error: NSError?) -> Void in
            if ( error === nil) {
                NSLog("Rates: \(result) ")
            }
            else if (error != nil) {
                NSLog("error")
            }
        });


    }



}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

我的云代码

Parse.Cloud.define("alertUser", function(request,response){ 

    var query = new Parse.Query(Parse.Installation);
    var theMessage = request.params.channels; 
    var theChannel = request.params.message; 

    query.equalTo(theChannel) 

    Parse.Push.send({ 
    where: query, 
    data : { alert: theMessage, badge: "Increment", sound: "", } }, 
    { success: function() { response.success()   }, 
    error: function(error) { response.error(err) } 
    }); 

});

最佳答案

因为您要发送 B08873 作为键和 This is a test message. 作为它的值。如果你想发送 channel 和消息键/值对,你需要这样做:

PFCloud.callFunctionInBackground("alertUser", withParameters: ["channels": channels , "message": message], .....

在您的 Cloud 函数中,您应该可以像这样访问这些参数:

var theChannels  = request.params.channels;  // returns B08873
var theMessage = request.params.message; // returns This is a test message.

然后像这样调用推送函数:

Parse.Push.send({
    channels: [ theChannels ],
    data: {
    alert: theMessage ,
    badge: "Increment"
    }}, {
        success: function() {
        response.success();
   },
   error: function(error) {
       response.error(error);   
   }
});

关于swift - 如何将变量从 Swift 传递到 Cloud Code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322566/

相关文章:

swift - 如何更新 var in did move to view,在 did move to view 之外快速查看

ios - 当 UIViewController 在启动期间设置为 UIWindow 的根时,不会调用 viewWillAppear 和后续生命周期事件

swift - 我想在点击 tableView Cell 中的按钮时发送数据

ios - XCode6 无法创建存档?

javascript - 解析云函数-按顺序执行的代码

swift - 无法运行项目导致EXC_BAD_ACCESS

iOS swift parse + 如何检查电子邮件是否已存在于数据库中

ios - 使用带云代码的 Stripe + Parse 存储信用卡

javascript - 解析云代码 全部保存

ios - Realm Swift 多用户登录