firebase-admin-sdk 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -21
  3. data/firebase-admin-sdk.gemspec +1 -0
  4. data/lib/firebase-admin-sdk.rb +21 -1
  5. data/lib/firebase/admin/app.rb +0 -6
  6. data/lib/firebase/admin/auth/client.rb +8 -0
  7. data/lib/firebase/admin/auth/token_verifier.rb +1 -1
  8. data/lib/firebase/admin/auth/user_info.rb +6 -6
  9. data/lib/firebase/admin/auth/user_manager.rb +2 -2
  10. data/lib/firebase/admin/auth/user_record.rb +5 -5
  11. data/lib/firebase/admin/config.rb +4 -2
  12. data/lib/firebase/admin/internal/http_client.rb +1 -0
  13. data/lib/firebase/admin/messaging/android_config.rb +77 -0
  14. data/lib/firebase/admin/messaging/android_fcm_options.rb +19 -0
  15. data/lib/firebase/admin/messaging/android_notification.rb +221 -0
  16. data/lib/firebase/admin/messaging/apns_config.rb +38 -0
  17. data/lib/firebase/admin/messaging/apns_fcm_options.rb +27 -0
  18. data/lib/firebase/admin/messaging/apns_payload.rb +28 -0
  19. data/lib/firebase/admin/messaging/aps.rb +82 -0
  20. data/lib/firebase/admin/messaging/aps_alert.rb +110 -0
  21. data/lib/firebase/admin/messaging/client.rb +181 -0
  22. data/lib/firebase/admin/messaging/critical_sound.rb +37 -0
  23. data/lib/firebase/admin/messaging/error.rb +36 -0
  24. data/lib/firebase/admin/messaging/error_info.rb +25 -0
  25. data/lib/firebase/admin/messaging/fcm_options.rb +19 -0
  26. data/lib/firebase/admin/messaging/light_settings.rb +34 -0
  27. data/lib/firebase/admin/messaging/message.rb +83 -0
  28. data/lib/firebase/admin/messaging/message_encoder.rb +355 -0
  29. data/lib/firebase/admin/messaging/multicast_message.rb +67 -0
  30. data/lib/firebase/admin/messaging/notification.rb +34 -0
  31. data/lib/firebase/admin/messaging/topic_management_response.rb +41 -0
  32. data/lib/firebase/admin/messaging/utils.rb +78 -0
  33. data/lib/firebase/admin/version.rb +1 -1
  34. metadata +36 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 943bc48f322900cf959c1a0ec6342f3fbfb8f40af3ef971bf19e63d65b5a0fd4
4
- data.tar.gz: fbf64b91cc0a3d98425db69fddf5382086df4652fded37178e87c312ec8d2669
3
+ metadata.gz: 123d6d32ec877dc2478f43d37762c2fad6dee697d21bc746dbd63d16c7688ab0
4
+ data.tar.gz: 9a4decd758386fb6c87ad73607d949842f7a7f2e659b6d6fe659f62d0bdd0d40
5
5
  SHA512:
6
- metadata.gz: 05d47f8bdc6b33ba5d3902e42ddc54f4438c3c13f3b5d048237244e3f71ad1006f86798804cb5ad8e5c8e24a5a10996c2033dddea118972ecf6556209e646fbd
7
- data.tar.gz: 067d29dc598a88f7825c1b00487bdcb0969c5153962505a935458c9c8c27ff972a8684b99eb7b960b250777335fc31d6a6d4586c26f523f6b50899540401a774
6
+ metadata.gz: c806d219be3867c552aff868f296854ac0a348fa9d9c04063c874e201810dda370a63b7fb425d38fe2bbfe8af13043bcef8cef632a2f888eca547bfa48815dbc
7
+ data.tar.gz: 7c187c93c943c8dbc352cf153f82d45fb27b1cd1febde4773c7e5cc3cdbb5492848c051afd96f139c2af4e7b6fad3bce11cd86e5fa280155d8d434286d36d841
data/README.md CHANGED
@@ -1,12 +1,8 @@
1
- # Firebase Admin Ruby SDK
1
+ # Firebase::Admin::Sdk
2
2
 
3
- The Firebase Admin Ruby SDK enables access to Firebase services from privileged environments (such as servers or cloud)
4
- in Ruby.
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/firebase/admin/sdk`. To experiment with that code, run `bin/console` for an interactive prompt.
5
4
 
6
- For more information, visit the
7
- [Firebase Admin SDK setup guide](https://firebase.google.com/docs/admin/setup/).
8
-
9
- This gem is currently in alpha and not recommended for production use (yet).
5
+ TODO: Delete this and the text above, and describe your gem
10
6
 
11
7
  ## Installation
12
8
 
@@ -26,27 +22,22 @@ Or install it yourself as:
26
22
 
27
23
  ## Usage
28
24
 
29
- ### Application Default Credentials
25
+ TODO: Write usage instructions here
30
26
 
31
- ```ruby
32
- gem 'firebase-admin-sdk'
27
+ ## Development
33
28
 
34
- app = Firebase::Admin::App.new
35
- ```
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
36
30
 
37
- ### Using a service account
38
-
39
- ```ruby
40
- gem 'firebase-admin-sdk'
41
-
42
- creds = Firebase::Admin::Credentials.from_file('service_account.json')
43
- app = Firebase::Admin::App.new(credentials: creds)
44
- ```
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
45
32
 
46
33
  ## Contributing
47
34
 
48
- Bug reports and pull requests are welcome on GitHub at https://github.com/cheddar-me/firebase-admin-sdk.
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/firebase-admin-sdk. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/firebase-admin-sdk/blob/master/CODE_OF_CONDUCT.md).
49
36
 
50
37
  ## License
51
38
 
52
39
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
40
+
41
+ ## Code of Conduct
42
+
43
+ Everyone interacting in the Firebase::Admin::Sdk project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/firebase-admin-sdk/blob/master/CODE_OF_CONDUCT.md).
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_runtime_dependency "googleauth", "~> 0.16.2"
25
25
  spec.add_runtime_dependency "faraday", "< 2"
26
26
  spec.add_runtime_dependency "faraday_middleware", "~> 1.0"
27
+ spec.add_runtime_dependency "hashie", "~> 4.1"
27
28
  spec.add_runtime_dependency "jwt", ">= 1.5", "< 3.0"
28
29
 
29
30
  spec.add_development_dependency "rake", "~> 13.0"
@@ -5,6 +5,7 @@ require_relative "firebase/admin/error"
5
5
  require_relative "firebase/admin/config"
6
6
  require_relative "firebase/admin/gce"
7
7
  require_relative "firebase/admin/credentials"
8
+ require_relative "firebase/admin/app"
8
9
  require_relative "firebase/admin/internal/http_client"
9
10
  require_relative "firebase/admin/auth/error"
10
11
  require_relative "firebase/admin/auth/utils"
@@ -14,4 +15,23 @@ require_relative "firebase/admin/auth/user_info"
14
15
  require_relative "firebase/admin/auth/user_record"
15
16
  require_relative "firebase/admin/auth/user_manager"
16
17
  require_relative "firebase/admin/auth/client"
17
- require_relative "firebase/admin/app"
18
+ require_relative "firebase/admin/messaging/error"
19
+ require_relative "firebase/admin/messaging/android_config"
20
+ require_relative "firebase/admin/messaging/android_fcm_options"
21
+ require_relative "firebase/admin/messaging/android_notification"
22
+ require_relative "firebase/admin/messaging/apns_config"
23
+ require_relative "firebase/admin/messaging/apns_fcm_options"
24
+ require_relative "firebase/admin/messaging/apns_payload"
25
+ require_relative "firebase/admin/messaging/aps"
26
+ require_relative "firebase/admin/messaging/aps_alert"
27
+ require_relative "firebase/admin/messaging/critical_sound"
28
+ require_relative "firebase/admin/messaging/fcm_options"
29
+ require_relative "firebase/admin/messaging/light_settings"
30
+ require_relative "firebase/admin/messaging/notification"
31
+ require_relative "firebase/admin/messaging/message"
32
+ require_relative "firebase/admin/messaging/utils"
33
+ require_relative "firebase/admin/messaging/message_encoder"
34
+ require_relative "firebase/admin/messaging/multicast_message"
35
+ require_relative "firebase/admin/messaging/error_info"
36
+ require_relative "firebase/admin/messaging/topic_management_response"
37
+ require_relative "firebase/admin/messaging/client"
@@ -23,12 +23,6 @@ module Firebase
23
23
  @service_account_id = @config.service_account_id
24
24
  @project_id = @config.project_id || @credentials.project_id
25
25
  end
26
-
27
- # Gets the auth client for this App.
28
- # @return [Firebase::Admin::Auth::Client]
29
- def auth
30
- @auth_client ||= Auth::Client.new(self)
31
- end
32
26
  end
33
27
  end
34
28
  end
@@ -112,5 +112,13 @@ module Firebase
112
112
  end
113
113
  end
114
114
  end
115
+
116
+ class App
117
+ # Gets the auth client for this App.
118
+ # @return [Firebase::Admin::Auth::Client]
119
+ def auth
120
+ @auth_client ||= Auth::Client.new(self)
121
+ end
122
+ end
115
123
  end
116
124
  end
@@ -78,7 +78,7 @@ module Firebase
78
78
  def decode_unsigned(token)
79
79
  raise InvalidTokenError, "token must not be nil" unless token
80
80
  raise InvalidTokenError, "token must be a string" unless token.is_a?(String)
81
- raise InvalidTokenError, "The auth emulator only accepts unsigned ID tokens." if token.split(".").length == 3
81
+ raise InvalidTokenError, "The auth emulator only accepts unsigned ID tokens." unless token.split(".").length == 2
82
82
  options = decode_options.merge({algorithm: "none"})
83
83
  JWT.decode(token, nil, false, options)
84
84
  end
@@ -17,27 +17,27 @@ module Firebase
17
17
 
18
18
  # Gets the ID of this user.
19
19
  def uid
20
- @data["rawId"]
20
+ @data.fetch(:rawId)
21
21
  end
22
22
 
23
23
  # Gets the display name of this user.
24
24
  def display_name
25
- @data["displayName"]
25
+ @data.fetch(:displayName)
26
26
  end
27
27
 
28
28
  # Gets the email address associated with this user.
29
29
  def email
30
- @data["email"]
30
+ @data.fetch(:email)
31
31
  end
32
32
 
33
33
  # Gets the phone number associated with this user.
34
34
  def phone_number
35
- @data["phoneNumber"]
35
+ @data.fetch(:phoneNumber)
36
36
  end
37
37
 
38
38
  # Gets the photo url of this user.
39
39
  def photo_url
40
- @data["photoUrl"]
40
+ @data.fetch(:photoUrl)
41
41
  end
42
42
 
43
43
  # Gets the id of the identity provider.
@@ -45,7 +45,7 @@ module Firebase
45
45
  # This can be a short domain name (e.g. google.com), or the identity of an OpenID
46
46
  # identity provider.
47
47
  def provider_id
48
- @data["providerId"]
48
+ @data.fetch(:providerId)
49
49
  end
50
50
 
51
51
  # Converts the object into a hash.
@@ -43,7 +43,7 @@ module Firebase
43
43
  disabled: to_boolean(disabled)
44
44
  }.compact
45
45
  res = @client.post(with_path("accounts"), payload).body
46
- uid = res&.fetch("localId")
46
+ uid = res&.fetch(:localId)
47
47
  raise CreateUserError, "failed to create user #{res}" if uid.nil?
48
48
  get_user_by(uid: uid)
49
49
  end
@@ -67,7 +67,7 @@ module Firebase
67
67
  raise ArgumentError, "Unsupported query: #{query}"
68
68
  end
69
69
  res = @client.post(with_path("accounts:lookup"), payload).body
70
- users = res["users"] if res
70
+ users = res[:users] if res
71
71
  UserRecord.new(users[0]) if users.is_a?(Array) && users.length > 0
72
72
  end
73
73
 
@@ -7,7 +7,7 @@ module Firebase
7
7
  class UserRecord < UserInfo
8
8
  # Gets the ID of this user.
9
9
  def uid
10
- @data["localId"]
10
+ @data.fetch(:localId)
11
11
  end
12
12
 
13
13
  # Gets the id of the identity provider.
@@ -18,11 +18,11 @@ module Firebase
18
18
  end
19
19
 
20
20
  def email_verified?
21
- !!@data["emailVerified"]
21
+ !!@data.fetch(:emailVerified)
22
22
  end
23
23
 
24
24
  def disabled?
25
- !!@data["disabled"]
25
+ !!@data.fetch(:disabled)
26
26
  end
27
27
 
28
28
  # Gets the time, in milliseconds since the epoch, before which tokens are invalid.
@@ -49,13 +49,13 @@ module Firebase
49
49
  #
50
50
  # @return [Array of UserInfo]
51
51
  def provider_data
52
- providers = @data["providerUserInfo"] || []
52
+ providers = @data.fetch(:providerUserInfo) || []
53
53
  providers.to_a.map { |p| UserInfo.new(p) }
54
54
  end
55
55
 
56
56
  # Gets any custom claims set on this user account.
57
57
  def custom_claims
58
- claims = @data["customAttributes"]
58
+ claims = @data.fetch(:customAttributes)
59
59
  parsed = JSON.parse(claims) unless claims.nil?
60
60
  parsed if parsed.is_a?(Hash) && !parsed.empty?
61
61
  end
@@ -42,8 +42,10 @@ module Firebase
42
42
  # @return [Firebase::Admin::Config]
43
43
  def from_json(json)
44
44
  data = JSON.parse(json)
45
- new(project_id: data["projectId"],
46
- service_account_id: data["serviceAccountId"])
45
+ new(
46
+ project_id: data["projectId"],
47
+ service_account_id: data["serviceAccountId"]
48
+ )
47
49
  end
48
50
  end
49
51
 
@@ -58,6 +58,7 @@ module Firebase
58
58
  c.use CredentialsMiddleware, credentials: @credentials unless @credentials.nil?
59
59
  c.use Faraday::Request::UrlEncoded
60
60
  c.use FaradayMiddleware::EncodeJson
61
+ c.use FaradayMiddleware::Mashify
61
62
  c.use Faraday::Response::ParseJson
62
63
  c.use Faraday::Response::RaiseError
63
64
  c.adapter(Faraday.default_adapter)
@@ -0,0 +1,77 @@
1
+ module Firebase
2
+ module Admin
3
+ module Messaging
4
+ # Android-specific options that can be included in a {Message}.
5
+ class AndroidConfig
6
+ # @return [String, nil]
7
+ # Collapse key string for the message.
8
+ # This is an identifier for a group of messages that can be collapsed, so that only the last message is sent
9
+ # when delivery can be resumed. A maximum of 4 different collapse keys may be active at a given time.
10
+ attr_accessor :collapse_key
11
+
12
+ # @return [String, nil]
13
+ # Priority of the message. Must be either `high` or `normal`.
14
+ attr_accessor :priority
15
+
16
+ # @return [Numeric, nil]
17
+ # Time-to-live duration of the message in seconds.
18
+ attr_accessor :ttl
19
+
20
+ # @return [String, nil]
21
+ # Package name of the application where the registration tokens must match in order to receive the message.
22
+ attr_accessor :restricted_package_name
23
+
24
+ # @return [Hash{String,Symbol => String}, nil]
25
+ # A hash of data fields to be included in the message. All keys and values must be strings.
26
+ # When provided, overrides any data fields set on the top-level message.
27
+ attr_accessor :data
28
+
29
+ # @return [AndroidNotification, nil]
30
+ # Android notification to be included in the message.
31
+ attr_accessor :notification
32
+
33
+ # @return [AndroidFCMOptions, nil]
34
+ # Options for features provided by the FCM SDK for Android.
35
+ attr_accessor :fcm_options
36
+
37
+ # Initializes an {AndroidConfig}.
38
+ #
39
+ # @param [String, nil] collapse_key
40
+ # Collapse key string for the message (optional).
41
+ # @param [String, nil] priority
42
+ # Priority of the message (optional).
43
+ # Must be either `high` or `normal`.
44
+ # @param [Numeric, nil] ttl
45
+ # The time-to-live duration of the message (optional).
46
+ # Time-to-live duration of the message in seconds.
47
+ # @param [String, nil] restricted_package_name
48
+ # The package name of the application where the registration tokens must match in order to receive
49
+ # the message (optional).
50
+ # @param [Hash{String,Symbol => String}, nil] data
51
+ # A hash of data fields to be included in the message (optional).
52
+ # All keys and values must be strings.
53
+ # @param [AndroidNotification, nil] notification
54
+ # An {AndroidNotification} to be included in the message (optional).
55
+ # @param [AndroidFCMOptions, nil] fcm_options
56
+ # An {AndroidFCMOptions} to be included in the message (optional).
57
+ def initialize(
58
+ collapse_key: nil,
59
+ priority: nil,
60
+ ttl: nil,
61
+ restricted_package_name: nil,
62
+ data: nil,
63
+ notification: nil,
64
+ fcm_options: nil
65
+ )
66
+ self.collapse_key = collapse_key
67
+ self.priority = priority
68
+ self.ttl = ttl
69
+ self.restricted_package_name = restricted_package_name
70
+ self.data = data
71
+ self.notification = notification
72
+ self.fcm_options = fcm_options
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,19 @@
1
+ module Firebase
2
+ module Admin
3
+ module Messaging
4
+ # Represents options for features provided by the FCM SDK for Android.
5
+ class AndroidFCMOptions
6
+ # @return [String, nil] Label associated with the message's analytics data.
7
+ attr_accessor :analytics_label
8
+
9
+ # Initializes an {AndroidFCMOptions}.
10
+ #
11
+ # @param [String, nil] analytics_label
12
+ # The label associated with the message's analytics data (optional).
13
+ def initialize(analytics_label: nil)
14
+ self.analytics_label = analytics_label
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,221 @@
1
+ module Firebase
2
+ module Admin
3
+ module Messaging
4
+ # Android-specific notification options that can be included in an {AndroidConfig}.
5
+ class AndroidNotification
6
+ # @return [String, nil]
7
+ # Title of the Android notification. When provided, overrides the title set via {Notification}.
8
+ attr_accessor :title
9
+
10
+ # @return [String, nil]
11
+ # Body of the Android notification. When provided, overrides the body set via {Notification}.
12
+ attr_accessor :body
13
+
14
+ # @return [String, nil]
15
+ # Icon resource for the Android notification.
16
+ attr_accessor :icon
17
+
18
+ # @return [String, nil]
19
+ # Notification icon color in `#rrggbb` format.
20
+ attr_accessor :color
21
+
22
+ # @return [String, nil]
23
+ # File name of the sound to be played when the device receives the notification.
24
+ attr_accessor :sound
25
+
26
+ # @return [String, nil]
27
+ # Notification tag. This is an identifier used to replace existing notifications in the notification drawer.
28
+ # If not specified, each request creates a new notification.
29
+ attr_accessor :tag
30
+
31
+ # @return [String, nil]
32
+ # URL of an image to be displayed in the notification.
33
+ attr_accessor :image
34
+
35
+ # @return [String, nil]
36
+ # Action associated with a user click on the notification. If specified, an activity with a matching
37
+ # Intent Filter is launched when a user clicks on the notification.
38
+ attr_accessor :click_action
39
+
40
+ # @return [String, nil]
41
+ # Key of the body string in the app's string resource to use to localize the body text.
42
+ attr_accessor :body_loc_key
43
+
44
+ # @return [Array<String>, nil]
45
+ # An array of resource keys that will be used in place of the format specifiers in {body_loc_key}.
46
+ attr_accessor :body_loc_args
47
+
48
+ # @return [String, nil]
49
+ # Key of the title string in the app's string resource to use to localize the title text.
50
+ attr_accessor :title_loc_key
51
+
52
+ # @return [Array<String>, nil]
53
+ # An array of resource keys that will be used in place of the format specifiers in {title_loc_key}.
54
+ attr_accessor :title_loc_args
55
+
56
+ # @return [String, nil]
57
+ # The Android notification channel id (new in Android O). The app must create a channel with this channel id
58
+ # before any notification with this channel id can be received. If you don't send this channel id in the
59
+ # request, or if the channel id provided has not yet been created by the app, FCM uses the channel id
60
+ # specified in the app manifest.
61
+ attr_accessor :channel_id
62
+
63
+ # @return [String, nil]
64
+ # Sets the "ticker" text, which is sent to accessibility services. Prior to API level 21 (Lollipop), sets the
65
+ # text that is displayed in the status bar when the notification first arrives.
66
+ attr_accessor :ticker
67
+
68
+ # @return [Boolean, nil]
69
+ # When set to `false` or unset, the notification is automatically dismissed when the user clicks it in the
70
+ # panel. When set to `true`, the notification persists even when the user clicks it.
71
+ attr_accessor :sticky
72
+
73
+ # @return [Time, nil]
74
+ # For notifications that inform users about events with an absolute time reference, sets the time that the
75
+ # event in the notification occurred. Notifications in the panel are sorted by this time.
76
+ attr_accessor :event_time
77
+
78
+ # @return [Boolean, nil]
79
+ # Sets whether or not this notification is relevant only to the current device. Some notifications can be
80
+ # bridged to other devices for remote display, such as a Wear OS watch. This hint can be set to recommend
81
+ # this notification not be bridged.
82
+ attr_accessor :local_only
83
+
84
+ # @return [String, nil]
85
+ # Sets the relative priority for this notification. Low-priority notifications may be hidden from the user in
86
+ # certain situations. Note this priority differs from `AndroidMessagePriority`. This priority is processed by
87
+ # the client after the message has been delivered. Whereas `AndroidMessagePriority` is an FCM concept that
88
+ # controls when the message is delivered.
89
+ attr_accessor :priority
90
+
91
+ # @return [Array<Numeric>, nil]
92
+ # Sets the vibration pattern to use. Pass in an array of numeric durations to turn the vibrator on or off. The
93
+ # first value indicates the duration to wait before turning the vibrator on. The next value indicates the
94
+ # duration to keep the vibrator on. Subsequent values alternate between duration to turn the vibrator off and
95
+ # to turn the vibrator on. If `vibrate_timings` is set and `default_vibrate_timings` is set to `true`, the
96
+ # default value is used instead of the user-specified `vibrate_timings`.
97
+ attr_accessor :vibrate_timings
98
+
99
+ # @return [Boolean, nil]
100
+ # If set to `true`, use the Android framework's default vibrate pattern for the notification. Default values
101
+ # are specified in `config.xml`. If `default_vibrate_timings` is set to `true` and `vibrate_timings` is also
102
+ # set, the default value is used instead of the user-specified `vibrate_timings`.
103
+ # @see https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml
104
+ attr_accessor :default_vibrate_timings
105
+
106
+ # @return [Boolean, nil]
107
+ # If set to `true`, use the Android framework's default sound for the notification. Default values are
108
+ # specified in `config.xml`.
109
+ # @see https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml
110
+ attr_accessor :default_sound
111
+
112
+ # @return [LightSettings, nil]
113
+ # Settings to control the notification's LED blinking rate and color if LED is available on the device.
114
+ # The total blinking time is controlled by the OS.
115
+ attr_accessor :light_settings
116
+
117
+ # @return [Boolean, nil]
118
+ # If set to `true`, use the Android framework's default LED light settings for the notification. Default
119
+ # values are specified in `config.xml`. If `default_light_settings` is set to `true` and `light_settings` is
120
+ # also set, the user-specified `light_settings` is used instead of the default value.
121
+ # @see https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml
122
+ attr_accessor :default_light_settings
123
+
124
+ # @return [String, nil]
125
+ # Sets the visibility of the notification. Must be either `private`, `public`, or `secret`. If unspecified,
126
+ # defaults to `private`.
127
+ attr_accessor :visibility
128
+
129
+ # @return [Integer, nil]
130
+ # Sets the number of items this notification represents. May be displayed as a badge count for Launchers that
131
+ # support badging. For example, this might be useful if you're using just one notification to represent
132
+ # multiple new messages but you want the count here to represent the number of total new messages. If zero
133
+ # or unspecified, systems that support badging use the default, which is to increment a number displayed on
134
+ # the long-press menu each time a new notification arrives.
135
+ # @see https://developer.android.com/training/notify-user/badges
136
+ attr_accessor :notification_count
137
+
138
+ # Initializes an AndroidNotification
139
+ #
140
+ # @param [String, nil] title
141
+ # @param [String, nil] body
142
+ # @param [String, nil] icon
143
+ # @param [String, nil] color
144
+ # @param [String, nil] sound
145
+ # @param [String, nil] tag
146
+ # @param [String, nil] image
147
+ # @param [String, nil] click_action
148
+ # @param [String, nil] body_loc_key
149
+ # @param [Array<String>, nil] body_loc_args
150
+ # @param [String, nil] title_loc_key
151
+ # @param [Array<String>, nil] title_loc_args
152
+ # @param [String, nil] channel_id
153
+ # @param [String, nil] ticker
154
+ # @param [Boolean, nil] sticky
155
+ # @param [Time, nil] event_time
156
+ # @param [Boolean, nil] local_only
157
+ # @param [String, nil] priority
158
+ # @param [Array<Numeric>, nil] vibrate_timings
159
+ # @param [Boolean, nil] default_vibrate_timings
160
+ # @param [Boolean, nil] default_sound
161
+ # @param [LightSettings, nil] light_settings
162
+ # @param [Boolean, nil] default_light_settings
163
+ # @param [String, nil] visibility
164
+ # @param [Integer, nil] notification_count
165
+ def initialize(
166
+ title: nil,
167
+ body: nil,
168
+ icon: nil,
169
+ color: nil,
170
+ sound: nil,
171
+ tag: nil,
172
+ image: nil,
173
+ click_action: nil,
174
+ body_loc_key: nil,
175
+ body_loc_args: nil,
176
+ title_loc_key: nil,
177
+ title_loc_args: nil,
178
+ channel_id: nil,
179
+ ticker: nil,
180
+ sticky: nil,
181
+ event_time: nil,
182
+ local_only: nil,
183
+ priority: nil,
184
+ vibrate_timings: nil,
185
+ default_vibrate_timings: nil,
186
+ default_sound: nil,
187
+ light_settings: nil,
188
+ default_light_settings: nil,
189
+ visibility: nil,
190
+ notification_count: nil
191
+ )
192
+ self.title = title
193
+ self.body = body
194
+ self.icon = icon
195
+ self.color = color
196
+ self.sound = sound
197
+ self.tag = tag
198
+ self.image = image
199
+ self.click_action = click_action
200
+ self.body_loc_key = body_loc_key
201
+ self.body_loc_args = body_loc_args
202
+ self.title_loc_key = title_loc_key
203
+ self.title_loc_args = title_loc_args
204
+ self.channel_id = channel_id
205
+ self.ticker = ticker
206
+ self.sticky = sticky
207
+ self.event_time = event_time
208
+ self.local_only = local_only
209
+ self.priority = priority
210
+ self.vibrate_timings = vibrate_timings
211
+ self.default_vibrate_timings = default_vibrate_timings
212
+ self.default_sound = default_sound
213
+ self.light_settings = light_settings
214
+ self.default_light_settings = default_light_settings
215
+ self.visibility = visibility
216
+ self.notification_count = notification_count
217
+ end
218
+ end
219
+ end
220
+ end
221
+ end