iOS

【Swift】iOS14でブラウザが起動しない。

投稿日:2020年11月16日 更新日:

はじめに

こんにちはsuzukiです。iOS14がリリースされてしばらく経ちましたね、障害の報告もあまりなく、今回のOSは安定しているなぁと安心していたのですが、最近ユーザーから、アプリでブラウザが起動できなくなったとお問い合わせいただきました。調査の結果、デフォルトのブラウザをSafari以外に設定しているユーザーのみ発生していたので、少し内容をまとめて行きたいと思います。

ブラウザの起動について

下記のコードで外部ブラウザの起動を行っておりました。1年ほど前にUIApplication.shared.openURLが非推奨になった際以降変更していませんでした。

原因について

周りで同様の事象が起きている人がいたので、確認したところ、iOS14の新機能でデフォルトのブラウザがSafari以外だと起こることがわかりました。
上記の状態でどのようなことが起こっているかというとcanOpenURL(url)がfalseになっているようです。

ここからは推測になり、修正にはあまり関係ありませんが、
canOpenURL(url)の戻り値を翻訳すると

デバイスにインストールされているアプリがURLのスキームを処理するように登録されていない場合、またはInfo.plistファイルでURLのスキームを宣言していない場合はfalse。それ以外の場合はtrue。

と表現されています。今までhttpとhttpsでtrueが返却されていたのは例外的にOSが用意したSafariだからtrueと返却されていました。

今回iOS14でデフォルトのブラウザが変更できるようになり、canOpenURLがSafariだから例外的にtrueを返却していたがSafari以外のアプリが反応し、Info.plistに追加されていないのでfalseを返却するようになったのかなと推測しております。

修正について

修正方法は複数あったのですが、
http、httpsのURLスキームをInfo.plistに記入する修正方法がいいと判断しました。
上記を行えば、Info.plistファイルでURLのスキームを宣言されるので、canOpenURLでtrueを返却してくれるので、今までと変わりなく使える想定です。

対応方法
Info.plistにLSApplicationQueriesSchemesというKeyを追加してTypeはArrayを選択します。
+ボタンを押してhttpとhttpsを追加します。

おまけ:メールについて

iOS14でデフォルトアプリが変更可能になったのはブラウザとメールです。
メールについても同様にデフォルトを変更するとcanOpenURLがfalseを返却していました。
canOpenURLで確認をしていなかったのでアプリは問題なく動きそうですが、今後のためmailtoもInfo.plistに追加しておこうと思います。

さいごに

まだiOS14出てすぐだしXCode12の対応はまだまださきでしょうと思っていたら、公式の告知見てびっくりしました。

Deliver great user experiences by seamlessly integrating with the latest advances on Apple platforms. Build your apps using Xcode 12, which includes SDKs for iOS 14, iPadOS 14, watchOS 7, tvOS 14, and macOS Catalina.
Starting April 2021, all iOS and iPadOS apps submitted to the App Store must be built with Xcode 12 and the iOS 14 SDK.

毎年同じことで焦っている気がする。毎年更新は厳しい。。。

おすすめ書籍

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus 詳解 Swift 第4版 [改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

[Swift4]StringのSwft4変更点と文字列操作

1 はじめに2 Swift4でのString変更点2.1 コレクション化2.2 文字列長の取得2.3 文字列を複数行で定義3 文字列操作3.1 英大文字、小文字変換3.2 ひらがな、カタカナ変換3.3 ...

iOSでFirebase Authenticationを実装してみる その2

1 はじめに2 匿名アカウントから永久アカウントに変換3 サインアウト4 アカウントの削除5 パスワードの再設定メール配信6 さいごに7 おすすめ書籍 はじめに こんにちは、Yossyです。 前回は、 ...

swift

iOSでライブラリFSCalendarをつかって簡単にカレンダー表示

1 はじめに2 準備3 実装3.1 Storyboard3.2 コード3.3 タップの取得4 さいごに はじめに こんにちは、nukkkyです。 ツール系アプリ開発時にカレンダー表示を よく使うと思い ...

iOS13で発生するUICollectionviewのカクつきを解消する

iOS13でCollectionViewの動作が少し変わりました。 Cellの入れ替え時にデータの更新を行う際にはどのように作成すれば良いか、関係のあるデリゲートを含め説明させていただいております。 おまけとして、Xcode11.3対応を行った際に対応した内容を簡単にですが記述しております。Xcode11対応をされる方の参考になればと思います。

swift

【Swift】Xcode10.3でSwift5で書かれたプロジェクトでデリゲートが呼ばれない

1 はじめに2 起きた環境3 起きる条件3.1 コード上の条件3.2 ビルド時の条件4 再現4.1 テスト用コード5 対応策6 さいごに7 おすすめ書籍 はじめに こんにちはsuzukiです。Xcod ...

フォロー

blog-page_side_responsive

2020年11月
1234567
891011121314
15161718192021
22232425262728
2930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。