LoginSignup
63
60

More than 5 years have passed since last update.

watchOS 2 対応時にハマったこと

Last updated at Posted at 2015-07-03

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側に移動したので、共有できないのは当然なのかも。

c725d420-826b-9431-26d8-69a920e19443.png
(▲watchOS 2 Transition Guideより引用)

Watch OS 2 and App Groups.

上記のスレッドを見ると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 ベースのものに切り替える必要がありそうです。

参考リンク

***

また問題が見つかったら追記したいと思います。(この記事をストックしておいて頂ければ更新時に通知します)

63
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
60