iOSアプリ開発4日目〜その2〜

ここでは、Web API(Webサービス)を使ったアプリを作ることが出来るようになるため、日の出アプリ作成の続きをまとめる。

ユーザーが都市名を入力し、「日の出時刻を調べる!」ボタンをクリックすると、天気予報を提供しているサーバにアクセスして、それを表示する機能を実装していく。

スクリーンショット 2020-05-08 9.17.28

前回の記事では、UIパーツを配置し、それぞれのパーツをプログラムに連携させるところまで行った。



1.実装(UIパーツにコードを追加する)

それぞれのUIパーツに対して、処理をおこなうためのコードを書いていく。

使用するAPI(Application Programming Interface)は、Yahoo Weather API for your appsである。

利用しようとHPを見たら、以下のような警告文

スクリーンショット 2020-05-08 13.41.40

Important EOL Notice: As of Thursday, Jan. 3, 2019, the weather.yahooapis.com and query.yahooapis.com for Yahoo Weather API will be retired.
To continue using our free Yahoo Weather APIs, use https://weather-ydn-yql.media.yahoo.com/forecastrss. Follow below instructions to get credentials and onboard to this free Yahoo Weather API service.

Google翻訳によると

EOLの重要なお知らせ:2019年1月3日木曜日に、Yahoo Weather APIのweather.yahooapis.comとquery.yahooapis.comは廃止されます。
無料のYahoo Weather APIを引き続き使用するには、https://weather-ydn-yql.media.yahoo.com/forecastrssを使用してください。以下の手順に従って、資格情報を取得し、この無料のYahoo Weather APIサービスにオンボードしてください。

ふむふむ、昨年でAPIの利用方法が変わったようだ。ここで私がとれる選択肢は2つ。

1つ、米Yahoo Weather APIを使用するために資格情報を取得をする

2つ、Yahoo! JAPANが提供しているAPIを使う


今回は2をチョイスして進めようとしたが、データの取得ができない。(半日調べたがよくわからない)


仕方ないので講義だけ聞いてAPI実装の概要をつかんでいく。

Web APIをiOSアプリで使うための流れは、このようになっている。

 ①外部通信を許可(info.plist)

 ②HTTPリクエストを生成(ViewController.swift) ← ×

 ③JSONデータを取得(ViewController.swift)


外部通信の許可方法をまとめる

ナビゲータエリアから「info.plist」を選択

丸印の部分で「App Transport Security Settings」を選択し、+マークをクリック

「Allow Arbitrary Loads」を追加してあげる

スクリーンショット 2020-05-09 9.21.17


もし講座が更新されるかAPIの取得方法がわかったら、こちらに追記していく。



2.AutoLayoutを設定する

目的:さまざまなiOSデバイスでアプリを実行しても、レイアウトが崩れないようにする

コンストレインズ(画面の制約)を追加する


まず、Main.storybordを選択し、ビューを表示する。

 ①都市名を入力するテキストフィールド「cityNameInput」を選択し、下にあるPINをクリックする。上と左右のマージンを指定して、Add 3 Constrainsで変更を確定する。

スクリーンショット 2020-05-09 10.28.47

②日の出時刻を表示するラベル「sunriseTimeLavel」を選択し、上マージンを100と指定する。

スクリーンショット 2020-05-09 10.35.24

③処理を実行するボタン「findSunrise」を選択し、Alignで相対的なマージンを設定する。Horizontally in ContainerとVertically in Containerにチェックを入れる。

スクリーンショット 2020-05-09 10.36.04


おまけ

iOS 11から、「上からマージン指定する機能が廃止になります」というエラーが出てくる場合があるので、それに対応する。

Main.storyboardから、「Constraints」を選択。

スクリーンショット 2020-05-09 10.48.48

「City Name Input.top」を選択し、ユーティリティーエリアから、Interface Builder DocumentのUse Safe Area Layout Guidesにチェックを入れる

スクリーンショット 2020-05-09 10.50.25



うーん、不完全燃焼だが、ゴールデンウィークもあと2日しか残っていないので、次に進んでいく。


よろしければサポートお願いします。いただいたサポートを皆さんに還元していきたいと思っております。