[iOS 10] ホーム画面から標準の Apple 製アプリを削除した場合の挙動について
はじめに
こんにちは。モバイルアプリサービス部の平屋です。
iOS 10 で一部の標準アプリをホーム画面から削除できるようになりました。
標準アプリを削除した場合に「サードパーティーアプリから利用できる機能」がどう変化するかを調べてみました。
対象のアプリは以下を満たす標準アプリです。
- ドキュメント化されている URLScheme が存在する
- 対象アプリ関連の機能を使用するクラスが存在する (例: カレンダーアプリの場合、EKEventEditViewController)
検証環境
- Xcode Version 8.2.1
- iPhone 6s, iOS 10.2.1
まとめ
先にまとめを載せておきます。
URL Scheme を使用してアプリを開く場合は、基本的にアラートが表示されました。EKEventEditViewController のような標準アプリ関連のクラスを使用する場合は、ほぼ正常に動きました。
URL を使用した場合
対象アプリ | 使用した URL | 機能利用可否 |
---|---|---|
メール | mailto | ✕ |
ミュージック | https://itunes.apple.com/jp/album/24k-magic/id1161503945 | ✕ |
iTunes Store | https://geo.itunes.apple.com/jp/album/jupiter/id201478063?app=itunes | ✕ |
iBooks | https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11 | ✕ |
マップ | http://maps.apple.com/?ll=50.894967,4.341626 | ✕ |
FaceTime | facetime://foo@example.com | ◯ |
標準アプリ関連のクラスを使用した場合
対象アプリ | 使用したクラス | 機能利用可否 |
---|---|---|
メール | MFMailComposeViewController | ✕ |
カレンダー | EKEventEditViewController | ◯ |
リマインダー | EKEventStore | ◯ |
連絡先 | CNContactPickerViewController | ◯ |
URL を開くとアラートが表示されるパターン
5 つの標準アプリに関して、アプリを削除後、以下の URL を開くと、アラートが表示されました。
対象アプリ | 使用した URL |
---|---|
メール | mailto:foo@example.com |
ミュージック | https://itunes.apple.com/jp/album/24k-magic/id1161503945 |
iTunes Store | https://geo.itunes.apple.com/jp/album/jupiter/id201478063?app=itunes |
iBooks | https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11 |
マップ | http://maps.apple.com/?ll=50.894967,4.341626 |
使用したコードは以下の通りです。
let url = ... if (UIApplication.shared.canOpenURL(url)) { print("can Open URL", url) UIApplication.shared.open(url) } else { print("CANNOT Open URL", url) }
canOpenURL(_:)
の返り値は true
になり、open(_:options:completionHandler:)
を実行すると、以下のようなアラートが表示されました。
アラート上の「App Store で表示」をタップすると、App Store アプリが開き、対象アプリのページが表示されます。
メール (MFMailComposeViewController)
MFMailComposeViewController はメールの作成・送信用の UI を提供してくれる ViewController です。
画面表示前に canSendMail()
メソッドを使用すれば、MFMailComposeViewController を使用可能かどうかを判別できます。
メールアプリを削除後、canSendMail()
を呼ぶと、返り値は false
になりました。
if !MFMailComposeViewController.canSendMail() { print("Mail services are not available") return }
カレンダー
カレンダーアプリを削除後、以下のコードを実行しました。
class ViewController: UIViewController { // ... @IBAction func didTapCalendarButton(_ sender: Any) { let event = EKEvent(eventStore: eventStore) event.title = "New Event" let eventEditVC = EKEventEditViewController() eventEditVC.eventStore = eventStore eventEditVC.event = event eventEditVC.editViewDelegate = self present(eventEditVC, animated: true, completion: nil) } } extension ViewController: EKEventEditViewDelegate { func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) { switch action { case .saved: try! eventStore.save(controller.event!, span: .thisEvent) default: break } dismiss(animated: true, completion: nil) } }
イベント編集画面の表示から保存までの処理が正常に動きました。
リマインダー
リマインダーアプリを削除後、以下のコードを実行しました。新規リマインダーを保存できることを確認できました。
@IBAction func didTapReminderButton(_ sender: Any) { let reminder = EKReminder(eventStore: eventStore) reminder.title = "New Reminder" reminder.calendar = eventStore.defaultCalendarForNewReminders() try! eventStore.save(reminder, commit: true) }
連絡先
連絡先アプリを削除後、以下のコードを実行しました。
let picker = CNContactPickerViewController() present(picker, animated: true, completion: nil)
連絡先のピッカーを表示することができました。
FaceTime
アプリを削除後、以下の URL を開いてみたところ、FaceTime の画面が表示されました。
- 使用した URL
- facetime://foo@example.com
さいごに
本記事では、標準アプリ削除後の「サードパーティーアプリから利用できる機能」の変化を調査した結果を紹介しました。
今回行なったのは簡易的な調査です。今回調査していない箇所で、標準アプリを削除した影響が出る可能性はあります。
標準で付属している App をホーム画面から削除すると、ほかのシステム機能に影響が及ぶ場合があります。以下は一例です。
- Apple Watch を iPhone とペアリングしてある場合、iPhone のホーム画面から App を削除すると、同じ App が Apple Watch のホーム画面からも削除されます。
- ホーム画面から Podcast App を削除した場合、CarPlay で Podcast を使えなくなります。
- ミュージック App を削除した場合、一部のステレオやステレオレシーバーで、Apple 製または他社製の App を使って一部のオーディオコンテンツを再生できなくなる場合があります。
- 株価 App や天気 App をホーム画面から削除すると、ほかの画面でも株価情報や天気情報が表示されなくなります。たとえば、iPhone の通知センターや、Apple Watch のコンプリケーションまたはグランスにも、株価情報と天気情報が表示されなくなります。
- 計算機 App を削除すると、コントロールセンターに計算機が表示されなくなります。
影響が及んでしまった機能を元に戻すには、標準付属の App を元通りホーム画面に追加してください。
調査で使用したサンプルアプリは以下のリポジトリで公開しています。