「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[Android開発]]
--[[Firebase]]
--[[プッシュ通知]]
---[[iOS (APNs)]]
---Android (FCM)

*目次 [#afcb3480]
#contents

*概要 [#s207f4a9]
-FCM は、
--Firebase Cloud Messaging 略称。
--Android用の[[プッシュ通知]]サーバ

-Firebaseは、Googleの[[mBaaS]]でもある。
--[[Android]]では、[[Android (FCM)]]を使用するが、
--[[mBaaS]]なので、プッシュ通知の統合機能を持っている。
--このため、[[Android (FCM)]]だけでなく、[[iOS (APNs)]]と連携可能になっている。

*詳細 [#k2b4b564]
-[[Firebaseにログイン>#k71a6dd8]]して、
-[[プロジェクト作成>#sa05a1ad]]を行う。
-プロジェクトに[[アプリを登録>#u8f35bcd]]する。
-アプリの登録後に発行された[[ファイルのダウンロード>#h236aa91]]。
-このファイルを[[ビルド・プロセスに組み込む>#v1a2d3ea]]。
-[[プッシュ通知]]に[[必要なコードを実装する。>#uf6bbe9e]]

**Firebaseにログイン [#k71a6dd8]
https://firebase.google.com/

**プロジェクトの作成 [#sa05a1ad]
プロジェクト作成等の設定を行う。

**アプリの登録 [#u8f35bcd]
-項目などは、Android・iOSで異なる。
-登録後、以下の手順は示される。~
--ただし、ネイティブの手順
--[[クロスプラットフォーム開発ツール]]の場合は、個別に手順を確認する。

**ファイルのダウンロード [#h236aa91]
登録の結果、
-生成されたファイルをダウンロードしておく。
-ファイルの内容は、Android・iOSで異なる。
--Android:google-services.json
--iOS:GoogleService-Info.plist

**ビルド・プロセスへ組込む。 [#v1a2d3ea]
この手順は、Android・iOSで大きく異なる。

-このファイルをビルド・プロセスに組み込む。
-メイク・ファイル的なものを一部、手修正する。

※ また、使用する開発ツールによってパス等が微妙に異なったりするので注意。

**必要なコードを実装する。 [#uf6bbe9e]
プッシュ通知に必要なコードを実装する。

***クライアント側 [#y855cd4a]
Android・iOS、UIフレームワーク毎に異なる。~
※ 使用する開発ツールによって実装方法が明確に異なるので注意。

-Android・iOSのネイティブは、ナビされるが、
-[[ハイブリッド、クロスプラットフォームなどは個別に調査が必要。>#iefd8417]]

***サーバ側 [#e29bc61e]
-[[C#での例>https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%E3%81%A8%E3%82%B9%E3%83%9E%E3%83%9B#u3ed110d]]
-その他
--[[Node.js]]
--Java

**注:ハイブリッド、クロスプラットフォーム系 [#iefd8417]
***[[Cordova>Cordova (PhoneGap)#u9b1dad8]] [#ube1a40e]
***[[Flutter>Flutterのサード・ステップ#p7b4ca10]] [#vb2fe9db]
***... [#ye8f4b00]

**CURLを使用してテストしてみる。 [#zabb022b]
-Firebase consoleからもテスト可能だが、curlを使用してもテストできる。
-{サーバーキー}と{送信者ID}は、Firebase consoleの~
[Settings]画面の[Cloud Messaging]タブのプロジェクト認証情報の項目にある。
-なお、Topicに送信する場合は、「"to":"/topics/トピック名"」と書く。
-WebAPIには、FCM HTTP APIとHTTP v1 APIがあり、以下の例は前者の例。

***Linux [#i7511d3f]
Linuxでは、ヒアドキュメントが利用できる。

 curl -X POST \
 --header "Authorization: key={サーバーキー}" \
 --header "project_id: key={送信者ID}" \
 --header Content-Type:"application/json" \
 https://fcm.googleapis.com/fcm/send \
 -d @- << EOF
 {
   "to": "Topic or FCM Token",
   "notification": {
     "title":"FCM Message",
     "body":"This is an FCM Message"
   }
 }
 EOF

***Windows [#b6443408]
-Windowsだと、~
複数行入力ができず、~
「"」のエスケープが必要。
 curl -X POST ^
 --header "Authorization: key={サーバーキー}" ^
 --header "project_id: key={送信者ID}" ^
 --header Content-Type:"application/json" ^
 https://fcm.googleapis.com/fcm/send ^
 -d '{\"to\":\"Topic or FCM Token\", \"notification\": {\"title\":\"FCM Message\", \"body\":\"This is an FCM Message\"}}' 

-ファイルで指定しても良い。
 -d @test.json 

*参考 [#tf730fed]

**GCM廃止 [#kecdd81f]
-「Googleクラウドメッセージング(GCM)」が1年後に廃止、~
「Firebase Cloud Messaging(FCM)」への移行が必要に:~
Googleのアプリメッセージング基盤が完全に交代 - @IT~
http://www.atmarkit.co.jp/ait/articles/1804/13/news051.html

**TECH Projin [#hc35c6c5]
androidでプッシュ通知を実装する

-[[【第1回 概要】>http://tech.pjin.jp/blog/2015/09/11/android%e3%81%a7%e3%83%97%e3%83%83%e3%82%b7%e3%83%a5%e9%80%9a%e7%9f%a5%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e3%80%90%e7%ac%ac%ef%bc%91%e5%9b%9e-%e6%a6%82%e8%a6%81%e3%80%91/]]
-[[【第2回 事前準備】>http://tech.pjin.jp/blog/2015/09/17/android%e3%81%a7%e3%83%97%e3%83%83%e3%82%b7%e3%83%a5%e9%80%9a%e7%9f%a5%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e3%80%90%e7%ac%ac2%e5%9b%9e-%e4%ba%8b%e5%89%8d%e6%ba%96%e5%82%99%e3%80%91/]]
-[[【第3回 アプリ側実装前編】>http://tech.pjin.jp/blog/2015/09/29/android%e3%81%a7%e3%83%97%e3%83%83%e3%82%b7%e3%83%a5%e9%80%9a%e7%9f%a5%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e3%80%90%e7%ac%ac3%e5%9b%9e-%e3%82%a2%e3%83%97%e3%83%aa%e5%81%b4%e5%ae%9f%e8%a3%85/]]
-[[【第4回 アプリ側実装中編】>http://tech.pjin.jp/blog/2015/10/05/android%e3%81%a7%e3%83%97%e3%83%83%e3%82%b7%e3%83%a5%e9%80%9a%e7%9f%a5%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e3%80%90%e7%ac%ac4%e5%9b%9e-%e3%82%a2%e3%83%97%e3%83%aa%e5%81%b4%e5%ae%9f%e8%a3%85/]]
-[[【第5回 アプリ側実装後編】>http://tech.pjin.jp/blog/2015/10/16/android%e3%81%a7%e3%83%97%e3%83%83%e3%82%b7%e3%83%a5%e9%80%9a%e7%9f%a5%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e3%80%90%e7%ac%ac5%e5%9b%9e-%e3%82%a2%e3%83%97%e3%83%aa%e5%81%b4%e5%ae%9f%e8%a3%85/]]
-[[【第6回 Appサーバ側実装編】>http://tech.pjin.jp/blog/2015/10/20/android%e3%81%a7%e3%83%97%e3%83%83%e3%82%b7%e3%83%a5%e9%80%9a%e7%9f%a5%e3%82%92%e5%ae%9f%e8%a3%85%e3%81%99%e3%82%8b%e3%80%90%e7%ac%ac6%e5%9b%9e-app%e3%82%b5%e3%83%bc%e3%83%90%e5%81%b4%e5%ae%9f/]]

**Qiita [#t960d4f7]

***構成 [#z482f38d]
-AndroidのPush通知を試してみよう [サーバー知識不要~
https://qiita.com/flatfisher/items/bdec83caf3c7f9c8917c
-iOSでFirebase Cloud Messagingを使う~
https://qiita.com/jumperson/items/3fde555fd4660f474579
-Firebase Notificationsのアイコンについて纏めてみた~
https://qiita.com/mkosuke/items/45dd14c61b633efcfd17

***テスト [#d7119985]
-FCMでPush通知をテスト送信する~
https://qiita.com/tasuku/items/258e3edb8e2dffae64d4
-FCM HTTP v1 APIを使ってWeb Push送信~
https://qiita.com/nishi-sankosc/items/b9040ee57e6b7223ff21
-プッシュ通知 curlでFCMを叩く~
https://qiita.com/kosawa/items/f4563046237c4e7274e9
-Firebase(FCMのtopic)をcurlで実行しても~
iPhoneアプリにプッシュ通知がでない時の対処方法~
https://qiita.com/gungle/items/ba923016be6d0840ec46

**firebase.google.com [#ted4a76b]
-Firebase Cloud Messaging~
https://firebase.google.com/docs/cloud-messaging?hl=ja

-Firebase console~
https://console.firebase.google.com/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS