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


関連記事

[iOS15]StoreKit2で課金処理をより簡単に

1 はじめに2 StoreKit2になって主に変更された箇所3 実装3.1 Product(課金アイテム)の取得方法3.2 Product(課金アイテム)の購入方法3.3 Product(課金アイテム ...

【Swift】Xcode13XCTestの新機能、繰り返し実行で遊んでみた。

1 はじめに2 XCTestについて3 繰り返しのテストについて4 実際に使ってみる5 テストコードについて6 テストの設定7 さいごに8 おすすめ書籍 はじめに こんにちは、suzukiです。とうと ...

【Swift】Xcode12対応ではまったNavigationControllerの挙動変更

1 はじめに2 今回のバグ3 詳細な内容4 修正5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。皆さんXcode12対応はおすみでしょうか、今回も駆け込みで色々対応しております。そ ...

swift

Swift3で動的にUIViewを切り替える Part2

1 はじめに1.1 前提条件2 完成イメージ3 StoryBoardの準備3.1 Viewの配置3.1.1 ① Segmentを配置するView3.1.2 ② ContainerViewを表示するVi ...

【Swift】whose view is not in the window hierarchyで画面遷移に失敗する

1 はじめに2 エラーの概要3 今回出会った事象4 行った対応5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。今回は備忘としてwhose view is not in the wi ...

フォロー

blog-page_side_responsive

2020年11月
1234567
891011121314
15161718192021
22232425262728
2930  

アプリ情報

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