GameWith Engineering Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

GameWithアプリに、iOS12の新機能 Provisional Authorization (お試しプッシュ通知)を導入してみたら通知許諾率が下がった話

どうも皆さんおはこんばんにちは。

スコルパイド3討伐済みのiOSアプリエンジニア @peka3 です。

前回から約3ヶ月ぶりの投稿となります。

先日、GameWithアプリのプッシュ通知許諾率改善施策として、iOS12の新機能 Provisional Authorization(お試しプッシュ) を実装したんですが、 改善されるどころか許諾率が下がってしまいました。

なぜそうなったのか、Provisional Authorization を紹介しつつ原因を深掘りします。

前提

  • GameWithアプリではログインユーザーに向けてプッシュ通知を行っている(当時)
  • 通知許諾率が低い
  • 開封率は悪くないので、通知の質はどうやら問題なさそう

Provisional Authorization とは?

簡単にいうと、ユーザーがお試しでプッシュを受け取れるようになる機能です。

今まではユーザーがアプリの通知許諾ダイアログで「OK」を選択すると、プッシュ通知が受け取れるようになっていたのですが、 Provisional Authorizationでは通知許諾ダイアログを表示することなく、お試しのプッシュを受け取れるようになります。

Apple的には、どんな通知が受け取れるかわからない状態で通知許諾を出されても、ユーザーの混乱を招くということで実装された機能のようです。

参考: 動画の30:00〜

developer.apple.com

これが通知許諾率改善に効果があるのでは!?ということで検証することになりました。

お試しプッシュ通知の制約

通知を受け取っても、

  • 音がならない
  • バッジが表示されない
  • 受信時のアニメーションはない
  • 通知センターを見ることで初めて届いてることが確認できる

という制約があります。

実装方法

すでにプッシュ通知を実装しているアプリであれば簡単に実装できます。

既存の requestAuthorization を実行しているところで option に .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()
        }
    }
}

これによって通知許諾ダイアログが出ることなく、デバイストークン が発行されます。

自サーバのDBにデバイストークンを格納してる場合は、レコードが爆増すると思うので注意が必要です。

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

お試しプッシュを受信した状態で通知センターを開くと、以下のような通知が確認できます。

f:id:peka3:20181127120332p:plain:w200

通常のプッシュ通知とは違い、残す(通知をこのまま受け取り続ける)、それともオフにするかのボタンが存在します。

残すを選択した場合は、さらに

f:id:peka3:20181127120622p:plain:w200

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

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

これを選択し終えると、ようやくauthorizationStatusauthorized(通知許諾ON状態)となります。

導入後、どういう通知許諾フローにしたのか

当時のGameWithアプリでは、ログインユーザーのみがプッシュ通知を受け取れる仕組みでした(現在は未ログインユーザーもプッシュ通知を受け取れる)。

そのため、アプリ起動時にログイン訴求を表示していました。

f:id:peka3:20181127114759p:plain:w200

それを踏まえて、訴求表示でのボタンを押したときのフローを以下のように変更しました。

  • アプリを初めてDLした人がログイン訴求を見てログインする

    • 今まで: ログイン後に通知許諾ダイアログを出す
    • これから: 今までと同じ
  • アプリを初めてDLした人がログイン訴求を見て「あとで」を選択し、その後どこかのタイミングでログインする

    • 今まで:ログイン後に通知許諾ダイアログを出す
    • これから: ダイアログなしでprovisional にする

このような実装を行ったのですが、

結論としてはプッシュ通知許諾率は向上せず、むしろ下がってしまいました。

なぜ通知許諾率は向上しなかったのか?

前述した制約がやはり大きかったようで、自分から通知センターを見るユーザーが全然いないのではないか?と思われます。

お試しでプッシュ通知を受信できると言っても、気づかれなければ意味がなく、このお試しプッシュ機能はユーザーの邪魔をしないように通知を送るので、結果として通知が届いていてもほとんどの人は気づかずに終わっているようです。。

どうすればもっと通知許諾率が向上していたか?

検証してないので仮説にすぎないのですが、

  • provisionalステータスのまま一定期間が過ぎたユーザーには、通知許諾ダイアログを出す
  • ユーザーがお試しプッシュを受け取って通知センターを見るところまで、アプリ側でチュートリアルとしてサポートする

このあたりまで行えば効果があったかもしれません

闇雲にProvisional Authorizationを実装するだけでは、通知許諾率改善に貢献するのは難しそうです

まとめ

iOS12からの新機能を取り入れてみたのですが、今回のやり方ではうまくできませんでした。

ですが、仮説検証できたという点では大きな収穫でした。

これからもGameWithアプリではこのような仮説検証をどんどん行って、ユーザーの皆様がより満足できるアプリにしていきます!

一緒にやっていっていただける仲間も募集中です!