我已经从基本意义上成功理解了 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/