shuhelohelo’s blog

Xamarin.Forms多めです.

Xamarin.FormsでのPush通知について

追記

App Center Pushは廃止となり,Azure Notification Hubsを使うように,とのことです.

docs.microsoft.com

f:id:shuhelohelo:20200514005843p:plain


James Montemagnoさんによる説明.

montemagno.com

以下,その内容のメモ


Push通知を実現する方法は色々あるが,2つの選択肢を知っておけば良い.

Push通知の仕組み

Push通知を実現する方法は各プラットフォーム毎に異なる.

それぞれSDKがある.Push通知を完全にコントロールしたいのであれば,バックエンドを用意して以下のような仕組みをとる必要がある.

f:id:shuhelohelo:20200513221240p:plain

バイスの登録,リフレッシュ,各サービスとの通信について考慮し,しかも各プラットフォーム毎にSDKを使って実装を行わなければならない.

これはツラい.

我々クロスプラットフォーム開発者はそんなことはしないようにする.

選択肢は2つあって,クロスプラットフォーム開発のツラいところを軽くしてくれる.

Visual Studio App Center

最も簡単な方法. App Centerはたった1つのクロスプラットフォームSDKで数行のコードでPush通知を実現できる.

メリット

  • クロスプラットフォームSDK
  • すべてのサーバーの動作を扱うことができる
  • Push通知を送るためのUIがある
  • 複雑なPush通知を扱うAPIがある
  • 色,アイコン,サウンド,バッジなどのOSの機能を使える
  • データ分析に基づいてユーザーの分類ができる

以下のようにブラウザからPush通知の送信を行うことができる.

f:id:shuhelohelo:20200513222317p:plain

Push通知を行うためのWebAPIが用意されていて,それを自分のサーバーから利用することができる.

f:id:shuhelohelo:20200513222459p:plain

とても少ないコードで実現できる.

App Center Pushの使い方はこちら

docs.microsoft.com

デメリット

デメリットは多くはないが以下のようなものがある.

  • 各プラットフォームごとに通知を送る必要がある.
  • GroupingやIntentなどの面でできることに制限がある.

App Center Pushまとめ

8~9割ほどのアプリケーションはこれで十分.

Azure Notification Hubs

もし,Push通知について完全にコントロールしたいのであれば,いくらかアプリケーションでの設定が必要だけれども,Azure Notification Hubsを使うと良い.

Azure Notification Hubsは以下のように,,あなたのサーバーとデバイスの間に位置し,RegistrationとOfferを一元的に扱うことができる.

f:id:shuhelohelo:20200513223414p:plain

メリット

App Center Pushとの大きな違いは各プラットフォーム毎にデバイスの登録や,通知を受け取ったときの表示に関するコードを書かなければならないということ.

これはつまり,AndroidでBackground Serviceを,iOSで状態をハンドリングする処理を書かなければならないということ.

Groupingやインライン返信など何でもできる.

デメリット

  • サーバー(バックエンド)を用意しなければならない.
  • 実装面などでやることが若干多くなる

まとめ

通知は複雑そうに見えるが,App CenterやNotification Hubsを使うことで実装がとても簡単になる.

アプリ全体の9割ぐらいはApp Centerでいける.

もし,SMSアプリやEmailアプリなどのすごくカスタマイズが必要な場合はNotification Hubsを使うと良い.

自分の感想

なるほど.まずはApp Centerだな!