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)

page_footer_responsive




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【Swift】WKWebViewでJavaScriptを利用して値の受け渡し

1 はじめに2 WebViewを利用した値の受け渡し2.1 事前準備2.2 WebViewのJavaScriptから、ネイティブの処理を呼出2.3 ネイティブから、WebView内の要素の値を取得2. ...

【Swift】QuickActionで普段と異なる初期画面を表示する。

1 はじめに2 Quick Actionとは3 実装方法3.1 Quick Actionの追加3.2 タップされた際の動作3.2.1 アプリが起動していない場合3.2.2 アプリが起動している場合4 ...

【Swift】ITMS-90726で警告された際の対応

1 はじめに2 警告について3 RXTestについて4 Carthageの設定の確認5 おまけ5.1 Carthage削除6 さいごに7 おすすめ書籍 はじめに こんにちはsuzukiです。最近アプリ ...

【Swift】QuickActionを動的に変更する

1 はじめに2 動的なショートカットの追加3 実装3.1 UIMutableApplicationShortcutItem4 動的にショートカットを設定する5 さいごに6 おすすめ書籍 はじめに こん ...

【iOS14】App Groups を使用して WidgetKit にデータ共有

1 はじめに2 App Groupsの準備2.1 App Groupsの許可2.2 App Groupsの使い方3 WidgetKitにデータ共有4 さいごに5 おすすめ書籍 はじめに 今回はアプリ側 ...

フォロー

blog-page_side_responsive

2020年11月
1234567
891011121314
15161718192021
22232425262728
2930  

アプリ情報

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