イッツァハローワールド

恥さらしていこうかなとか。

Handoffしようとして、Activityの引き継ぎがうまくいかなかったときの話

WATCHが発売されたので、ウヲッチの実装を実機で動作確認できるようになりました。

Handoffまわりとかシミュレータで動作確認できないので、まあ動いているだろうでコードを書いてはみたのですが実機で動作確認してみたら見事に動いていませんでしたw

そんな、私のための備忘録です。

現象

WATCHで表示していた情報をiPhone側に引き継いで表示させようとしたが、意図したViewが生成できず表示ができなかった。

処理のフロー

  1. ウヲッチからiPhoneにupdateUserActivity:userInfo:webpageURL で通知を実施
  2. application:continueUserActivity:restorationHandler:が呼ばれない→iPhone側が意図した動作をしない
  3. ↑のかわりにapplication:didFailToContinueUserActivityWithType:error:が呼ばれる

エラー内容

Error Domain=NSCocoaErrorDomain Code=4611 "操作を完了できませんでした。(Cocoa エラー 4611。)" UserInfo=0x17006c0c0 {NSUnderlyingError=0x174246540 "操作を完了できませんでした。(LSContinuityErrorDomain エラー -110。)"}

原因

エラーコードの調べ方から調べましたが、どうやら4611はNSUserActivityHandoffUserInfoTooLargeErrorでUserInfoのデータサイズがでかすぎるらしい。

エラーコードの調べ方

NSError コードの調べ方 - 日々是笑心

というわけで

UserInfoの内容を小さく作ったらちゃんと動きました。ばんざい。



エラーコード4611は全然ググっても出てこなかったから、だいぶ詰まりました。
これからはちゃんとエラーコードも見ます。