現役プログラマのWordPressカスタマイズ相談

WordPress(ワードプレス)のお悩み、うまくいかなくてお困りなこと、不具合調査、新規制作依頼まで、ウェブアプリケーションエンジニアがあなたをサポートします。

AppleWatchとiPhoneの通信 watchkit swift 開発

watchkitとiOS間でのデータ共有の方法の1つです。

iOS(iPhone)側

※extensionでのみ記述

import WatchConnectivity

//WCSessionDelegate
extension ViewController: WCSessionDelegate {
	let wcSession = WCSession.default()

	func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {

	}

	@available(iOS 9.3, *)
	func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
		print("activationDidComplete")
	}

	func sessionDidBecomeInactive(_ session: WCSession) {
		print("sessionDidBecomeInactive")
	}

	func sessionDidDeactivate(_ session: WCSession) {
		print("sessionDidDeactivate")
	}

	// AppleWatch viewDidLoad()などから呼び出す
	func isSupportAppleWatch() {
		if WCSession.isSupported() {
			wcSession.delegate = self
			wcSession.activate()    
		}
	}
}

viewDidLoad()側で isSupportAppleWatch() を呼び出してください。

watchOS(AppleWatch側)
import WatchKit
import Foundation
import WatchConnectivity

class InterfaceController: WKInterfaceController,WCSessionDelegate {
    
	let wcSession = WCSession.default()

	override func awake(withContext context: Any?) {
		super.awake(withContext: context)

		// iPhoneとAppleWatchの連携チェック
		if WCSession.isSupported() {
			wcSession.delegate = self
			wcSession.activate()
		}
	}
    
    override func willActivate() {
        super.willActivate()
    }
    
    override func didDeactivate() {
        super.didDeactivate()
    }
    
    func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
	// iPhoneとの接続チェック
	if self.wcSession.isReachable {
		// iPhone側へ送信するデータ
		let watchMessage = ["": ""]
		// iPhone側へデータを送信
		self.wcSession.sendMessage(watchMessage, replyHandler: {(reply) -> Void in
			// iPhone側から正常に返答があった場合
			print(reply)
		}){(error) -> Void in
			// TimeOutや型不正、データ長オーバーなど正常に返答がなかった場合
			print(error)
		}
	}
}

Cloud9でNode.js(nvm, npm)のアップデート手順

f:id:jsaz:20170302191052p:plain

Cloud9でAngular2を試そうとしています。

Angular2の実行要件が
node v5.x.x以上、npm 3.x.x以上
ということで、Cloud9のデフォルトのままでは利用できませんでした。


Node.jsをアップデートしていきます。

  • node.jsのアップデート
  • npmのアップデート
  • nvmとnpmって何?
続きを読む

JSONデコードの第二引数

通常、json_decode()を使うと結果はstdClass(オブジェクト)になります。


今日のJSONデータサンプルは、WBC強化試合[侍ジャパンCPBL選抜チャイニーズ・タイペイ]の日本の先発メンバーです。

{"1":{"position":"DesignatedHitter","name":"\u5c71\u7530"},"2":{"position":"SecondBaseman","name":"\u83ca\u6c60"},"3":{"position":"ShortStop","name":"\u5742\u672c"},"4":{"position":"LeftFielder","name":"\u7b52\u9999"},"5":{"position":"FirstBaseman","name":"\u4e2d\u7530"},"6":{"position":"RightFielder","name":"\u5e73\u7530"},"7":{"position":"ThirdBaseman","name":"\u677e\u7530"},"8":{"position":"Catcher","name":"\u5c0f\u6797"},"9":{"position":"CenterFielder","name":"\u79cb\u5c71"}}

アサヒスーパードライ プレゼンツ 侍ジャパン壮行試合 侍ジャパン 対 CPBL選抜チャイニーズ・タイペイ 第1戦|トップチーム|野球日本代表 侍ジャパンオフィシャルサイト

  • json_decodeの第二引数
  • json_decode false(第二引数なし)
  • json_decode false(第二引数あり true)
続きを読む

JSON 関数【あまり使わないPHP関数シリーズ】

あまり使わないけど知ってたら便利なPHP関数シリーズ第一弾。

JSONを扱うPHP関数といえば、
JSONエンコード、デコードの2つですが、
その他にも便利な関数があります。

今回JSONデータは郵便番号-住所検索APIのサンプルデータを使います。

{"code":200,"data":{"pref":"\u611b\u77e5\u770c","address":"\u540d\u53e4\u5c4b\u5e02\u4e2d\u6751\u533a\u4e0a\u7c73\u91ce\u753a","city":"\u540d\u53e4\u5c4b\u5e02\u4e2d\u6751\u533a","town":"\u4e0a\u7c73\u91ce\u753a","fullAddress":"\u611b\u77e5\u770c\u540d\u53e4\u5c4b\u5e02\u4e2d\u6751\u533a\u4e0a\u7c73\u91ce\u753a"}}

郵便番号-住所検索API


  • json_last_error
  • json_last_error_msg
  • サンプル
続きを読む