post Image
プッシュ通知設定画面へ遷移させる為の実装

プッシュ通知設定とは

プッシュ通知設定は、ユーザー通知と呼ばれるローカル通知やプッシュ通知に関連した設定のことです。
iOSでは 設定 > 通知 > アプリ > 通知を許可 から、通知の受信設定の変更を行うことができます(下記)。

IMG_3500.PNG

アプリユーザーに対してプッシュ通知を届けるためには、ユーザーにプッシュ通知受信の許諾を得て、且つその後もこの通知受信設定をONの状態を維持して貰う必要があります。

一度プッシュ通知を受信拒否もしくは設定をOFFにしたユーザーは、自ら設定画面を開いてONに設定変更してくれることはほぼありません(少なくとも僕はほぼやりません)。

そのため、アプリ内で設定状況のON/OFFを取得して、OFFの場合だったらこの設定画面へ遷移させる。という実装を行います。

できたもの

通常のホーム画面から設定画面へ遷移するまでの操作と、今回の画面遷移の差を比較するため、両方の操作画像をお見せします。

また、この機能についてはGithubでも公開しているので、ぜひ活用してみて下さい。

ホーム画面から設定画面への遷移

homeScreen.gif

アプリ内から設定画面への遷移

Reloadボタン押下後にLabelのtextが変更されるまで10秒ほどかかります。

InApp.gif

両方の比較して分かるように、この設定画面へのディープリンクを設定するのと、そうでないのとではユーザーの手間が大きく異なります。

実装

通知設定画面へのディープリンク

下記の{YOUR_BUNDLE_ID}に自分のプロジェクトのBundle_IDをセットすることで、設定画面へ遷移させることができます。

// OSの通知設定画面へ遷移
if let url = URL(string:"App-Prefs:root=NOTIFICATIONS_ID&path={YOUR_BUNDLE_ID}") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(url)
    }
}

また、App-Prefs:root=NOTIFICATIONS_IDは、通知設定画面へ遷移させるスキームですが、それ以外にもBluetooth写真とカメラなどの設定画面へ遷移させることもできます。

スキームに関しては【iOS10】設定画面に遷移するURLスキームの設定についてに一覧があるので、ぜひ見てみてください。

僕もこちらの記事を参考にさせていただきました。良い記事をありがとうございますm(_ _)m

通知設定の取得

通知設定の取得にはgetNotificationSettingsを使用しています。
この処理はUNUserNotificationCenterからユーザーの通知設定状態を取得していますが、非同期処理となるのでご注意下さい。

// 通知設定状況を取得
UNUserNotificationCenter.current().getNotificationSettings { (settings) in

    let targetViewController = vc as! ViewController

    switch settings.authorizationStatus {
    case .authorized:
        print("Allow notification")
        targetViewController.settingStatusLabel.text = "Allow notification"
        targetViewController.viewDidLoad()

    case .denied:
        print("Denied notification")
        targetViewController.settingStatusLabel.text = "Denied notification"

    case .notDetermined:
        print("Not settings")
        targetViewController.settingStatusLabel.text = "Not settings"
    }
}

パーミッションが必要な機能を提供しているアプリの場合、このディープリンクを使うことでよりユーザーが使いやすいものに改善できることもあると思うので、もし良ければ活用してみて下さい。


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。