Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2019年02月15日

Apple Watch / WatchOS App トラブルシューティング



Apple Watch上で動作するWatchOS App開発 トラブルシューティング。

1. 実機向けのビルド&実行時に、
Error launching '****** Watchkit extension" - SPErrorUnknownMessage
と表示された場合は、PushNotificationPayload.apns が破損、あるいは記述に誤りがある可能性がある。

プロジェクトを作成する時に、「Include Notification Scene」にチェックを入れ、通知(PushNotification)をデフォルトで使用するようにして、実際は通知を使用しなかった場合に、このエラーが表示される。シミュレータでの実行時はエラーは表示されないが、実機での動作時にはエラーが表示される。

対応策:
Watch ExtensionのEdit Schemeを開き、Watch InterfaceをMainに設定する。
(通知の設定を行わずに、Watch Interfaceに PushNotificationPayload.apnsが設定されているとエラーになる)

参考記事:
https://stackoverflow.com/questions/34722455/error-launching-watchkit-extension-sperrorunknownmessage



2. シミュレータ向けのビルド&実行時に、
Couldn’t communicate with a helper application. apple watch
と表示された場合

対応策:
XCodeのPreferences → Source Control → Git を開き、全ての項目を空白にする。
元から空白になっている場合は、画面上のチェックマークにチェックを入れて再び解除する。
但し、Git を使用していない場合にのみ有効。Gitを使用している場合の対応策は不明。



3. Watch App Extensionをビルド&実行した場合、iPhoneとApple Watchとのデバッグが可能であり、別々のコンソールを参照することが出来るが、Apple Watch側のコンソールしか見られない場合がある。

対応策:
Watch ExtensionのEdit Schemeを開く。
・ExecutableをWatch Appの場合は、WatchOSアプリのバイナリ(.app)を設定する。
・iOSアプリの場合は、iOS アプリのバイナリ(.app)を設定する。

この設定の場合、Executableで設定したアプリのコンソールのみ参照できる。


※ Apple Watch向けWatchOS AppをiOSアプリにバンドルする場合、スキーム(Scheme)は、iOS App、Apple Watch、App Watch Extensionの3つが作られる。それぞれのスキーム毎に、動作がデバイスに及ぶ範囲が異なるので注意が必要である。

・スキーム iOS AppでBuild & Runした場合、iOS Appで操作したものはiOS Appに反映されるが、Apple Watchで操作した結果はiOS Appには反映されない。
・スキーム Apple WatchでBuild & Runした場合、iOS App側で記述された処理は基本的に実行されるが、ローカル通知やCore Dataへの登録は実行されない。
・スキーム Apple Watch ExtensionでBuild & Runした場合、ExecutableにiOS Appを指定した場合は、iOS App側で記述された処理はローカル通知やCore Dataへの登録も含めて全て実行される。
・スキーム Apple Watch ExtensionでBuild & Runした場合、ExecutableにApple Watch Extensionを指定した場合は、iOS App側で記述された処理は基本的に実行されるが、ローカル通知やCore Dataへの登録は実行されない。


App Storeで配信されているAppについては、バックグラウンドまたはフォアグラウンドでiOS Appが起動されていないと、WatchOS Appで操作した結果はiOS Appには反映されないので注意。(ユーザ向けのチュートリアルで明記して周知徹底する必要がある)



4. シミュレータ向けのビルド&実行時に、
The operation couldn’t be completed. (LaunchServicesError error 0
と表示された場合

対応策:
Watch App Extensionおよび、Watch App のTARGETS → Build Settings → Valid Architectureに、
$(ARCHS_STANDARD)
を設定する。



5. テーブル(WKInterfaceTable)の interface.storyboardのRow Controller(rowType)が使用するカスタムクラスは、テーブル行に表示するオブジェクト(ラベルや画像など)を定義する。


参考記事:
https://developer.apple.com/library/archive/documentation/General/Conceptual/WatchKitProgrammingGuide/Tables.html#//apple_ref/doc/uid/TP40014969-CH14-SW1
Listing 13-1 shows a sample row controller class definition. In this example, the class contains outlets for an image and a label.




6. テーブル(WKInterfaceTable)の setNumberOfRows: withRowType: に設定する文字は、interface.storyboardのRow ControllerのAttributes inspectorで定義する identifierで設定した文字と同一にすること。

参考記事:
http://www.minimalab.com/blog/2015/05/16/watchkit-table/

https://developer.apple.com/library/archive/documentation/General/Conceptual/WatchKitProgrammingGuide/Tables.html#//apple_ref/doc/uid/TP40014969-CH14-SW1
Figure 13-1 shows an example of a row controller configured with the identifier mainRowType and the class MainRowType, which is defined in Listing 13-1. The rowDescription and rowIcon outlets in that class are connected to the image and label objects in the row.




7. 実機でのビルド&実行時に、iOSデバイスが(Apple Watch not supported)と表示され、実機動作が出来ない場合

対応策:
(1) schmeをiOSデバイスのみの実行に切り替えて、一度iOSデバイスでアプリを起動する。
(2) macとiOSデバイスとの接続をワイヤレスではなく、ケーブル接続にしてビルド&実行する。
(3) iPhoneのWatchアプリを起動して文字盤を切り替えてみる。(ペアリング動作を実行)



8. 実機でのビルド&実行時に、XCodeの実行ステータスが「Run」の状態になっていてもApple Watchにアプリがインストールされない場合

対応策:
(1) 上記7.を試す。
(2) Apple Watchを再起動する。
(3) ペアリングされているiOSデバイスを再起動する。
(4) macを再起動する。



9. WKInterfaceTable上に複数のWKInterfaceLabelを上下に並べて配置出来ない場合

対応策:
interface.storyboard → WKInterfaceTable → Group → Attribute Inspector → Layout をVertical に設定する。

参考記事:
https://stackoverflow.com/questions/29075634/multiple-wkinterfacelabel-on-wkinterfacetable



posted by mobileDeveloper at 10:36 | Comment(0) | Apple Watch はてなブックマーク - Apple Watch / WatchOS App トラブルシューティング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。