Permata FCM memungkinkan backend ruby Anda mengirim pemberitahuan ke perangkat Android dan iOS melalui Firebase Cloud Messaging.
$ gem install fcm
Atau di Gemfile
Anda, sertakan saja:
gem 'fcm'
Untuk Android Anda akan memerlukan perangkat yang menjalankan 2.3 (atau lebih baru) yang juga menginstal aplikasi Google Play Store, atau emulator yang menjalankan Android 2.3 dengan Google API. Perangkat iOS juga didukung.
Versi Ruby yang Didukung, Saat Ini: ruby >= 2.4
Untuk menggunakan permata ini, Anda perlu membuat instantiate klien dengan kredensial firebase Anda:
fcm = FCM . new (
GOOGLE_APPLICATION_CREDENTIALS_PATH ,
FIREBASE_PROJECT_ID
)
GOOGLE_APPLICATION_CREDENTIALS_PATH
GOOGLE_APPLICATION_CREDENTIALS_PATH
dimaksudkan untuk menahan kredensial firebase Anda.
Cara termudah untuk menyediakannya adalah dengan melewati jalur absolut ke sini dengan kredensial Anda:
fcm = FCM . new (
'/path/to/credentials.json' ,
FIREBASE_PROJECT_ID
)
Sesuai sifat rahasia mereka, Anda mungkin tidak ingin memilikinya di repositori Anda. Dalam hal ini, solusi lain yang didukung adalah melewati StringIO
yang berisi kredensial Anda:
fcm = FCM . new (
StringIO . new ( ENV . fetch ( 'FIREBASE_CREDENTIALS' ) ) ,
FIREBASE_PROJECT_ID
)
Untuk bermigrasi ke http v1 lihat: https://firebase.google.com/docs/cloud-sessaging/migrate-v1
fcm = FCM . new (
GOOGLE_APPLICATION_CREDENTIALS_PATH ,
FIREBASE_PROJECT_ID
)
message = {
'token' : "000iddqd" , # send to a specific device
# 'topic': "yourTopic",
# 'condition': "'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)",
'data' : {
payload : {
data : {
id : 1
}
} . to_json
} ,
'notification' : {
title : notification . title_th ,
body : notification . body_th ,
} ,
'android' : { } ,
'apns' : {
payload : {
aps : {
sound : "default" ,
category : " #{ Time . zone . now . to_i } "
}
}
} ,
'fcm_options' : {
analytics_label : 'Label'
}
}
fcm . send_v1 ( message ) # or fcm.send_notification_v1(message)
Dengan pesan grup perangkat, Anda dapat mengirim satu pesan ke beberapa instance aplikasi yang berjalan di perangkat milik grup. Biasanya, "grup" merujuk satu set perangkat berbeda yang dimiliki oleh satu pengguna. Namun, suatu kelompok juga dapat mewakili satu set perangkat di mana instance aplikasi berfungsi dengan cara yang sangat berkorelasi. Untuk menggunakan fitur ini, pertama -tama Anda membutuhkan kelas FCM
yang diinisialisasi.
Jumlah maksimum anggota yang diizinkan untuk kunci pemberitahuan adalah 20. https://firebase.google.com/docs/cloud-messaging/android/device-group#managing_device_groups
Maka Anda akan memerlukan kunci pemberitahuan yang dapat Anda buat untuk key_name
tertentu yang perlu dinamai secara unik per aplikasi jika Anda memiliki beberapa aplikasi untuk project_id
yang sama. Ini memastikan bahwa pemberitahuan hanya pergi ke aplikasi target yang dimaksud. Metode create
akan melakukan ini dan mengembalikan Token notification_key
, yang mewakili grup perangkat, dalam respons:
project_id
adalah pengirim_id di pengaturan cloud Anda. https://firebase.google.com/docs/cloud-messaging/concept-options#senderid
params = { key_name : "appUser-Chris" ,
project_id : "my_project_id" ,
registration_ids : [ "4" , "8" , "15" , "16" , "23" , "42" ] }
response = fcm . create ( * params . values )
Untuk mengirim pesan ke grup perangkat, gunakan HTTP V1 API, mengirim pesan ke grup perangkat sangat mirip dengan mengirim pesan ke perangkat individual, menggunakan metode yang sama untuk mengesahkan permintaan Kirim. Atur bidang token ke kunci pemberitahuan grup
message = {
'token' : "NOTIFICATION_KEY" , # send to a device group
# ...data
}
fcm . send_v1 ( message )
Anda juga dapat menambah/menghapus token pendaftaran ke/dari notification_key
tertentu dari beberapa project_id
. Misalnya:
params = { key_name : "appUser-Chris" ,
project_id : "my_project_id" ,
notification_key : "appUser-Chris-key" ,
registration_ids : [ "7" , "3" ] }
response = fcm . add ( * params . values )
params = { key_name : "appUser-Chris" ,
project_id : "my_project_id" ,
notification_key : "appUser-Chris-key" ,
registration_ids : [ "8" , "15" ] }
response = fcm . remove ( * params . values )
Pesan topik FCM memungkinkan server aplikasi Anda untuk mengirim pesan ke beberapa perangkat yang telah memilih ke topik tertentu. Berdasarkan model publikasi/berlangganan, satu contoh aplikasi dapat berlangganan tidak lebih dari 2000 topik. Mengirim ke suatu topik sangat mirip dengan mengirim ke perangkat individual atau ke grup pengguna, dalam arti bahwa Anda dapat menggunakan metode fcm.send_v1
di mana topic
tersebut cocok dengan ekspresi reguler "/topics/[a-zA-Z0-9-_.~%]+"
:
message = {
'topic' : "yourTopic" , # send to a device group
# ...data
}
fcm . send_v1 ( message )
Atau Anda dapat menggunakan helper fcm.send_to_topic
:
response = fcm . send_to_topic ( "yourTopic" ,
notification : { body : "This is a FCM Topic Message!" } )
Pesan kondisi topik FCM untuk mengirim pesan ke kombinasi topik, tentukan suatu kondisi, yang merupakan ekspresi boolean yang menentukan topik target.
message = {
'condition' : "'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)" , # send to topic condition
# ...data
}
fcm . send_v1 ( message )
Atau Anda dapat menggunakan helper fcm.send_to_topic_condition
:
response = fcm . send_to_topic_condition (
"'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)" ,
notification : {
body : "This is an FCM Topic Message sent to a condition!"
}
)
Untuk mengirim ke kombinasi beberapa topik, mengharuskan Anda mengatur kunci kondisi untuk kondisi boolean yang menentukan topik target. Misalnya, untuk mengirim pesan ke perangkat yang berlangganan TopicA dan TopicB atau Topicc :
'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)
FCM pertama -tama mengevaluasi kondisi apa pun dalam tanda kurung, dan kemudian mengevaluasi ekspresi dari kiri ke kanan. Dalam ekspresi di atas, pengguna yang berlangganan topik tunggal tidak menerima pesan. Demikian juga, pengguna yang tidak berlangganan Topica tidak menerima pesan. Kombinasi ini menerimanya:
Anda dapat memasukkan hingga lima topik dalam ekspresi bersyarat Anda, dan tanda kurung didukung. Operator yang didukung: &&
, ||
, !
. Perhatikan penggunaannya!:
!('TopicA' in topics)
Dengan ungkapan ini, setiap contoh aplikasi yang tidak berlangganan TopicA, termasuk instance aplikasi yang tidak berlangganan topik apa pun, menerima pesan.
Metode send_to_topic_condition
dalam perpustakaan ini memungkinkan Anda untuk menentukan kondisi beberapa topik yang harus dikirim ke muatan data.
response = fcm . send_to_topic_condition (
"'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)" ,
notification : {
body : "This is an FCM Topic Message sent to a condition!"
}
)
Diberikan token pendaftaran dan nama topik, Anda dapat menambahkan token ke topik menggunakan Google Instance ID Server API.
topic = "YourTopic"
registration_token = "12" # a client registration token
response = fcm . topic_subscription ( topic , registration_token )
# or unsubscription
response = fcm . topic_unsubscription ( topic , registration_token )
Atau Anda dapat mengelola peta hubungan untuk beberapa instance aplikasi Google Instance ID Server API. Kelola hubungan
topic = "YourTopic"
registration_tokens = [ "4" , "8" , "15" , "16" , "23" , "42" ] # an array of one or more client registration tokens
response = fcm . batch_topic_subscription ( topic , registration_tokens )
# or unsubscription
response = fcm . batch_topic_unsubscription ( topic , registration_tokens )
Diberikan token pendaftaran, Anda dapat mengambil informasi tentang token menggunakan API Google Instance ID Server.
registration_token = "12" # a client registration token
response = fcm . get_instance_id_info ( registration_token )
Untuk mendapatkan informasi terperinci tentang ID instance, Anda dapat melewati hash options
opsional ke metode get_instance_id_info
:
registration_token = "12" # a client registration token
options = { "details" => true }
response = fcm . get_instance_id_info ( registration_token , options )
Anda dapat menemukan panduan untuk mengimplementasikan aplikasi klien Android untuk menerima pemberitahuan di sini: Siapkan aplikasi klien FCM di Android.
Panduan untuk mengatur aplikasi iOS untuk mendapatkan pemberitahuan ada di sini: Menyiapkan aplikasi klien FCM di iOS.
http_options
untuk initialize
metode dan opsi timeout
daftar putihAPI_KEY
yang sudah usangsend
yang sudah usangsend_with_notification_key
yang sudah usangsubscribe_instance_id_to_topic
unsubscribe_instance_id_from_topic
batch_subscribe_instance_ids_to_topic
Metodebatch_unsubscribe_instance_ids_from_topic
Metode send_to_topic_condition
send_to_topic
Google::Auth::ServiceAccountCredentials
#103faraday
dari 1 hingga 2 #101DEFAULT_TIMEOUT
ke faraday
#96get_instance_id_info
opsi params #98Terima kasih banyak untuk @excid3 @jsparling @jensljungblad
>= 2.4
faraday
dengan mengubah versi ketergantungan ke faraday 1.0.0
httparty
dengan faraday
recover_notification_key
. Perbarui versi di fcm.gemspec
dengan VERSION
dan perbarui bagian README.md
## ChangeLog
.
# set the version
# VERSION="1.0.7"
gem build fcm.gemspec
git tag -a v ${VERSION} -m " Releasing version v ${VERSION} "
git push origin --tags
gem push fcm- ${VERSION} .gem