iOS 12でユーザー承認不要のプッシュ通知受信|UserNotifications Provisional Authorization活用法
iOS 12のUserNotifications Provisional Authorizationを使い、ユーザーの明確な許可なしで静音プッシュ通知を受信する方法を解説。通知体験を向上させつつ、ユーザー離脱を防ぐ実践的テクニックを紹介します。
本記事は AI による翻訳をもとに作成されています。表現が不自然な箇所がありましたら、ぜひコメントでお知らせください。
記事一覧
何?iOS 12ではユーザーの許可なしでプッシュ通知を送信できる(Swift) — (2019–02–06 更新)
UserNotifications Provisional Authorization 一時的許可、iOS 12 サイレント通知の紹介
MurMur……
前回、APPのプッシュ通知の許可率とクリック率が低い問題を改善するために、いくつかの最適化を行いました。最初のバージョンでは体験が非常に悪く、APPをインストールして起動するとすぐに「APPが通知を送信したい」という許可ダイアログが表示されました。当然ながら拒否率が非常に高く、前回の記事で紹介したNotification Service Extensionの通知実際表示数の統計から、許可したユーザーは約10%程度と推測されます。
現在、新規インストールのガイドプロセスを調整し、インターフェースの最適化に合わせて通知許可ダイアログの表示タイミングを以下のように変更しました:
もしユーザーがまだ迷っている場合や試してから通知を受け取るか決めたい場合は、右上の「スキップ」を押すことで、アプリに慣れていないために最初に「許可しない」を選んでしまい、その後再度確認できなくなる事態を避けられます。
本題に入る
上記の最適化プロジェクトを進める中で、UserNotifications iOS 12に新たに追加された.provisional権限を発見しました。これはわかりやすく言うと臨時の通知権限で、通知許可のダイアログを表示せずにユーザーにプッシュ通知(サイレント通知)を送信できるというものです。実際の効果と制限については次で詳しく見ていきます。
一時的な通知許可を要求するには?
1
2
3
4
5
6
7
8
9
10
if #available(iOS 12.0, *) {
let center = UNUserNotificationCenter.current()
let permissiones:UNAuthorizationOptions = [.badge, .alert, .sound, .provisional]
// 臨時権限.provisionalだけを要求することも、必要なすべての権限を同時に要求することも可能ですXD
// 通知の許可を求めるダイアログは表示されません
center.requestAuthorization(options: permissiones) { (granted, error) in
print(granted)
}
}
我們將以上程式加入 AppDelegate didFinishLaunchingWithOptions 然後開啟APP,就會發現沒有跳出詢問通知視窗;這時我們去 設定 查看 APP通知設定
(図1) サイレント通知権限の取得
私たちはこうしてひっそりとプロビジョナル通知権限を取得しました🏆
プログラムで現在の通知許可状況を判定する部分に authorizationStatus .provisional 項目を追加(iOS 12以降のみ):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().getNotificationSettings { (settings) in
if settings.authorizationStatus == .authorized {
//許可済み
} else if settings.authorizationStatus == .denied {
//許可されていない
} else if settings.authorizationStatus == .notDetermined {
//未確認
} else if #available(iOS 12.0, *) {
if settings.authorizationStatus == .provisional {
//現在は暫定許可
}
}
}
}
ご注意ください! 現在の通知権限の状態を判定する場合、
settings.authorizationStatus == .notDeterminedとsettings.authorizationStatus == .provisional
すべての通知許可を求める画面を再度表示し、ユーザーに通知の受け取りを許可するかどうかを尋ねることができます。
サイレント通知は何ができる?プッシュ通知はどのように表示される?
まずは静音通知が表示されるタイミングを図で整理します:
静かなプッシュ通知の場合、アプリがバックグラウンド状態で通知を受け取っても、バナーは表示されず、音も鳴らず、バッジも付かず、ロック画面にも表示されず、アンロック後に下にスワイプした通知センターにのみ表示されます:
送信されたプッシュ通知を確認でき、自動的に1つのカテゴリーにまとめられます。
クリックして展開するとユーザーが選択できます:
この展開される問い合わせウィンドウは、「臨時権限」の静音プッシュ通知時にのみ表示されます。
要「続けて」プッシュ通知を受け取る — 「重要な通知を送信」: 通知権限がすべてオンになります!通知権限がすべてオンになります!通知権限がすべてオンになります! 本当に重要なので三回言いました。この時、前のコードで権限を一括で要求している効果が非常に顕著になります。
または静かな通知の受信を維持する「オフ」 — 「すべての通知をオフにする」をクリックすると、プッシュ通知(サイレント通知を含む)が完全にオフになります。
注釈:既存のAPPを手動でサイレント通知に設定する方法は?
静音通知はiOS 12で通知の最適化として導入された新しい設定であり、臨時権限とは関係ありません。ただし、プログラム側が臨時権限を取得すると静音通知を送信できます。
APPの通知を静音に設定するのは非常に簡単で、その方法の一つは「設定」-「通知」- 対象のAPPを見つけて、すべての権限をオフにし「通知センター」だけを残すことです(図一のように)。これが静音通知となります。
または、APPの通知を受け取った際に強押し/長押しで展開し、右上の「…」をタップして「静音通知を送信」を選ぶ方法も同様です:
臨時権限を取得した後、通知許可を求めるダイアログが表示される場合:
通知権限の要求部分から .provisional を外すと、通常通りユーザーに通知の許可を求めることができます:
1
2
3
4
5
6
7
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
let permissiones:UNAuthorizationOptions = [.badge, .alert, .sound]
center.requestAuthorization(options: permissiones) { (granted, error) in
print(granted)
}
}
「許可」を押すとすべての通知権限を取得し、「許可しない」を押すとすべての通知権限(もともと取得していた静音通知権限も含む)がオフになります。
全体の流れは以下の通りです:
まとめ:
iOS 12のこの通知の親切な最適化により、ユーザーと開発者の間で通知機能の相互作用がより簡単に築かれ、通知を完全にオフにしてしまう状況をできるだけ避けられます。
ユーザーにとって、通知の許可を求めるポップアップが表示されたとき、許可すべきか拒否すべきか迷うことが多いです。開発者がどのような通知を送るのか分からないため、広告か重要なメッセージかもしれません。未知のものは怖いため、多くの人はまず安全策として拒否を選びます。
開発者にとって、重要なメッセージをユーザーに届けるために多くの項目を丁寧に準備しましたが、前述の問題でユーザーにブロックされてしまい、私たちが工夫して作成した文案が無駄になってしまいます!
この機能により、開発者はユーザーがアプリをインストールした直後の機会を活かし、プッシュ通知の流れや内容を設計できます。ユーザーの興味に優先的に通知を送り、アプリの通知への認知度を高め、プッシュ通知のクリック率を追跡し、適切なタイミングで通知の受信許可をユーザーに尋ねることが可能です。
露出できる場所は 通知センター のみですが、露出があればチャンスがあります。別の視点で考えると、私たちがユーザーの場合、通知を許可していないのに、バナーや音声付きでロック解除画面にも表示される通知が大量に来たら、とても迷惑に感じるでしょう(隣の陣営がまさにそうですXD)。Appleのこの方法は、ユーザーと開発者の間でバランスを取っています。
現在の問題は、iOS 12のユーザーがまだ少なすぎることです🤐
関連記事
ご質問やご意見がございましたら、こちらからご連絡ください 。
Post MediumからZMediumToMarkdownを使って変換しました。
本記事は Medium にて初公開されました(こちらからオリジナル版を確認)。ZMediumToMarkdown による自動変換・同期技術を使用しています。

{:target="_blank"}](/assets/ade9e745a4bf/1*Yehjud9-RMPTENiVQz4Ryg.gif)





