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

Swiftの「UIActivityViewController」でTwitterにだけハッシュタグをつけたい!

1 はじめに2 実装2.1 まずはやってみよう2.2 Twitter連携時のみにハッシュタグをつけたい3 さいごに はじめに こんにちわ、nukkyです。 今回はSNSやメール連携したいときに便利な ...

【Swift】XCUITestでScrollViewのテストをしてみる

1 はじめに2 XCUITestとは3 導入方法3.1 オブジェクトの配置3.2 UISCrollView3.3 ラベルとボタン4 テストのための設定4.1 ラベル5 テストコード5.1 SetUp5 ...

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

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

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

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

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

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

フォロー

blog-page_side_responsive

2020年11月
1234567
891011121314
15161718192021
22232425262728
2930  

アプリ情報

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