何?iOS 12ではユーザーの許可なしでプッシュ通知を送信可能(Swift) — (2019–02–06 更新)
UserNotifications Provisional Authorization 臨時権限、iOS 12 サイレント通知の紹介
MurMur……
先日、APPのプッシュ通知の許可率とクリック率が低い問題を改善するために、いくつかの最適化を行いました。最初のバージョンでは体験が非常に悪く、APPをインストールして起動するとすぐに「APPが通知を送信したい」という確認ウィンドウが表示されました。当然ながら拒否率が非常に高く、前回のNotification Service Extensionを使った通知の実際の表示数の統計から、許可したユーザーは約10%程度と推測されます。
現在、新規インストール時の案内フローを調整し、インターフェースの最適化に合わせて通知許可のポップアップ表示タイミングを以下のように変更しました:

ユーザーがまだ迷っている場合や、試してから通知を受け取るか決めたい場合は、右上の「スキップ」を押すことで、最初にアプリに慣れていないために「許可しない」を押してしまい、その後再度確認できなくなる事態を避けられます。
本題に入る
上記の最適化を行う際に、UserNotificationsのiOS 12で新たに追加された.provisional権限を発見しました。これは簡単に言うと臨時の通知権限で、通知の許可を求めるポップアップを表示せずにユーザーへプッシュ通知(サイレント通知)を送ることができます。実際の効果と制限について、次に見ていきましょう。
一時的な通知権限を要求する方法は?
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 に追加し、アプリを起動すると、通知許可のダイアログが表示されないことがわかります。この時、設定のアプリの通知設定を確認してみましょう。

(図一) サイレント通知権限の取得
私たちはこうしてひっそりとサイレント通知の権限を取得しました🏆
プログラムで現在のプッシュ通知権限を判定する部分に authorizationStatus .provisional 項目を追加(iOS 12以降のみ):
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を区別してください。
すべての通知許可をユーザーに再度確認するウィンドウを表示できます。
サイレント通知は何ができる?プッシュ通知はどのように表示される?
まずは図で、サイレント通知が表示されるタイミングを整理します:

静かなプッシュ通知の場合、APPがバックグラウンド状態で通知を受け取っても、バナーは表示されず、音も鳴らず、マークもできず、ロック画面にも表示されず、スマホのロック解除後に下に引き下げる通知センターの中にのみ表示されます:

送信されたプッシュ通知が表示され、自動的に1つのグループにまとめられます。
クリックして展開後、ユーザーは選択できます:

この展開される問い合わせウィンドウは、「臨時権限」のサイレントプッシュ通知時にのみ表示されます。
-
「続けて」プッシュ通知を受け取る — 「重要な通知を送信」:通知許可がすべてオンになります!通知許可がすべてオンになります!通知許可がすべてオンになります! 本当に重要なので三回言いました。この時、前のコードで許可を一括で要求しておく効果が非常に大きくなります。
または、サイレント通知の受信を維持する。 -
「オフ」 — 「すべての通知をオフにする」をタップすると、プッシュ通知(サイレント通知を含む)が完全にオフになります。
注釈:既存のAPPを手動でサイレント通知に設定する方法は?
静音通知はiOS 12の通知最適化で導入された新しい設定であり、臨時権限とは直接関係ありません。ただし、プログラム側が臨時権限を取得すると静音通知を送信できます。
アプリの通知を静音に設定するのは簡単で、方法の一つは「設定」-「通知」- 対象のアプリを見つけて、すべての権限をオフにし「通知センター」だけを残すことです(図一のように)、これが静音通知になります。
または、アプリの通知を受け取った際に強押し/長押しで展開し、右上の「…」をタップして「静音通知を送信」を選択する方法も同様です:

臨時権限がある場合、その後に通知許可の確認ウィンドウが表示されるとき:
要求通知権限の部分から .provisional を外すと、引き続きユーザーに通知の許可を求めることができます:
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によって変換されました。



コメント