inova_fcm 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -3
- data/README.md +15 -5
- data/lib/inova_fcm/service.rb +8 -2
- data/lib/inova_fcm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf8a7122099b2f411a962d6a135e8660bea0d6a538be7109c31d9c174eac2abb
|
4
|
+
data.tar.gz: e1252852c68bc45035b142d56d6017ed59b4dcc7edcf18ac87af63475236f9d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e82e3d3fd06ae6e492459e60dc78ef3652e9c96cc06d74e3a25821d413f711f662b98353dd36862571e66be1b86710e610673a1a326857a2eedfcb1d49524385
|
7
|
+
data.tar.gz: fc23602b6cb7d1144688a7d7bf533bbb80fe7ecaf8f7e225f987fd94b6be6aa7782b3726931a78874aa454c5ea6b015ee18e2082b42abc4f1d41b4f1551e42ae
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
|
-
|
1
|
+
# Changelog
|
2
2
|
|
3
|
-
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
-
-
|
5
|
+
## [0.2.0] - 2023-12-28
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- Handled the imposed Firebase limit for topic subscription by managing registration and unregistration in batches of 1000.
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- No breaking changes.
|
14
|
+
- Minor enhancements for better maintainability.
|
15
|
+
|
16
|
+
## [0.1.0] - Initial Release - 2023-12-06
|
17
|
+
|
18
|
+
### Added
|
19
|
+
|
20
|
+
- Initial version of the gem.
|
data/README.md
CHANGED
@@ -7,13 +7,13 @@ InovaFCM is a Ruby gem designed to simplify interactions with Firebase Cloud Mes
|
|
7
7
|
To use this gem in your project, add it to your application's Gemfile:
|
8
8
|
|
9
9
|
```ruby
|
10
|
-
gem 'inova_fcm', '~> 0.
|
10
|
+
gem 'inova_fcm', '~> 0.2.0'
|
11
11
|
```
|
12
12
|
|
13
13
|
Alternatively, you can install the gem directly using:
|
14
14
|
|
15
15
|
```bash
|
16
|
-
gem install inova_fcm -v '~> 0.
|
16
|
+
gem install inova_fcm -v '~> 0.2.0'
|
17
17
|
```
|
18
18
|
|
19
19
|
## Requirments
|
@@ -27,7 +27,7 @@ gem install inova_fcm -v '~> 0.1.0'
|
|
27
27
|
rails generate inova_fcm:install
|
28
28
|
```
|
29
29
|
|
30
|
-
This will create a configuration file at config/initializers/
|
30
|
+
This will create a configuration file at config/initializers/inova_fcm.rb. Open the file and set your Firebase credentials:
|
31
31
|
|
32
32
|
```ruby
|
33
33
|
InovaFCM.configure do |config|
|
@@ -38,7 +38,17 @@ InovaFCM.configure do |config|
|
|
38
38
|
end
|
39
39
|
```
|
40
40
|
|
41
|
-
Replace the placeholder values with your actual
|
41
|
+
Replace the placeholder values with your actual Firebase credentials.
|
42
|
+
|
43
|
+
To send a notification to a device, you can use the following method:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
InovaFCM::Service.new(registration_ids: ["registration_id"],
|
47
|
+
notification: {title: "tite", body: "body"},
|
48
|
+
data: {id: 1}).send_notification
|
49
|
+
```
|
50
|
+
|
51
|
+
Where registration_ids is an array of device registration ids, notification is a hash containing the notification's title and body, and data is a hash of data to be sent with the notification.
|
42
52
|
|
43
53
|
## Contributing
|
44
54
|
|
@@ -50,4 +60,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
50
60
|
|
51
61
|
## Code of Conduct
|
52
62
|
|
53
|
-
Everyone interacting in the
|
63
|
+
Everyone interacting in the InovaFCM project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ahmedmos3ad/inova_fcm/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/inova_fcm/service.rb
CHANGED
@@ -3,6 +3,8 @@ module InovaFCM
|
|
3
3
|
require "fcm"
|
4
4
|
require "json"
|
5
5
|
|
6
|
+
MAX_TOPIC_REGISTRATION_BATCH_SIZE = 1000
|
7
|
+
|
6
8
|
attr_reader :registration_ids, :notification, :data, :topic
|
7
9
|
|
8
10
|
def initialize(registration_ids: [], notification: {}, data: {}, topic: SecureRandom.uuid + Time.now.to_i.to_s)
|
@@ -58,11 +60,15 @@ module InovaFCM
|
|
58
60
|
end
|
59
61
|
|
60
62
|
def register_tokens_to_topic
|
61
|
-
@
|
63
|
+
@registration_ids.each_slice(MAX_TOPIC_REGISTRATION_BATCH_SIZE) do |registration_ids_batch|
|
64
|
+
@fcm.batch_topic_subscription(@topic, registration_ids_batch)
|
65
|
+
end
|
62
66
|
end
|
63
67
|
|
64
68
|
def unregister_tokens_from_topic
|
65
|
-
@
|
69
|
+
@registration_ids.each_slice(MAX_TOPIC_REGISTRATION_BATCH_SIZE) do |registration_ids_batch|
|
70
|
+
@fcm.batch_topic_unsubscription(@topic, registration_ids_batch)
|
71
|
+
end
|
66
72
|
end
|
67
73
|
|
68
74
|
def validate_attributes!
|
data/lib/inova_fcm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inova_fcm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmed Mos`ad
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|