前回、Parseを使ったiOSデバイス向けのプッシュ通知を行う方法をご紹介しました。
今回はプッシュ通知先の絞り込みについて、無料版でも利用可能なChannelというパラメータを使用した方法をご紹介します。
大まかには、以下のような流れで行います。
- デバイスにChannelの情報をひもづける
- Channelを指定してプッシュ通知を送る
デバイスにChannelの情報をひもづける
次のメソッドを使って、デバイス側からParse(サーバ)側にChannel情報を登録できます。
NSString *channelName = @"hogehoge"; //登録するChannel名 [PFPush subscribeToChannelInBackground:channelName]; |
また次のメソッドを使うことで、Channel登録の実行結果に応じた処理を行えます。
NSString *channelName = @"hogehoge"; //登録するChannel名 [PFPush subscribeTo ChannelInBackground:channelName block: ^(BOOL succeeded, NSError *error) {if(succeeded) {NSLog(@"登録に成功しました");} else{NSLog(@"登録に失敗しました");}}]; |
このように登録したChannel情報は、Parse上では配列として保持されています。
なので、異なるChannel名を引数にしてsubscribeToChannelInBackground:メソッドを実行することで、1つの端末に複数のChannel情報を設定することができます。
Channel情報はParseのDashboard上のData Browserタブで参照(および修正)が可能です。
これ以降の説明では、上の図のように、ch1とch2というChannelに設定した2つのデバイスがあるという想定で進めていきます。
ちなみに、Channelとして登録できる文字列には制限があり、英数字と-(ハイフン)と_(アンダーバー)のみが使える(空白もNG)ようです。
また数字やハイフン、アンダーバーから始まる文字列もNGのようです。
Channelを指定してプッシュ通知を送る
プッシュ通知は前回同様DashboardのPush Notificationから送ります。
送信画面のSend toをSegmentに設定し、通知先の絞り込み条件を指定します。
すると絞り込み条件を入力するフォームが表示され、デフォルトではセレクトボックスに「channels」と「containts one of」が選択されているかと思います。
ここで右端のテキストボックスを選択すると、現在設定されているChannel名が表示されるので、そこからChannelを選択します(今回はch1を選びます)。
このように入力すると、ch1というChannel情報が登録されたデバイスのみ通知を行う設定になり、右上に表示されている送信先の件数が変化します(今回はch1に設定されているデバイスは1つなので、1 recipantとなります)。
あとは通知メッセージの入力を行ってSend a Pushをクリックすると、指定されたChannelの端末のみにプッシュ通知が送られます。
以上がChannelを使ったプッシュ通知先の絞込みを行う手順です。
通知先の絞り込みについて
上の例では1つのChannelのみに通知を行いましたが、テキストボックスには複数のChannelを入力することでor指定ができます。
例えば以下のように指定すれば、ch1またはch2に設定されたデバイスに通知ができます(2 recipantsとなっています)。
また絞り込み条件は追加するとand指定が行えるので次のようにすれば「”10代”以外の”男性”」にのみ通知をするといった指定も可能です。
ただし、以下のように同一の絞り込み条件を複数並べた場合は、下の条件のみ適用されるようです。
(and指定になっていれば0 recipantsとなるはずですが、1 recipantとなっており、この状態で通知を行うとch2のデバイスに通知が送られます)
まとめ
本記事では、Parseを使ったプッシュ通知の際に、Channelパラメータを用いることで通知先の絞込みを行う手順についてご紹介しました。簡単な条件での絞込みであれば、非常に少ない作業でプッシュ通知の絞込みが実現できます。
最後に記したように、and指定を行う際の挙動が少し扱いづらいので、複雑な条件での絞込みをする場合は別途REST APIを用いて通知処理を行う必要がありそうです。
次回は、有効期限の設定や開封状況の確認などの方法についてご紹介します。