2014/10/23

IIJmioクーポンAPIを使ったiOSのTodayウィジェットをつくってみた

IIJmioクーポンスイッチAPIを利用したiOSサンプルアプリMioDashboardにTodayウィジェットを追加してみました。

エクステンションだけSwiftで書いてみました。

MioExtension (Todayウィジェット) について

左の灰色の値がその時点でのクーポンの残り残量で、右の赤色の値が本日のクーポン消費量を示しています。

現在は次のような制限があります。

  • 先にMioDashboard (本体アプリ) を実行してアクセス許可しておいてください。そこで得られたアクセストークンをMioExtensionは利用します。
  • 表示されるのはプラン契約のうち、クーポンスイッチAPIが返す最初の項目のみです。複数プラン契約されている場合はふたつめ以降は表示されません。
  • クーポンスイッチAPIにアクセストークンリフレッシュがないので、時おりアプリを起動させてトークンリフレッシュさせる必要があります (TodayウィジェットにWebViewを貼れるみたいですけど、そこまでしたくなかったのでやっていません)。

コンパイルするときの注意点

  • あらかじめ、IIJmioクーポンスイッチAPIのディベロッパIDを取得する必要があります。
    • ディベロッパIDを取得後に、MioRestHelper.mにデベロッパIDとリダイレクトURIを設定の上、コンパイルしてください。
  • App Groupsが他人に利用できないので、App Groupsを取得しなおしてください。詳細は次の記事を参照のこと。
  • App Groupsを利用するためにAppleのデベロッパアカウントが必要です。

AppExtension開発で気づいたことなど

  • TodayウィジェットではwidgetPerformUpdateWithCompletionHandler内で最後に必ずcompletionHandlerを呼ぶ必要がある。
    • そうしないと処理が完了せずに、2度とwidgetPerformUpdateWithCompletionHandlerが呼ばれずに更新されなくなる
  • SwiftでReactiveCocoa 1.x系が普通に使えた
  • Obj-CプロジェクトにSwiftを混ぜると実行時に死ぬ
  • 現状、SwiftだとMantleが使えない子
    • Objective-C側から返されるモデルがNSArrayを使っているので、Swiftのコードだとちょっと扱い使いづらかった。
  • App Groupsは他の人がコンパイルしづらくなるので、GitHubのパブリックリポジトリに対しては使うのはやめたほうがよかった。
    • アクセストークンなのでキーチェインにしたほうがよかった

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。