「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>スマホ]] --[[mBaaS]] --[[通知プロバイダ]] *目次 [#t16fc509] #contents *概要 [#qefff091] SaaS開発で調べた[[プッシュ通知]]についてのメモ。 -プッシュは、~ 特定のアカウントに対して行われるが、~ インフラストラクチャとしては、 --Apple(or Google)の通知用サーバに、 ---[[APNs>#y98bdd9c]]~ Appleの通知用サーバ(iOSに通知を行う) ---[[FCM>#v11f894e]]~ Googleの通知用サーバ(Androidに通知を行う) --スマホネイティブ・アプリケーションを登録する >形になる。 -[[プッシュ通知]]までの流れ。 --スマホネイティブ・アプリケーションの登録後に、 --アプリケーションを実機にインストールすると、~ 端末+アプリを識別する[[デバイス・トークン>#x56efdf7]]が発行される --それを使用してサーバから通知を行う。 ---AuthZ(AuthN) Server ---Resource Server -なお、[[個人に送信>#ud033645]]するだけではなく、 --[[トピック購読者に送信>#t54fd02f]] --[[特定グループに送信>#y2e7d9cd]] --[[全体に送信>#m47e6433]] >も[[デバイス・トークン>#x56efdf7]]を使用して行う。 *仕組み [#fdfd3258] -AndroidとiOSでは、プッシュ通知に、前述の異なるが類似の仕組みが採用されている。 -なお、プッシュ通知の動作確認をする為にエミュレータは使用できない(実機へのインストールが必要)。 -[[mBaaS>#yfb3e1b6]]では、AndroidとiOSの差異をラップして隠蔽し、~ AndroidからもiOSからも利用できるプラグインを用意しているケースが多い。 **個人に送信 [#ud033645] ***初期化 [#y6697819] +...。 +バックエンドサーバに[[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]が発行した~ サービスアカウント情報(JSONファイル)を配置する。 +...。 ***デバイス・トークンの保存 [#x56efdf7] +デバイスにアプリケーションをインストールする際、~ [[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバにデバイス登録を行う。 +登録結果としてデバイス・トークンを受け取る。 +デバイス・トークンをバックエンドサーバに送って保存する。~ ※ 1, 2 の処理は、プラグインに~ 「デバイス・トークンを バックエンドサーバに送るデリゲート」~ を渡せば短いコードで完了してしまう。 ※ 登録の際、ユーザIDと紐付けて保存するため認証が必要。~ ネイティブ・アプリの認証であれば[[PKCE>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%20PKCE]]が一般的。 ***通知の送信 [#k4c1bdc9] +任意の箇所でアプリケーションのイベントを検出する。 +バックエンドサーバは、~ 「サービスアカウント情報」と「デバイス・トークン」を使用して、~ [[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバにプッシュ要求を送信する。 +[[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバは、デバイスにプッシュ通知を送信する。 **トピック購読者に送信 [#t54fd02f] トピック購読は、ユーザ自身が行う (Nativeからに[[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバに直アクセス)。 ***初期化 [#j21103f0] -デバイス・トークンを使用して、自端末のトピック登録依頼を[[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバに送信する。 --[[個人に送信>#ud033645]]と異なり、送信時のデバイス・トークンは不要。 --トピック登録時、[[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバにデバイス・トークンを渡して保存しているため。 ***通知の送信 [#ya5c8950] [[個人に送信>#ud033645]]と異なる点は、~ [[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバにプッシュ要求を送信する際に、~ 「サービスアカウント情報」と「トピック名」を使用する点。 **特定グループに送信 [#y2e7d9cd] グループ作成とユーザ登録は、バックエンドの管理者やアプリケーションで行う。 ***初期化 [#z45be148] [[個人に送信>#ud033645]]と異なる点は、 >グループを作成依頼を[[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバに送信して、 「通知キー」を受け取る点。 ***通知の送信 [#rf7ababe] [[個人に送信>#ud033645]]と異なる点は、~ [[FCM>#v11f894e]] / [[APNs>#y98bdd9c]] / [[JPush>#eca82729]]サーバにプッシュ要求を送信する際に、~ 「サービスアカウント情報」と「通知キー」を使用する点。 **全体に送信 [#m47e6433] -Firebaseコンソールなどポータルから送信可能。 -バックエンドサーバ経由で行う場合、~ 事前に「全体に送信」[[トピック>#t54fd02f]]を登録しておく。 *参考 [#u5aead84] -Kii Cloud のプッシュ通知の概要~ https://docs.kii.com/ja/guides/cloudsdk/rest/managing-push-notification/push-overview/ --Kii Cloud でのプッシュ通知機能~ https://docs.kii.com/ja/guides/cloudsdk/rest/managing-push-notification/push-overview/push-kiicloud/ --プッシュ通知の仕組み~ https://docs.kii.com/ja/guides/cloudsdk/rest/managing-push-notification/push-overview/structure/ --プラットフォーム間でのプッシュ通知~ https://docs.kii.com/ja/guides/cloudsdk/rest/managing-push-notification/push-overview/inter-platform/ ***プッシュ通知サーバ [#s5c3d72c] **プッシュ通知サーバ [#s5c3d72c] ***[[Android (FCM)]] [#v11f894e] ***[[iOS (APNs)]] [#y98bdd9c] ***JPush [#eca82729] -JPushで中国国内のAndroid端末にプッシュ通知するための初期調査 - Qiita~ https://qiita.com/grachro/items/77036fc7b1672a4f77d2 **[[mBaaS]]利用時 [#yfb3e1b6] ***ニフクラ mobile backend [#w63fbaa6] -iOS --プッシュ通知 (iOS) : 基本的な使い方~ https://mbaas.nifcloud.com/doc/current/push/basic_usage_ios.html --チュートリアル (iOS) : 位置情報に連動したプッシュ通知を送る~ https://mbaas.nifcloud.com/doc/current/tutorial/geolocation-notification.html#/iOS -Android --プッシュ通知 (Android) : 基本的な使い方~ http://mb.cloud.nifty.com/doc/current/push/basic_usage_android.html --チュートリアル (Android) : 位置情報に連動したプッシュ通知を送る~ https://mbaas.nifcloud.com/doc/current/tutorial/geolocation-notification.html#/Android ***Firebase [#r02a15e7] 最もポピュラーなmBaaS -Firebase Cloud Messaging~ https://firebase.google.com/docs/cloud-messaging/?hl=ja -Firebase Cloud Messaging | プラットフォーム間で通知を無料送信~ https://firebase.google.com/products/cloud-messaging/?hl=ja -第9回 Firebase Cloud MessagingとFirebase Notificationsでメッセージを送信する:~ スマホアプリ開発を加速する,Firebaseを使ってみよう|gihyo.jp … 技術評論社~ https://gihyo.jp/dev/serial/01/firebase/0009 -Firebaseを使うと簡単にユーザ属性毎のプッシュ通知が送れて~ 既読管理やコンバージョンも簡単に把握することが出来るよ!~ しかも無料で!すごく魅力的だけどめっちゃハマった話~ https://qiita.com/chanibarin/items/48d5f5946b1e6c97e379