106
96

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【プッシュ通知】Y Combinatorも投資するOneSignalがFirebaseより便利で素晴らしかった

Last updated at Posted at 2017-08-19

TL; DR

Y Combinatorが投資している、急成長中1のプッシュ通知ASP OneSignalを試してみました。
Firebaseと同じく無料ながら、Parseのような柔軟性(A/Bテスト、ユーザープロパティ、自動配信など)を持っています。
Firebaseが抱える「プロパティに上限があるが削除できない」、「他ASPからトークンをインポートできない」等の問題もなく、初めてParseを試したときのように感動しました。

Firebaseの問題

ポストParse時代の代表格は、なんといってもGoogle I/O 2016でバージョンアップが発表されたFirebase。
認知度、Googleというバックボーンともに圧倒的な存在ですが、使ってみると意外に「?」と思うことがいくつかありました。詳しくはこちらに書かれているような点です。
いくつか挙げるとすれば↓の点が気になりました。

  • 登録可能なユーザープロパティ数は自動収集されるもの(年齢層、性別、端末情報など)を除き最大25個まで。 削除できない
  • セグメントが更新されない
  • データの反映が遅い
  • 他ASPからトークンをインポートできない

OneSignalとは?

  • Y Combinatorが投資している、急成長中1のプッシュ通知ASP
  • Uber, Line, Zynga, ProductHuntなどを含む22万ユーザー以上に利用されてきた実績あり
  • iOS, Android, Web Push, Unityなどに対応。近日中にAmazon Alexaに対応するとか
  • 価格は無料。ネット広告と同じく、利用データを収益源にしている模様2。サポート付きの有料プランもあり
  • Parseと同じく、プッシュ配信サービス + ユーザーDBを持つ。ユーザーDBが見やすい
  • ユーザープロパティは無限に登録可能
  • デリバリーサービスはRustで書かれている
  • (2017年8月21日追記)配信性能は5,000プッシュ/秒。現在、処理速度UPに向けアプデ中3

Firebaseとの特徴・機能比較

Firebaseとの違いをざっとまとめてみました。
間違いがあれば修正依頼を送ってください。

OneSignal Firebase
価格 無料 無料
日本語
API
トークンインポート機能 ☓(これないと厳しい)
リアルタイム開封率 △(リアルタイムではないかな?)
スケジュール配信
端末のタイムゾーンに対応
定期配信 △(API利用)
セグメント配信 △(セグメント更新されない問題)
A/Bテスト △(セグメント利用)
ユーザー一覧
ユーザープロパティ ○(無限) △(独自は最大25個。削除できない)
アグリゲートデータ ○(全体を俯瞰できるのが強み)
多言語配信 △(セグメント利用)
iOS10(メディア配信、サブタイトル) ○(専用フォーム) ○(カスタムデータ指定)
メッセージテンプレート
絵文字入力ヘルパー
端末をテスターとして登録 ☓(本番・開発でアプリ分ける必要あり)

使ってみた(ユーザーデータ編)

ここからはiOSで試した内容です。

実験1. ユーザー登録

登録といってもSDK導入後、アプリを起動するとユーザーが自動的に登録されます。
Parseのようにユーザーごとの登録状況が把握でき、わかりやすいです。

console.png

実験2. ユーザープロパティ(Tags)登録

Firebaseのユーザープロパティ = OneSignalのData Tags(Tags)です。
Tagsには、KeyValueデータを登録します。
Firebaseのユーザープロパティは独自で25個登録できますが、Tagsは無限に登録できます。
とはいえ、ユーザーが300万以上いる場合、20個以上のtagを設定するのは通知配信に影響が出るため非推奨とされています4

ここではテスト目的で、100個のtagを登録してみました。

// 100個のtagを追加
var tags: [String: Int] = [:]
for i in (1...100) {
    tags["tag" + String(i)] = i
}
OneSignal.sendTags(tags)

結果

tagsに100個のtagが登録されました。瞬時に更新されるのは見ていて気持ちが良いです!
FirebaseだとDebugViewで見たり、まずコンソール側でプロパティを登録し、数時間経った後にセグメントを切る必要があります。

OneSignal.png

実験3. Tagを更新

tagsを一部だけ更新してみます。
試しにtag1だけ変更してみます。

OneSignal.sendTag("tag1", value: "foobar")

結果

tags同様、瞬時に変更されました。
tags.png

使ってみた(プッシュ編)

セグメント自動プッシュ

セグメント条件を満たしたユーザーに自動的にプッシュを送信する機能です。
例えば、無料ユーザーが課金ユーザーになった際などに使えます。

1. Segment登録

試しに課金ユーザーのSegmentを作ってみました。
課金ユーザーの条件は'subscription'tagの値が1の場合として設定します。
segment.png

2. Template登録

課金ユーザー向けにメッセージテンプレートを登録します。
title, messageに加えて、iOS10向けにSubtitleフォームがあるのはありがたいです。
絵文字ヘルパー(矢印)も便利でした!
kakin.png

3. 課金ユーザーにする

ユーザーを課金ユーザーに変身させます。

OneSignal.sendTags(["subscription": 1])

4. 自動メッセージ登録

Template, Segmentを使って自動メッセージを登録すると、課金ユーザー向けプッシュが瞬時に送信されてきました。
この登録タイミング以外は、30分毎にセグメント条件に合うユーザーがいるかチェックし、プッシュを送信するようです。
なお、デフォでは自動メッセージは1度しかユーザーに送られない設定になっています。

automated.png

  1. 2016年4月時点では3万強ユーザー、2017/08/19現在、22万強ユーザー 2

  2. https://techcrunch.com/2017/08/15/onesignal-series-a/

  3. 直接問い合わせ、2017-08-21付で回答を得た

  4. https://documentation.onesignal.com/v3.0/docs/add-user-data-tags

106
96
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
106
96

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?