Apple Watch -> iPhoneとのデータ情報更新の情報を入手しました。
ソースを眺めているだけでは習得出来ないので「WatchKitをさわってみた」このページに記載されている通りに制作して見ました。
写生ですが、動作確認でき勉強になりました。
自分のメモとして公開しておきます。
詳細はリンク先を参照願います。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
// Watch Kit App からiPhone側の親アプリが起動された時に呼ばれます
func application(
application: UIApplication!,
handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!,
reply: (([NSObject : AnyObject]!) -> Void)!) {
var count: String = userInfo["content"] as String!
var appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
var vc:ViewController? = appDelegate.window?.rootViewController as? ViewController
vc?.countLabel.text = count
reply(["from":"watchkitsample"])
}
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
}
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var countLabel: UILabel!
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.
}
}
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet weak var countLabel: WKInterfaceLabel!
var count = 0
// 最初に呼び出されるメソッド
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
}
// ユーザーにUIが表示されたタイミングで呼び出されるメソッド
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
// UIが非表示になったタイミングで呼び出されるメソッド
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
// カウントラベル
func updateCountLabel() {
countLabel.setText(String(count))
// iPhone側の親アプリを起動することができます。
//iPhone側の親アプリに値を連携
// userinfo key:content 値:count
WKInterfaceController.openParentApplication(["content": String(count)],
reply: {obj, error in
NSLog("return from %@", obj["from"] as String!)
})
}
// カウントダウンアクション
@IBAction func countDown() {
if(count > 0) {
count--
updateCountLabel()
}
}
// カウントダウンアップ
@IBAction func countUp() {
count++
updateCountLabel()
}
}
これでApple Watch側でそれぞれのカウントボタンをタップするとiPhone(親アプリ)が起動し、
Apple Watch側のカウントと親アプリ側のカウントの表示が同期します。
GitHub CountWatchKit
▫️参考にしたページ
WatchKit AppからiPhone Appを起動する方法
WatchKitにおける iPhone Appとのデータ共有
コメントをお書きください