Swift: WatchConnectivityでAppWatchとiPhoneのデータ連携 - Fuwafuwa's memorandum

Fuwafuwa's memorandum

Data analysis, development, reading, daily feeling.
MENU

Swift: WatchConnectivityでAppWatchとiPhoneのデータ連携

AppWatchとiPhoneのデータの連携をWarchConnectivityで行います。
watchOS2からはAppGroupsは使用できなくなっているみたいです。

ここではwatchにおけるデータをiPhoneで受け取りデバッグ画面に値を出力する。

File/New/Projectで新規プロジェクトの作成。
File/New/Target..でiOSじゃらwatchOS、Applicationを選択し、WatchKitAppを選択、Next。
↓AppDelegate.swiftに下記記載。

import WatchConnectivity

class AppDelegate: UIResponder, UIApplicationDelegate, WCSessionDelegate { //WCSessionDelegateを追記
    var window: UIWindow?
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        if WCSession.isSupported(){
            let session = WCSession.defaultSession()
            session.delegate = self
            session.activateSession()
        }
        return true
    }
}
↓ExtensionDelegate.swiftに下記記載。
import WatchConnectivity

class ExtensionDelegate: NSObject, WKExtensionDelegate,  WCSessionDelegate {//WCSessionDelegateを追記

    func applicationDidFinishLaunching() {
        // Perform any final initialization of your application.
        if WCSession.isSupported(){
            let session = WCSession.defaultSession()
            session.delegate = self
            session.activateSession()
        }
    }
}
↓InterfaceController.swiftに下記記載。
import WatchKit
import Foundation
import WatchConnectivity

class InterfaceController: WKInterfaceController,  WCSessionDelegate {

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
        let applicationDict = [ "Hallow": "World" ];
        
        do {
            try WCSession.defaultSession().updateApplicationContext( applicationDict )
        } catch {
            print( "Send Error" );
        }
    }
}
↓ViewController.swiftにのclass ViewController内に下記を記載。
    func session( session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject] ) {
        let hallow = applicationContext["Hallow"] as! String
        
        dispatch_async( dispatch_get_main_queue() ) {
            print( hallow) // printed "World"
        }
    }
}
watchとiPhoneをそれぞれ起動してください。 デバッグ画面にWorldと出力されます。

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。