Appleが一般にも公開している範囲で書いております。また、本記事の内容は私がハマった点について記録したもので、この対応法が正しいことを保証するものではありません。
基本的にはXcodeが自動的に
watchOS 1 → watchOS 2
へコンバートしてくれるのですが、これだけだとビルドが通りませんでした。私がハマった点をメモしておきます。
1. WatchKit Extensionのbundle identifier問題
watchOS 2にコンバート後、ビルドしようとしたら
Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier.
というエラーが。
つまり、WatchKit Extensionのbundle identifierが、親のWatchAppのbundle identifierをPrefixに持ってないとダメってことらしいです。(watchOS 1ではこんなことはなかった)
同じような問題に直面している人も見つけました。
念のため実験
試しにXcodeで新しいWatch Appを作ってみたところ、bundle identifierは次のようになっていました。
Watch App | com.koogawa.SampleWatchOS2.watchkitapp |
---|---|
WatchKit Extension | com.koogawa.SampleWatchOS2.watchkitapp.watchkitextension |
この状態でビルドすると、問題なく動きます。
次に、WatchKit Extensionのbundle identifierから「watchkitapp」を取り除いてビルドしてみます。
すると、
Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier.
Embedded Binary Bundle Identifier: com.koogawa.SampleWatchOS2.watchkitextension
Parent App Bundle Identifier: com.koogawa.SampleWatchOS2.watchkitapp
というエラーが出てビルドに失敗しました。
やはり、watchOS 2では WatchKit Extension の bundle identifier が、親の WatchApp の bundle identifier を Prefix に持ってないといけないようです。
プロビジョニングプロファイル作りなおさないとダメですな/(^o^)\
2. startUpdatingLocationが使えない問題
これは、WWDC 2015のビデオでも解説されていましたね。
代わりに
-requestLocation
メソッドを使えば良さそうです。
3. App Groupsでデータを共有できない問題
問題というか、仕様?
確かに今まではiPhoneの中で動いてものがApple Watch側に移動したので、共有できないのは当然なのかも。
(▲watchOS 2 Transition Guideより引用)
上記のスレッドを見るとWatch Connectivityを使うようなことが書かれていますが、こちらは調査中です。(詳しい方がおりましたら教えて下さい!)
2015.7.9追記:Watch Connectivityについてまとめました。
http://qiita.com/koogawa/items/b39e1419cbbcda8efc07
今後はWatch Connectivityを使ってデータを受け渡すのが良さそうですね。
4. NSURLConnection がエラーになる問題
Transition Guide にもある通り、watchOS 2からは NSURLSession
を使って Apple Watch 単体でサーバとの通信ができるようになりました。
一方、NSURLConnection
による通信を実行しようとすると次のようなエラーが出るようになりました。
Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
NSURLConnection
ベースで書かれたライブラリを使っている場合は NSURLSession
ベースのものに切り替える必要がありそうです。
参考リンク
- watchOS 2 Transition Guide - Appleによる移行ガイド。一読することをオススメします。
***
また問題が見つかったら追記したいと思います。(この記事をストックしておいて頂ければ更新時に通知します)