Swift3.0を使って簡単なiPhoneアプリを作ってみます
スマホで押したボタンの情報をサーバーへ送付します
#1. ボタン押下情報の送付
- Xcodeで新しいSingleViewアプリケーションを用意します
- Buttonを3個用意し、下記の
button1
、button2
、button3
へ接続します - ViewController.swiftに下記をコピペします
文字列の入力
import UIKit
import Alamofire
class ViewController: UIViewController {
let url = "http://192.168.2.1:1880/test10" //送付先を指定
let headers: HTTPHeaders = [
"name": "value"
]
var whichButton:String = ""
@IBAction func button1(_ sender: UIButton) {
whichButton = "ボタン1"
sendJson()
}
@IBAction func button2(_ sender: UIButton) {
whichButton = "ボタン2"
sendJson()
}
@IBAction func button3(_ sender: UIButton) {
whichButton = "ボタン3"
sendJson()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// 送信処理
//func sendJson(sender:UIButton){
func sendJson(){
let parameters: Parameters = [
"moji_param": whichButton, // 文字パラメータの例
"suji_param": 123, // 数値パラメータの例
"nested": [
"nested_param": "ごきげんよう" // ネストしたパラメータの例
]
]
// Alamofireでの送信処理
Alamofire.request(url,
method: .post, // POSTメソッド
parameters: parameters,
encoding: JSONEncoding.default,
headers: headers)
.authenticate(user: "user", password: "password")
.responseJSON { response in
if
let json = response.result.value as? [String: Any],
let prop1 = json["prop1"] as? String
{
debugPrint(prop1)
}
debugPrint(response)
}
}
}
#2. Node-REDで受け取ります
- 下記のNode-REDフローをコピペして動かします
スマホからのボタン情報を受信
[{"id":"662f2b11.b3d67c","type":"http in","z":"6daf1ea.58ba66","name":"","url":"/test10","method":"post","upload":false,"swaggerDoc":"","x":170,"y":60,"wires":[["386498ec.918b48","b89e76f5.b8f22","a5db31ef.24402","d69ff1de.1f35c"]]},{"id":"f814e629.f0152","type":"http response","z":"6daf1ea.58ba66","name":"","statusCode":"","headers":{},"x":790,"y":60,"wires":[]},{"id":"1cc428b9.c7b2ff","type":"template","z":"6daf1ea.58ba66","name":"htmlを返す","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <body>\n <h1>\n 祝!開通!!\n </h1>\n </body>\n</html>","output":"str","x":610,"y":60,"wires":[["f814e629.f0152"]]},{"id":"386498ec.918b48","type":"debug","z":"6daf1ea.58ba66","name":"","active":true,"console":"false","complete":"payload.moji_param","x":310,"y":200,"wires":[]},{"id":"b89e76f5.b8f22","type":"function","z":"6daf1ea.58ba66","name":"","func":"msg.hgt = msg.payload.hgt;\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":60,"wires":[["1cc428b9.c7b2ff"]]},{"id":"a5db31ef.24402","type":"template","z":"6daf1ea.58ba66","name":"ボタンを抽出","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{{payload.moji_param}}が押されました","output":"str","x":280,"y":260,"wires":[["a135aa.73a59258"]]},{"id":"a135aa.73a59258","type":"debug","z":"6daf1ea.58ba66","name":"","active":true,"console":"false","complete":"false","x":490,"y":260,"wires":[]},{"id":"d69ff1de.1f35c","type":"debug","z":"6daf1ea.58ba66","name":"","active":true,"console":"false","complete":"false","x":270,"y":140,"wires":[]}]
- MacbookのNode-REDへ入力された文字列データが送付されることを確認します