post Image
iOS12 の プッシュ通知お試し受信機能 Provisional Authorization をいろいろ触ってみた

iOS12からプッシュ通知の許諾ダイアログを出さずに、ユーザにお試しプッシュ通知を送れるようになった

「お試し」と言っているけれども、プッシュ通知自体は本物の通知で、違いは 受け取ったあとにこのまま購読し続けるかどうかのボタンが通知に付与される というところです

先に結論

結論から言うと、ほとんどのアプリですぐに導入できますが
いくつか注意点が必要です

実装

コードはこんな感じでいける
options.provisional を含めるだけ

var options: UNAuthorizationOptions
if #available(iOS 12.0, *) {
    options =  [.alert, .badge, .sound, .provisional]
} else {
    options =  [.alert, .badge, .sound]
}

UNUserNotificationCenter.current().requestAuthorization(options: options) { granted, error in
   if granted {       
        DispatchQueue.main.async {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}

.provisional を含めてる場合、プッシュ許諾ダイアログなしで grantedtrueが入ってくる
registerForRemoteNotifications() でちゃんとデバイストークンが発行されるので、
既存の通知許諾をONにした後の処理が使い回せるだろう

追記:
ステータスが provisional のとき、
UIApplication.shared.isRegisteredForRemoteNotificationstrue になる

お試しプッシュ通知受信後

「お試し受信中」に受け取ったプッシュ通知は、
バッジや音が無い状態で受信され、さらに通知センターでしか見ることができない

ほとんどのユーザはお試しプッシュが届いてることに気づかないんじゃないかという気がする…
それであれば、アプリ側で明示的に許諾を出してやるほうがいいかも…

お試しプッシュ通知についているボタン

お試し受信中に受け取ったプッシュ通知には プッシュ通知をこのまま受け取り続けるか
それともオフにするかのボタンが存在する

プッシュ通知を受け取ることにする場合は、さらに

  • 目立つように配信してもらうか(ロック画面 通知センター バナー全部出し サウンドとバッジもあり)
  • 目立たないように配信してもらうか(通知センターのみ かつ サウンドとバッジはなし)

をユーザが選択できるようになっている

受け取るを選択した場合は、目立つ目立たないどちらも
authorizationStatusauthorized(通知許諾ON状態)になる

注意点

前述したとおり、通知センターを見ない限りお試しプッシュが届いてる事に気づかないのが懸念
許諾ダイアログを出したほうがマシな可能性がある

また、自分たちのDBでデバイストークンを管理しているサービスは、
お試しプッシュを安易に導入するとDBに大量のデバイストークンがinsertされてしまうかもしれない


『 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

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