前回の記事にも書きましたが
AppleWatchのシミュレータはこと通知に関しては機能性が低く
実機で試してみないと分からないことは多かったです。

そこでハマったポイントをまとめてメモ。 

1.AppleWatchのUDIDをdeveloper centerに登録する必要がある。
AppleWatchのUDIDはペアリング済のiPhoneをつないだ状態で
XcodeのWindow>Devicesを見て確認できます。




iPhone同様developer centerでデバイス登録して
デバイスに紐付けた開発用プロビジョニングを用いてビルドする必要があります。

それができていないと
(アプリ名)のインストールに失敗しました。エラー:アプリケショーンの検証に失敗しました
というエラーがAppleWatchに出ます。

ちなみにアプリケショーン!?というのは原文ママです笑
そのうち直ると思いますが。

2.AppleWatchの通知は初期設定で腕につけている時しか来ない。
これは既にいろんなところで記事になっているので確認だけ。
詳しくは下記リンクなど御覧ください。

Watch App の開発時に通知を楽に検証する方法
http://blog.fenrir-inc.com/jp/2015/04/turn-off-wrist-detection-for-watch-app-development.html

3.通知画面のカスタマイズはカテゴリを指定しないと出来ない。
ストーリーボードにNotification Interface Controllerで
カスタマイズした通知画面を用意してあったんですが
通知画面が標準のままなので困りました。

カスタマイズした通知画面はカテゴリごとに作られていました。



標準ではmyCategoryというカテゴリの名前になっています。 

(iPhone側で)通知を予約するインスタンスの
categoryプロパティに同じ名前をセットする必要があります。

4.ローカル通知のDynamic Interface設定はdidReceiveLocalNotificationメソッドで行う。
これは当たり前といえば当たり前なのですが。

プッシュ通知では
- (void)didReceiveRemoteNotification:(NSDictionary *)remoteNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler {
completionHandler(WKUserNotificationInterfaceTypeCustom);

とすればDynamic Interfaceの通知画面が表示されますが
ローカル通知ではStaticなままです。

ローカル通知でDynamic Interfaceを使いたければdidReceiveRemoteNotificationの代わりに
didReceiveLocalNotificationを使います。

未解決な問題

1.Dynamic Interfaceにボタンを配置できない。
ストーリーボードでDynamic Interfaceの上にボタンを乗せると下記のエラーが出ます。
Illegal Configuration: Buttons are not supported in Notification interfaces.

その代わり、PushNotificationPayload.apnsで指定したボタンがシミュレータでは表示されましたが
実機では出ません。

PushNotificationPayload.apns(の記述)がシミュレータ専用ということなのか
あるいは(僕が試したローカル通知でなく)プッシュ通知であれば
シミュレータと同じように表示されるのか...?

いずれにせよボタンが配置できず困っているので
情報を待ちたいところです。

2.Long Lookについて

これなんですが、そもそもShort Look / Long Lookで
何が表示されるのかというところから確認したいですね。。。

Dynamic/Staticとは(わざわざ区別してあるぐらいですから)違うんでしょう...(;´д`)

腕の上げ下げで画面が変わる、みたいなのは確かに無かったですね。

@utchari