はじめに
Hnadoffとは、iOS 8を搭載したデバイスとOS X YosemiteをインストールしたMacが近くにあれば、一方のデバイスで作業した内容をもう一方のデバイスに引き継ぐ機能です。
例えば、iPhoneで書き始めたメールの続きをMacで書き上げることができます。
この機能を自分のアプリに組み込むことができます。
HandoffにはアプリからSafari、アプリからアプリ、Safariからアプリの3種類があります。
今回は一番簡単なHandoffを利用してアプリからSafariでウェブページを開いてみます。
Handoffに対応したiOSデバイスとMacが必要です。
iOSデバイスとMacで同じApple IDを使ってサインします。
iOSデバイスとMacのWi-FiとBluetoothをオンにします。
iPhoneから
iOSアプリにHandoffを実装してみます。
import UIKit
class ViewController: UIViewController {
var activity:NSUserActivity = NSUserActivity(activityType: "com.example")
override func viewDidLoad() {
super.viewDidLoad()
self.activity.webpageURL = NSURL(string: "http://www.google.com/")
self.activity.title = "Google"
self.activity.becomeCurrent()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
実行するとOS XのDockにiPhoneマークがついたSafariが表示されます。
クリックするとSafariが起動してウェブページ(今回は http://www.google.com/ )が開きます。
Apple Watchから
次にApple Watchのアプリに実装してみます。
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
}
override func willActivate() {
super.willActivate()
self.updateUserActivity("com.example", userInfo: nil, webpageURL: NSURL(string: "http://www.google.com/"))
}
override func didDeactivate() {
super.didDeactivate()
}
}
NSUserActivity
ではなくfunc updateUserActivity(_ type: String, userInfo userInfo: [NSObject : AnyObject]?, webpageURL webpageURL: NSURL?)
を利用します。
Apple Watch(実機)で実行します。iPhoneのロック画面の左下にSafariのアイコンが表示されます。
Safariのアイコンを上にスワイプするとSafariが起動してウェブページが開きます。
このとき、OS XのDockにはApple WatchマークがついたSafariが表示されます。