Xamarin.FormsでのPush通知について
追記
App Center Pushは廃止となり,Azure Notification Hubsを使うように,とのことです.
James Montemagnoさんによる説明.
以下,その内容のメモ
Push通知を実現する方法は色々あるが,2つの選択肢を知っておけば良い.
Push通知の仕組み
Push通知を実現する方法は各プラットフォーム毎に異なる.
- iOS
- Apple Push Notification Service
- Android
- Firebase Cloud Messaging
- Windows
- Windows Notification Service
それぞれSDKがある.Push通知を完全にコントロールしたいのであれば,バックエンドを用意して以下のような仕組みをとる必要がある.
デバイスの登録,リフレッシュ,各サービスとの通信について考慮し,しかも各プラットフォーム毎にSDKを使って実装を行わなければならない.
これはツラい.
我々クロスプラットフォーム開発者はそんなことはしないようにする.
選択肢は2つあって,クロスプラットフォーム開発のツラいところを軽くしてくれる.
- Visual Studio App Center
- Azure Notification Hubs
Visual Studio App Center
最も簡単な方法. App Centerはたった1つのクロスプラットフォームSDKで数行のコードでPush通知を実現できる.
メリット
- クロスプラットフォームSDK
- すべてのサーバーの動作を扱うことができる
- Push通知を送るためのUIがある
- 複雑なPush通知を扱うAPIがある
- 色,アイコン,サウンド,バッジなどのOSの機能を使える
- データ分析に基づいてユーザーの分類ができる
以下のようにブラウザからPush通知の送信を行うことができる.
Push通知を行うためのWebAPIが用意されていて,それを自分のサーバーから利用することができる.
とても少ないコードで実現できる.
App Center Pushの使い方はこちら
デメリット
デメリットは多くはないが以下のようなものがある.
- 各プラットフォームごとに通知を送る必要がある.
- GroupingやIntentなどの面でできることに制限がある.
App Center Pushまとめ
8~9割ほどのアプリケーションはこれで十分.
Azure Notification Hubs
もし,Push通知について完全にコントロールしたいのであれば,いくらかアプリケーションでの設定が必要だけれども,Azure Notification Hubsを使うと良い.
Azure Notification Hubsは以下のように,,あなたのサーバーとデバイスの間に位置し,RegistrationとOfferを一元的に扱うことができる.
メリット
- ほぼクロスプラットフォームSDK
- デバイスの登録と更新を扱える
- 複雑なPush通知を送信できる
- 色,アイコン,サウンド,バッジなどのOSの機能を使える
- 通知について完全にコントロールできる
App Center Pushとの大きな違いは各プラットフォーム毎にデバイスの登録や,通知を受け取ったときの表示に関するコードを書かなければならないということ.
これはつまり,AndroidでBackground Serviceを,iOSで状態をハンドリングする処理を書かなければならないということ.
Groupingやインライン返信など何でもできる.
デメリット
- サーバー(バックエンド)を用意しなければならない.
- 実装面などでやることが若干多くなる
まとめ
通知は複雑そうに見えるが,App CenterやNotification Hubsを使うことで実装がとても簡単になる.
アプリ全体の9割ぐらいはApp Centerでいける.
もし,SMSアプリやEmailアプリなどのすごくカスタマイズが必要な場合はNotification Hubsを使うと良い.
自分の感想
なるほど.まずはApp Centerだな!