Frank van Puffelen
ã¨ã³ã¸ãã¢
æ¬è¨äºã§ã¯、Firebase Database、Cloud Messaging、Node.js ã使ç¨ã㦠Android 端æ«éã§éç¥ãéä¿¡ããæ¹æ³ã説æãã¾ã。
Firebase Database ã¯、ãã«ãã¦ã¼ã¶ã¼ ã¢ãã¤ã« ã¢ããªã±ã¼ã·ã§ã³æ§ç¯ã®ããã®ãã°ãããããã¯ã¨ã³ãã§ã。è¤æ°ã®ã¦ã¼ã¶ã¼ãã¢ããªã±ã¼ã·ã§ã³ãéãã¦ããã°、ããã¦ã¼ã¶ã¼ã«ãã夿´ã¯ãã¹ã¦ã®æ¥ç¶ä¸ã®ã¦ã¼ã¶ã¼ã«ããªç§ä»¥å
ã«åæããã¾ã。
ãã£ãã ã¢ããªã±ã¼ã·ã§ã³ããã®è¯ãä¾ã§ã。ããã¦ã¼ã¶ã¼ãéä¿¡ããã¡ãã»ã¼ã¸ã¯å³åº§ã«ä»ã®ã¦ã¼ã¶ã¼ã«åæããããã、ããã¸ãã¹ã ã¼ãºãªä½¿ç¨æãå®ç¾ã§ãã¾ã。
ããã、Android 端æ«ä¸ã§ã¢ããªãå®è¡ãã¦ããªãã¦ã¼ã¶ã¼ã¯ã©ããªãã§ãããã。ãã®å ´å、端æ«ã¯ Firebase Database ãµã¼ãã¼ã«æ¥ç¶ããã¦ããªããã、夿´ãèªåçã«åä¿¡ãããã¨ã¯ã§ãã¾ãã。é常ã®ãã£ãã ã¡ãã»ã¼ã¸ã®å ´åã¯ããã§ã大ä¸å¤«ã§ãã、ã»ã¨ãã©ã®ãã£ããã¢ããªã§ @ ãã¤ãã¦èª°ããå¼ã³åºãã¨ãã¯、ãã®ã¦ã¼ã¶ã¼ãå¼ãæ»ããããã¨ãã»ã¨ãã©ã§ããã(ä¾: 「@puf ã¡ãã£ã¨ããããª?」)。
é常、ãã®ãããªå ´åã¯、Firebase Cloud Messaging ã使ã£ã¦ãã®ã¦ã¼ã¶ã¼ã®ç«¯æ«ã«éç¥ãéãã¾ã。ãã®ãããªéç¥ã¯ç«¯æ«ã®éç¥ã¨ãªã¢ã«è¡¨ç¤ºãã、ä½ããããããã¤ãã³ããèµ·ãã£ãã¨ãã«ã¦ã¼ã¶ã¼ãã¢ããªã«å¼ãæ»ãææ®µã¨ãªãã¾ã。
æ¬è¨äºã§ã¯、Firebase Cloud Messaging ã使ã£ã¦ç«¯æ«ã«éç¥ãéä¿¡ãã¦ã¿ã¾ã。API ãã¼ã Android 端æ«ã«å
¬éããªãã¦ãããããã«、FCM ã¨éä¿¡ãã Node ã¹ã¯ãªãããè¨è¿°ãã¾ã。ããã、ã¾ãæåã«、Android 端æ«ããéç¥ã
éä¿¡ ããã³ã¼ããã©ã®ãããªãã®ããçè§£ãã¾ããã。
Android ã¢ããªããããã·ã¥éç¥ãéä¿¡ãã
ã¦ã¼ã¶ã¼ã«éç¥ãéä¿¡ããã«ã¯、Android ã¢ããªã§æ¬¡ã®ããã«ãã¾ã。
sendNotificationToUser("puf", "Hi there puf!");
sendNotificationToUser() ã¡ã½ããã¯、次ã®ããã«å®è£
ããã¦ãããã«ãã¼ ã¡ã½ããã§ã。
public static void sendNotificationToUser(String user, final String message) {
Firebase ref = new Firebase(FIREBASE_URL);
final Firebase notifications = ref.child("notificationRequests");
Map notification = new HashMap<>();
notification.put("username", user);
notification.put("message", message);
notifications.push().setValue(notification);
}
ãããã、ããã¯äºæ³ã¨ã¯ç°ãªããã®ã§ããã。ãã®ã³ã¼ãã¯、éç¥ãã¼ã¿ããã¼ã¿ãã¼ã¹ã«æ¸ãè¾¼ãã§ããã ãã§ã。ããã§ã©ããã£ã¦éç¥ãéä¿¡ãã¦ããã®ã§ãããã。
å®ã¯、éç¥ã®éä¿¡ã¯è¡ã£ã¦ãã¾ãã。ããã§ã¯、ãã¼ã¿ãã¼ã¹ããã¥ã¼ã¨ãã¦ä½¿ç¨ãã¦ãã¾ã。Android ã¢ããªã¯éç¥ãéä¿¡ãããªã¯ã¨ã¹ãããã¼ã¿ãã¼ã¹ã«æ¸ãè¾¼ã¿ã¾ã。ããã Node ã¹ã¯ãªãããããã¯ã¢ãããã¦、Cloud Messaging çµç±ã§éç¥ãéä¿¡ãã¾ã。ãã®ã¹ã¯ãªããã¯å¾ã»ã©è¦ã¦ããã¾ã。ã¾ãã¯、ãã®ã¢ããªã®ãã¼ã¿æ§é ã«ã¤ãã¦å°ãã話ããã¾ããã。
ãã¼ã¿æ§é
ä»ã®ã¢ããªã±ã¼ã·ã§ã³ã¨åãã、Firebase ãããã¯ã¨ã³ãã¨ããã¢ããªã±ã¼ã·ã§ã³ã§ããã¼ã¿æ§é ã¯ç¹ã«éè¦ãªé¨åã® 1 ã¤ã§ã。éç¥ãéä¿¡ããããã®ãã¼ã¿æ§é ã¯æ¢ã«è¦ã¦ãã¾ã。
notificationRequests
$pushid
message: "Hello there"
username: "puf"
ããã Android ã¢ããªãæ¸ãè¾¼ãã ãã¼ãã§ã。åéç¥ãªã¯ã¨ã¹ãã¯、éä¿¡ããã¡ãã»ã¼ã¸ã¨éç¥å¯¾è±¡ã®ã¦ã¼ã¶ã¼åã§æ§æããã¦ãã¾ã。ã¦ã¼ã¶ã¼åãå®éã®éç¥ã«ã©ã®ããã«ãããã³ã°ãããã¯、ã¢ããªã±ã¼ã·ã§ã³ã«ãã£ã¦ç°ãªãã¾ã。ãã®å ´åã¯、
ãããã¯ãã¼ã¹ã®éç¥ ã使ç¨ãã¾ã。ã¤ã¾ã、ã¦ã¼ã¶ã¼åã¯/topics/user_
ã¨ãããããã¯ã«ãããã³ã°ããã¾ã。ãã®å ´å、ã¡ãã»ã¼ã¸ã¯ /topics/user_puf ã«éä¿¡ããã¾ã(Android ã¢ããªã¯、ãã®ãããã¯ããµãã¹ã¯ã©ã¤ããã¾ã)。
ã§ã¯、å
ã»ã©ã話ããã Node ã³ã¼ããè¦ã¦ã¿ã¾ããã。
Node ã³ã¼ã
ããã¾ã§ã§、Android ã¢ããªãããã¼ã¿ãã¼ã¹ã«éç¥ãªã¯ã¨ã¹ããæ¸ãè¾¼ãæ¹æ³ã¨、ãã¼ã¿ãã¼ã¹æ§é ãã©ã®ãããªãã®ãããããã¾ãã。ããã§ã¯、å®éã«éç¥ãéä¿¡ããã³ã¼ããæ¸ãã¦ããã¾ã。
ããã¯、å
ã»ã©ç¢ºèªããéç¥ãã¥ã¼ãç£è¦ãã Node ããã»ã¹ã«ãªãã¾ã。ãã®ãã¥ã¼ã«åä¾ã追å ããããã³ã«å¿
è¦ãªæ
å ±ãåãåºã、Cloud Messaging REST API ãå¼ã³åºãã¦éç¥ãéä¿¡ãã¾ã。å¦çãæåããå ´å、ãã¥ã¼ããéç¥ãªã¯ã¨ã¹ããåé¤ãã¾ã。
var firebase = require('firebase');
var request = require('request');
var API_KEY = "..."; // Your Firebase Cloud Server API key
firebase.initializeApp({
serviceAccount: ".json",
databaseURL: "https://.firebaseio.com/"
});
ref = firebase.database().ref();
function listenForNotificationRequests() {
var requests = ref.child('notificationRequests');
ref.on('child_added', function(requestSnapshot) {
var request = requestSnapshot.val();
sendNotificationToUser(
request.username,
request.message,
function() {
request.ref().remove();
}
);
}, function(error) {
console.error(error);
});
};
function sendNotificationToUser(username, message, onSuccess) {
request({
url: 'https://fcm.googleapis.com/fcm/send',
method: 'POST',
headers: {
'Content-Type' :' application/json',
'Authorization': 'key='+API_KEY
},
body: JSON.stringify({
notification: {
title: message
},
to : '/topics/user_'+username
})
}, function(error, response, body) {
if (error) { console.error(error); }
else if (response.statusCode >= 400) {
console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage);
}
else {
onSuccess();
}
});
}
// start listening
listenForNotificationRequests();
child_added ã¤ãã³ãããªãã¹ã³ãã¦ãããã、ãã¥ã¼ã®åéç¥ãªã¯ã¨ã¹ãã«å¯¾ã㦠sendNotificationToUser() ãå¼ã³åºããã¾ã。éä¿¡ãæåããã¨、ãã¥ã¼ãããªã¯ã¨ã¹ããåé¤ãã¾ã。ä»åã®åç´ãªã¹ã¯ãªããã§ã¯、èªåãªãã©ã¤ã¯è¡ã£ã¦ãã¾ãã。ãã®ãã、ã¹ã¯ãªãããåèµ·åããå ´åã®ã¿、失æããéç¥ããªãã©ã¤ããã¾ã。ããå°ãæ¡å¼µæ§ãããã¢ããã¼ããã¨ãå ´åã¯、
firebase-queue ã©ã¤ãã©ãª ã®ä½¿ç¨ãæ¤è¨ãã¦ãã ãã。
ã¹ã¯ãªããã« API_KEY 宿°ãå«ã¾ãã¦ãããã¨ã«ãæ°ã¥ãããããã¾ãã。ããã¯、ã¡ãã»ã¼ã¸ãéä¿¡ããããã« Firebase Cloud Messaging ããåå¾ãããã¼ã§ã。ã¾ãã«ãã®ç¹ã、Android ã¢ããªã§ãã®ã³ã¼ããå®è¡ããªãçç±ã§ã。API ãã¼ããããã°、ãã®ã¢ããªã®ååã§ã¡ãã»ã¼ã¸ãéä¿¡ãããã¨ãã§ããã®ã§、æªç¨ãããå¯è½æ§ãããã¾ã。ãã®ãã¼ããµã¼ãã¼ä¸ã® Node ã¹ã¯ãªããã§ä¿æãããã¨ã«ãã£ã¦、Android ã¢ããªã®ã¦ã¼ã¶ã¼ããã¼ãå
¥æã§ããªãããã«ãã¦ãã¾ã。
Android ã¢ããªã§éç¥ãåä¿¡ãã
Firebase Cloud Messaging SDK ãéç¥ã¡ãã»ã¼ã¸ãæ±ãæ¹æ³ã®ãããã§、Android ã®ã³ã¼ãã¯æä½éã§æ¸ã¿ã¾ã。ã¢ããªãããã¯ã°ã©ã¦ã³ãã§åä½ãã¦ããéã«éç¥ã¡ãã»ã¼ã¸ãåãåãã¨、ã·ã¹ãã éç¥ã¨ãªã¢ã«ã¡ãã»ã¼ã¸ã表示ããã¾ã。ã¦ã¼ã¶ã¼ãã¡ãã»ã¼ã¸ãã¯ãªãã¯ããã¨、ã¢ããªãèªåçã«éãã¾ã。ãããã£ãå½¢ã§ã¢ããªãåã³éãã¦ããããã¨ã¯、ã¾ãã«ãã®ã¢ããªã§å®ç¾ãããã£ããã¨ã§ã。ãã®ããã«è¡ãå¿
è¦ãããã®ã¯、Firebase Messaging ã©ã¤ãã©ãªãã¤ã³ã¯ã«ã¼ããã¦ã¦ã¼ã¶ã¼åã®ãããã¯ããµãã¹ã¯ã©ã¤ããããã¨ã ãã§ã。
ãããã¯ã®ãµãã¹ã¯ã©ã¤ã
ããã¦ã¼ã¶ã¼å®ã¦ã®ã¡ãã»ã¼ã¸ãèå¥ããããã«、ã¦ã¼ã¶ã¼åã«ä¸è´ãããããã¯ã使ç¨ãã¾ã。
String username = "puf";
FirebaseMessaging.getInstance().subscribeToTopic("user_"+username);
ãã®é¨åã¯ã¢ããªã«ä¾åããå¦çã§ãããã、ãã®ã¹ããããã§ã¯ã¦ã¼ã¶ã¼åããã¼ãã³ã¼ããã¦ãã¾ã。ããã、ä¸åº¦ã¦ã¼ã¶ã¼åããæ±ºã¾ã£ã¦ãã¾ãã°、éç¥ã®ç»é²ã«å¿
è¦ãªã®ã¯ 1 è¡ã®ã³ã¼ãã ãã§æ¸ããã¨ã¯ãããã§ããã(ãã¨ã¯、ã¢ããªãããã¯ã°ã©ã¦ã³ãã§ããå ´åã«éç¥ã表示ããé¨åã ãã§ã)。
ã¢ããªããã©ã¢ã°ã©ã³ãã§ããå ´åã«éç¥ã®å¦çãè¡ãããå ´åã、ã¡ãã»ã¼ã¸ã¨ã¨ãã«ä»ã®ãã¼ã¿ãéãããå ´åã¯、
Firebase Cloud Messaging ã¨ã¡ãã»ã¼ã¸ ã¿ã¤ã ã®ããã¥ã¡ã³ããã覧ãã ãã。
ã¾ã¨ã
æ¬è¨äºã§ã¯、Firebase 㨠Node ã¹ã¯ãªããã使ç¨ã㦠Android ã¢ããªã«ããã·ã¥éç¥ãéãæ¹æ³ã説æãã¾ãã。ä»å㯠Android ã³ã¼ãããéç¥ãéä¿¡ãã¾ããã、Firebase Database ã«ã¢ã¯ã»ã¹ã§ããä»ã®ã¢ããªã±ã¼ã·ã§ã³ãããåãããã«ç°¡åã«éä¿¡ãããã¨ãã§ãã¾ã。iOS ãµãã¼ãã追å ãããã¨ãç°¡åã§、
ä¾åæ§ã追å ãã¦
ãªã¢ã¼ãéç¥ç¨ã®ç»é² ãè¡ãã ãã§ã。
Posted by
Yoshifumi Yamaguchi - Developer Relations Team
[ãã®è¨äºã¯ Frank van Puffelen、ã¨ã³ã¸ãã¢ã«ãã The Firebase Blog ã®è¨äº "Importing the Mobile Ads SDK with Firebase " ãå
ã«ç¿»è¨³・å çãããã®ã§ã。詳ããã¯å
è¨äºãã覧ãã ãã。]
Frank van Puffelen
ã¨ã³ã¸ãã¢
æ¬è¨äºã§ã¯、Firebase Database、Cloud Messaging、Node.js ã使ç¨ã㦠Android 端æ«éã§éç¥ãéä¿¡ããæ¹æ³ã説æãã¾ã。
Firebase Database ã¯、ãã«ãã¦ã¼ã¶ã¼ ã¢ãã¤ã« ã¢ããªã±ã¼ã·ã§ã³æ§ç¯ã®ããã®ãã°ãããããã¯ã¨ã³ãã§ã。è¤æ°ã®ã¦ã¼ã¶ã¼ãã¢ããªã±ã¼ã·ã§ã³ãéãã¦ããã°、ããã¦ã¼ã¶ã¼ã«ãã夿´ã¯ãã¹ã¦ã®æ¥ç¶ä¸ã®ã¦ã¼ã¶ã¼ã«ããªç§ä»¥å
ã«åæããã¾ã。
ãã£ãã ã¢ããªã±ã¼ã·ã§ã³ããã®è¯ãä¾ã§ã。ããã¦ã¼ã¶ã¼ãéä¿¡ããã¡ãã»ã¼ã¸ã¯å³åº§ã«ä»ã®ã¦ã¼ã¶ã¼ã«åæããããã、ããã¸ãã¹ã ã¼ãºãªä½¿ç¨æãå®ç¾ã§ãã¾ã。
ããã、Android 端æ«ä¸ã§ã¢ããªãå®è¡ãã¦ããªãã¦ã¼ã¶ã¼ã¯ã©ããªãã§ãããã。ãã®å ´å、端æ«ã¯ Firebase Database ãµã¼ãã¼ã«æ¥ç¶ããã¦ããªããã、夿´ãèªåçã«åä¿¡ãããã¨ã¯ã§ãã¾ãã。é常ã®ãã£ãã ã¡ãã»ã¼ã¸ã®å ´åã¯ããã§ã大ä¸å¤«ã§ãã、ã»ã¨ãã©ã®ãã£ããã¢ããªã§ @ ãã¤ãã¦èª°ããå¼ã³åºãã¨ãã¯、ãã®ã¦ã¼ã¶ã¼ãå¼ãæ»ããããã¨ãã»ã¨ãã©ã§ããã(ä¾: 「@puf ã¡ãã£ã¨ããããª?」)。
é常、ãã®ãããªå ´åã¯、Firebase Cloud Messaging ã使ã£ã¦ãã®ã¦ã¼ã¶ã¼ã®ç«¯æ«ã«éç¥ãéãã¾ã。ãã®ãããªéç¥ã¯ç«¯æ«ã®éç¥ã¨ãªã¢ã«è¡¨ç¤ºãã、ä½ããããããã¤ãã³ããèµ·ãã£ãã¨ãã«ã¦ã¼ã¶ã¼ãã¢ããªã«å¼ãæ»ãææ®µã¨ãªãã¾ã。
æ¬è¨äºã§ã¯、Firebase Cloud Messaging ã使ã£ã¦ç«¯æ«ã«éç¥ãéä¿¡ãã¦ã¿ã¾ã。API ãã¼ã Android 端æ«ã«å
¬éããªãã¦ãããããã«、FCM ã¨éä¿¡ãã Node ã¹ã¯ãªãããè¨è¿°ãã¾ã。ããã、ã¾ãæåã«、Android 端æ«ããéç¥ã éä¿¡ ããã³ã¼ããã©ã®ãããªãã®ããçè§£ãã¾ããã。
Android ã¢ããªããããã·ã¥éç¥ãéä¿¡ãã
ã¦ã¼ã¶ã¼ã«éç¥ãéä¿¡ããã«ã¯、Android ã¢ããªã§æ¬¡ã®ããã«ãã¾ã。
sendNotificationToUser("puf", "Hi there puf!");
sendNotificationToUser() ã¡ã½ããã¯、次ã®ããã«å®è£
ããã¦ãããã«ãã¼ ã¡ã½ããã§ã。
public static void sendNotificationToUser(String user, final String message) {
Firebase ref = new Firebase(FIREBASE_URL);
final Firebase notifications = ref.child("notificationRequests");
Map notification = new HashMap<>();
notification.put("username", user);
notification.put("message", message);
notifications.push().setValue(notification);
}
ãããã、ããã¯äºæ³ã¨ã¯ç°ãªããã®ã§ããã。ãã®ã³ã¼ãã¯、éç¥ãã¼ã¿ããã¼ã¿ãã¼ã¹ã«æ¸ãè¾¼ãã§ããã ãã§ã。ããã§ã©ããã£ã¦éç¥ãéä¿¡ãã¦ããã®ã§ãããã。
å®ã¯、éç¥ã®éä¿¡ã¯è¡ã£ã¦ãã¾ãã。ããã§ã¯、ãã¼ã¿ãã¼ã¹ããã¥ã¼ã¨ãã¦ä½¿ç¨ãã¦ãã¾ã。Android ã¢ããªã¯éç¥ãéä¿¡ãããªã¯ã¨ã¹ãããã¼ã¿ãã¼ã¹ã«æ¸ãè¾¼ã¿ã¾ã。ããã Node ã¹ã¯ãªãããããã¯ã¢ãããã¦、Cloud Messaging çµç±ã§éç¥ãéä¿¡ãã¾ã。ãã®ã¹ã¯ãªããã¯å¾ã»ã©è¦ã¦ããã¾ã。ã¾ãã¯、ãã®ã¢ããªã®ãã¼ã¿æ§é ã«ã¤ãã¦å°ãã話ããã¾ããã。
ãã¼ã¿æ§é
ä»ã®ã¢ããªã±ã¼ã·ã§ã³ã¨åãã、Firebase ãããã¯ã¨ã³ãã¨ããã¢ããªã±ã¼ã·ã§ã³ã§ããã¼ã¿æ§é ã¯ç¹ã«éè¦ãªé¨åã® 1 ã¤ã§ã。éç¥ãéä¿¡ããããã®ãã¼ã¿æ§é ã¯æ¢ã«è¦ã¦ãã¾ã。
notificationRequests
$pushid
message: "Hello there"
username: "puf"
ããã Android ã¢ããªãæ¸ãè¾¼ãã ãã¼ãã§ã。åéç¥ãªã¯ã¨ã¹ãã¯、éä¿¡ããã¡ãã»ã¼ã¸ã¨éç¥å¯¾è±¡ã®ã¦ã¼ã¶ã¼åã§æ§æããã¦ãã¾ã。ã¦ã¼ã¶ã¼åãå®éã®éç¥ã«ã©ã®ããã«ãããã³ã°ãããã¯、ã¢ããªã±ã¼ã·ã§ã³ã«ãã£ã¦ç°ãªãã¾ã。ãã®å ´åã¯、ãããã¯ãã¼ã¹ã®éç¥ ã使ç¨ãã¾ã。ã¤ã¾ã、ã¦ã¼ã¶ã¼åã¯/topics/user_ ã¨ãããããã¯ã«ãããã³ã°ããã¾ã。ãã®å ´å、ã¡ãã»ã¼ã¸ã¯ /topics/user_puf ã«éä¿¡ããã¾ã(Android ã¢ããªã¯、ãã®ãããã¯ããµãã¹ã¯ã©ã¤ããã¾ã)。
ã§ã¯、å
ã»ã©ã話ããã Node ã³ã¼ããè¦ã¦ã¿ã¾ããã。
Node ã³ã¼ã
ããã¾ã§ã§、Android ã¢ããªãããã¼ã¿ãã¼ã¹ã«éç¥ãªã¯ã¨ã¹ããæ¸ãè¾¼ãæ¹æ³ã¨、ãã¼ã¿ãã¼ã¹æ§é ãã©ã®ãããªãã®ãããããã¾ãã。ããã§ã¯、å®éã«éç¥ãéä¿¡ããã³ã¼ããæ¸ãã¦ããã¾ã。
ããã¯、å
ã»ã©ç¢ºèªããéç¥ãã¥ã¼ãç£è¦ãã Node ããã»ã¹ã«ãªãã¾ã。ãã®ãã¥ã¼ã«åä¾ã追å ããããã³ã«å¿
è¦ãªæ
å ±ãåãåºã、Cloud Messaging REST API ãå¼ã³åºãã¦éç¥ãéä¿¡ãã¾ã。å¦çãæåããå ´å、ãã¥ã¼ããéç¥ãªã¯ã¨ã¹ããåé¤ãã¾ã。
var firebase = require('firebase');
var request = require('request');
var API_KEY = "..."; // Your Firebase Cloud Server API key
firebase.initializeApp({
serviceAccount: ".json",
databaseURL: "https://.firebaseio.com/"
});
ref = firebase.database().ref();
function listenForNotificationRequests() {
var requests = ref.child('notificationRequests');
ref.on('child_added', function(requestSnapshot) {
var request = requestSnapshot.val();
sendNotificationToUser(
request.username,
request.message,
function() {
request.ref().remove();
}
);
}, function(error) {
console.error(error);
});
};
function sendNotificationToUser(username, message, onSuccess) {
request({
url: 'https://fcm.googleapis.com/fcm/send',
method: 'POST',
headers: {
'Content-Type' :' application/json',
'Authorization': 'key='+API_KEY
},
body: JSON.stringify({
notification: {
title: message
},
to : '/topics/user_'+username
})
}, function(error, response, body) {
if (error) { console.error(error); }
else if (response.statusCode >= 400) {
console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage);
}
else {
onSuccess();
}
});
}
// start listening
listenForNotificationRequests();
child_added ã¤ãã³ãããªãã¹ã³ãã¦ãããã、ãã¥ã¼ã®åéç¥ãªã¯ã¨ã¹ãã«å¯¾ã㦠sendNotificationToUser() ãå¼ã³åºããã¾ã。éä¿¡ãæåããã¨、ãã¥ã¼ãããªã¯ã¨ã¹ããåé¤ãã¾ã。ä»åã®åç´ãªã¹ã¯ãªããã§ã¯、èªåãªãã©ã¤ã¯è¡ã£ã¦ãã¾ãã。ãã®ãã、ã¹ã¯ãªãããåèµ·åããå ´åã®ã¿、失æããéç¥ããªãã©ã¤ããã¾ã。ããå°ãæ¡å¼µæ§ãããã¢ããã¼ããã¨ãå ´åã¯、firebase-queue ã©ã¤ãã©ãª ã®ä½¿ç¨ãæ¤è¨ãã¦ãã ãã。
ã¹ã¯ãªããã« API_KEY 宿°ãå«ã¾ãã¦ãããã¨ã«ãæ°ã¥ãããããã¾ãã。ããã¯、ã¡ãã»ã¼ã¸ãéä¿¡ããããã« Firebase Cloud Messaging ããåå¾ãããã¼ã§ã。ã¾ãã«ãã®ç¹ã、Android ã¢ããªã§ãã®ã³ã¼ããå®è¡ããªãçç±ã§ã。API ãã¼ããããã°、ãã®ã¢ããªã®ååã§ã¡ãã»ã¼ã¸ãéä¿¡ãããã¨ãã§ããã®ã§、æªç¨ãããå¯è½æ§ãããã¾ã。ãã®ãã¼ããµã¼ãã¼ä¸ã® Node ã¹ã¯ãªããã§ä¿æãããã¨ã«ãã£ã¦、Android ã¢ããªã®ã¦ã¼ã¶ã¼ããã¼ãå
¥æã§ããªãããã«ãã¦ãã¾ã。
Android ã¢ããªã§éç¥ãåä¿¡ãã
Firebase Cloud Messaging SDK ãéç¥ã¡ãã»ã¼ã¸ãæ±ãæ¹æ³ã®ãããã§、Android ã®ã³ã¼ãã¯æä½éã§æ¸ã¿ã¾ã。ã¢ããªãããã¯ã°ã©ã¦ã³ãã§åä½ãã¦ããéã«éç¥ã¡ãã»ã¼ã¸ãåãåãã¨、ã·ã¹ãã éç¥ã¨ãªã¢ã«ã¡ãã»ã¼ã¸ã表示ããã¾ã。ã¦ã¼ã¶ã¼ãã¡ãã»ã¼ã¸ãã¯ãªãã¯ããã¨、ã¢ããªãèªåçã«éãã¾ã。ãããã£ãå½¢ã§ã¢ããªãåã³éãã¦ããããã¨ã¯、ã¾ãã«ãã®ã¢ããªã§å®ç¾ãããã£ããã¨ã§ã。ãã®ããã«è¡ãå¿
è¦ãããã®ã¯、Firebase Messaging ã©ã¤ãã©ãªãã¤ã³ã¯ã«ã¼ããã¦ã¦ã¼ã¶ã¼åã®ãããã¯ããµãã¹ã¯ã©ã¤ããããã¨ã ãã§ã。
ãããã¯ã®ãµãã¹ã¯ã©ã¤ã
ããã¦ã¼ã¶ã¼å®ã¦ã®ã¡ãã»ã¼ã¸ãèå¥ããããã«、ã¦ã¼ã¶ã¼åã«ä¸è´ãããããã¯ã使ç¨ãã¾ã。
String username = "puf";
FirebaseMessaging.getInstance().subscribeToTopic("user_"+username);
ãã®é¨åã¯ã¢ããªã«ä¾åããå¦çã§ãããã、ãã®ã¹ããããã§ã¯ã¦ã¼ã¶ã¼åããã¼ãã³ã¼ããã¦ãã¾ã。ããã、ä¸åº¦ã¦ã¼ã¶ã¼åããæ±ºã¾ã£ã¦ãã¾ãã°、éç¥ã®ç»é²ã«å¿
è¦ãªã®ã¯ 1 è¡ã®ã³ã¼ãã ãã§æ¸ããã¨ã¯ãããã§ããã(ãã¨ã¯、ã¢ããªãããã¯ã°ã©ã¦ã³ãã§ããå ´åã«éç¥ã表示ããé¨åã ãã§ã)。
ã¢ããªããã©ã¢ã°ã©ã³ãã§ããå ´åã«éç¥ã®å¦çãè¡ãããå ´åã、ã¡ãã»ã¼ã¸ã¨ã¨ãã«ä»ã®ãã¼ã¿ãéãããå ´åã¯、Firebase Cloud Messaging ã¨ã¡ãã»ã¼ã¸ ã¿ã¤ã ã®ããã¥ã¡ã³ããã覧ãã ãã。
ã¾ã¨ã
æ¬è¨äºã§ã¯、Firebase 㨠Node ã¹ã¯ãªããã使ç¨ã㦠Android ã¢ããªã«ããã·ã¥éç¥ãéãæ¹æ³ã説æãã¾ãã。ä»å㯠Android ã³ã¼ãããéç¥ãéä¿¡ãã¾ããã、Firebase Database ã«ã¢ã¯ã»ã¹ã§ããä»ã®ã¢ããªã±ã¼ã·ã§ã³ãããåãããã«ç°¡åã«éä¿¡ãããã¨ãã§ãã¾ã。iOS ãµãã¼ãã追å ãããã¨ãç°¡åã§、ä¾åæ§ã追å ãã¦ãªã¢ã¼ãéç¥ç¨ã®ç»é² ãè¡ãã ãã§ã。
Posted by Yoshifumi Yamaguchi - Developer Relations Team