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


関連記事

swift

[Swift3] SwitchとEnumを使ってSectionやCellを指定する

1 はじめに1.1 環境2 Enumの用意3 Tableの用意4 Cellの返却にEnumを使用する5 さいごに はじめに どうも、はじめです。 今回はSectionやCellの指定にSwitchとE ...

swift

[Swift3] スクロールする画面に固定でボタンを表示する方法

1 はじめに1.1 前提条件2 Storyboardの準備3 Controllerの実装3.1 スクロールする画面の実装(TableView)3.2 固定で表示するボタンを配置している画面の実装(Co ...

swift

[Swift]UITableViewのセルの入れ替えが簡単に実装できるライブラリ「SwiftReorder」

1 はじめに2 準備3 実装4 さいごに はじめに こんにちは、nukkyです。 今回は、UITableViewでセルを入れ替えたい際に、ドラッグ&ドロップ操作を簡単に実装できるライブラリ「S ...

【iOS14】他のアプリを簡単に紹介できるSKOverlay

1 はじめに2 SKOverlayとは3 実装3.1 表示位置3.2 非表示3.3 delegate4 さいごに5 おすすめ書籍 はじめに 今回はiOS14から使用できるようになった、SKOverla ...

【Xcode15】プライバシーマニフェスト対応に備えて

1 はじめに2 プライバシーマニフェストとは2.1 アプリで利用しているAPIの宣言2.2 サードパーティSDKでの PrivacyInfo.xcprivacy 対応2.3 「アプリのプライバシー」の ...

フォロー

blog-page_side_responsive

2020年11月
1234567
891011121314
15161718192021
22232425262728
2930  

アプリ情報

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