能登 要

札幌在住のiOSアプリ開発者。SwiftUI により分割されたデバイス間を縦横にやりとりできる考え方に転換しています。

iOSアプリ開発者。2009年のiPhoneアプリ開発開始時期から活動。開発言語のアップデートの中でSwiftUIおよび周辺技術に着目中。

WeatherKit を試してみて初動でつまづいた話

iOS16 の機能としてWeatherKitが公開、iOS16から使えるネイティブフレームワーク(Swift API)に加えREST APIでも提供されるためiOS15以前のOSでも利用が可能。APIリクエストは500k/月リクエストまでは無料で以後は段階的課金となる。

Platforms State of the Union - WWDC22 - Videos - Apple Developer

WeatherKit自体は他のフレームワークに比べてシンプルなのでiOS16 のサンプルを試すにはちょうど良いかもしれないと思い着手したがAPIコールのタイミングでエラーが発生した。

WeatherDaemon.WDSHMACJWTAuthenticatorService.Errors.invalidJWTResponse(Optional(<NSHTTPURLResponse: 0x282da8300> { URL: https://weather-data.apple.com/v2/token }

コードを記述すれば動くとされるサンプルなので幾分混乱したが原因がわかった、WeatherKitの設定を有効するにはアプリのCapability(Xcode上で設定可能なアプリ有効機能) にWeatherKitを含める他、Appleの開発ポータルにてアプリが使うサービス(App Service)についてもWeatherKit を有効とする必要があった。

具体的には、Certificates, Identifiers & Profiles でWeatherKit を有効にしたいアプリを選択、Editボタンをタップ。編集画面上部にあるAppServiceのタブに含まれるWeatherKit にチェックマークを入れて保存する(保存後30分程度で有効化される)。

Apple Developer Edit App Identifier tabs

これまでAppService(MuysicKit,ShazamKit,WeatherKit) を使ってこなかったためAppServiceのタブの存在を意識していなかったのが今回のトラブルの原因だった。WeatherKitを試すアプリ開発者こちら確認の上サンプルコードを動かして欲しい。