Class: Parse::PushStatus
- Inherits:
-
Object
- Object
- Object
- Parse::PushStatus
- Defined in:
- lib/parse/model/classes/push_status.rb
Overview
This collection requires master key access
This class represents the data and columns contained in the standard Parse
_PushStatus collection. Push status records track the delivery status
and metrics of push notifications sent through Parse Server.
Push status records are created automatically when a push is sent and are updated as the push progresses through the delivery pipeline.
Status lifecycle: pending → scheduled → running → succeeded/failed
The default schema for the PushStatus class is as follows:
class Parse::PushStatus < Parse::Object
# See Parse::Object for inherited properties...
property :push_hash # Unique hash identifying the push
property :query, :object # The query used to target installations
property :payload, :object # The push payload that was sent
property :source # "rest" or "webUI"
property :status # "pending", "scheduled", "running", "succeeded", "failed"
property :num_sent, :integer
property :num_failed, :integer
property :sent_per_type, :object
property :failed_per_type, :object
property :sent_per_utc_offset, :object
property :failed_per_utc_offset, :object
property :count, :integer # Total installations targeted
property :push_time, :date # When the push was/will be sent
property :expiry, :date # When the push expires
end
Instance Attribute Summary collapse
-
#count ⇒ Integer
Total number of installations targeted by this push.
-
#error_message ⇒ String?
Error message if the push failed.
-
#expiry ⇒ Parse::Date
When the push expires and will no longer be delivered.
-
#failed_per_type ⇒ Hash
Breakdown of failed sends by device type.
-
#failed_per_utc_offset ⇒ Hash
Breakdown of failed sends by UTC timezone offset.
-
#num_failed ⇒ Integer
The number of notifications that failed to send.
-
#num_sent ⇒ Integer
The number of notifications successfully sent.
-
#payload ⇒ Hash
The push payload that was sent.
-
#push_hash ⇒ String
A unique hash identifying this push notification.
-
#push_time ⇒ Parse::Date
When the push was/will be sent.
-
#query ⇒ Hash
The query constraints used to target installations.
-
#sent_per_type ⇒ Hash
Breakdown of successful sends by device type (ios, android, etc.).
-
#sent_per_utc_offset ⇒ Hash
Breakdown of successful sends by UTC timezone offset.
-
#source ⇒ String
The source of the push ("rest" for API, "webUI" for dashboard).
-
#status ⇒ String
The current status of the push.
Class Method Summary collapse
-
.failed ⇒ Parse::Query
Query for failed pushes.
-
.pending ⇒ Parse::Query
Query for pending pushes (not yet started).
-
.recent ⇒ Parse::Query
Query for recent pushes, ordered by creation time descending.
-
.running ⇒ Parse::Query
Query for running pushes (currently being sent).
-
.scheduled ⇒ Parse::Query
Query for scheduled pushes (waiting for push_time).
-
.succeeded ⇒ Parse::Query
Query for succeeded pushes.
Instance Method Summary collapse
-
#complete? ⇒ Boolean
Check if the push is complete (either succeeded or failed).
-
#failed? ⇒ Boolean
Check if the push failed.
-
#failure_rate ⇒ Float
Get the failure rate as a percentage.
-
#in_progress? ⇒ Boolean
Check if the push is still in progress.
-
#pending? ⇒ Boolean
Check if the push is pending (not yet started).
-
#running? ⇒ Boolean
Check if the push is currently running.
-
#scheduled? ⇒ Boolean
Check if the push is scheduled (waiting for push_time).
-
#succeeded? ⇒ Boolean
Check if the push succeeded.
-
#success_rate ⇒ Float
Get the success rate as a percentage.
-
#summary ⇒ Hash
Get a summary of the push metrics.
-
#total_attempted ⇒ Integer
Get the total number of notifications attempted (sent + failed).
Instance Attribute Details
#count ⇒ Integer
Total number of installations targeted by this push.
115 |
# File 'lib/parse/model/classes/push_status.rb', line 115 property :count, :integer |
#error_message ⇒ String?
Error message if the push failed.
130 |
# File 'lib/parse/model/classes/push_status.rb', line 130 property :error_message |
#expiry ⇒ Parse::Date
When the push expires and will no longer be delivered.
125 |
# File 'lib/parse/model/classes/push_status.rb', line 125 property :expiry, :date |
#failed_per_type ⇒ Hash
Breakdown of failed sends by device type.
98 |
# File 'lib/parse/model/classes/push_status.rb', line 98 property :failed_per_type, :object |
#failed_per_utc_offset ⇒ Hash
Breakdown of failed sends by UTC timezone offset.
110 |
# File 'lib/parse/model/classes/push_status.rb', line 110 property :failed_per_utc_offset, :object |
#num_failed ⇒ Integer
The number of notifications that failed to send.
86 |
# File 'lib/parse/model/classes/push_status.rb', line 86 property :num_failed, :integer |
#num_sent ⇒ Integer
The number of notifications successfully sent.
81 |
# File 'lib/parse/model/classes/push_status.rb', line 81 property :num_sent, :integer |
#payload ⇒ Hash
The push payload that was sent.
65 |
# File 'lib/parse/model/classes/push_status.rb', line 65 property :payload, :object |
#push_hash ⇒ String
A unique hash identifying this push notification.
55 |
# File 'lib/parse/model/classes/push_status.rb', line 55 property :push_hash |
#push_time ⇒ Parse::Date
When the push was/will be sent. For scheduled pushes, this is the future time.
120 |
# File 'lib/parse/model/classes/push_status.rb', line 120 property :push_time, :date |
#query ⇒ Hash
The query constraints used to target installations.
60 |
# File 'lib/parse/model/classes/push_status.rb', line 60 property :query, :object |
#sent_per_type ⇒ Hash
Breakdown of successful sends by device type (ios, android, etc.).
93 |
# File 'lib/parse/model/classes/push_status.rb', line 93 property :sent_per_type, :object |
#sent_per_utc_offset ⇒ Hash
Breakdown of successful sends by UTC timezone offset.
105 |
# File 'lib/parse/model/classes/push_status.rb', line 105 property :sent_per_utc_offset, :object |
#source ⇒ String
The source of the push ("rest" for API, "webUI" for dashboard).
70 |
# File 'lib/parse/model/classes/push_status.rb', line 70 property :source |
#status ⇒ String
The current status of the push. One of: "pending", "scheduled", "running", "succeeded", "failed"
76 |
# File 'lib/parse/model/classes/push_status.rb', line 76 property :status |
Class Method Details
.failed ⇒ Parse::Query
Query for failed pushes.
163 164 165 |
# File 'lib/parse/model/classes/push_status.rb', line 163 def failed query(status: "failed") end |
.pending ⇒ Parse::Query
Query for pending pushes (not yet started).
139 140 141 |
# File 'lib/parse/model/classes/push_status.rb', line 139 def pending query(status: "pending") end |
.recent ⇒ Parse::Query
Query for recent pushes, ordered by creation time descending.
169 170 171 |
# File 'lib/parse/model/classes/push_status.rb', line 169 def recent query.order(:created_at.desc) end |
.running ⇒ Parse::Query
Query for running pushes (currently being sent).
151 152 153 |
# File 'lib/parse/model/classes/push_status.rb', line 151 def running query(status: "running") end |
.scheduled ⇒ Parse::Query
Query for scheduled pushes (waiting for push_time).
145 146 147 |
# File 'lib/parse/model/classes/push_status.rb', line 145 def scheduled query(status: "scheduled") end |
.succeeded ⇒ Parse::Query
Query for succeeded pushes.
157 158 159 |
# File 'lib/parse/model/classes/push_status.rb', line 157 def succeeded query(status: "succeeded") end |
Instance Method Details
#complete? ⇒ Boolean
Check if the push is complete (either succeeded or failed).
210 211 212 |
# File 'lib/parse/model/classes/push_status.rb', line 210 def complete? succeeded? || failed? end |
#failed? ⇒ Boolean
Check if the push failed.
204 205 206 |
# File 'lib/parse/model/classes/push_status.rb', line 204 def failed? status == "failed" end |
#failure_rate ⇒ Float
Get the failure rate as a percentage.
242 243 244 |
# File 'lib/parse/model/classes/push_status.rb', line 242 def failure_rate 100.0 - success_rate end |
#in_progress? ⇒ Boolean
Check if the push is still in progress.
216 217 218 |
# File 'lib/parse/model/classes/push_status.rb', line 216 def in_progress? !complete? end |
#pending? ⇒ Boolean
Check if the push is pending (not yet started).
180 181 182 |
# File 'lib/parse/model/classes/push_status.rb', line 180 def pending? status == "pending" end |
#running? ⇒ Boolean
Check if the push is currently running.
192 193 194 |
# File 'lib/parse/model/classes/push_status.rb', line 192 def running? status == "running" end |
#scheduled? ⇒ Boolean
Check if the push is scheduled (waiting for push_time).
186 187 188 |
# File 'lib/parse/model/classes/push_status.rb', line 186 def scheduled? status == "scheduled" end |
#succeeded? ⇒ Boolean
Check if the push succeeded.
198 199 200 |
# File 'lib/parse/model/classes/push_status.rb', line 198 def succeeded? status == "succeeded" end |
#success_rate ⇒ Float
Get the success rate as a percentage.
234 235 236 237 238 |
# File 'lib/parse/model/classes/push_status.rb', line 234 def success_rate total = total_attempted return 0.0 if total == 0 ((num_sent || 0).to_f / total * 100).round(2) end |
#summary ⇒ Hash
Get a summary of the push metrics.
251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/parse/model/classes/push_status.rb', line 251 def summary { status: status, sent: num_sent || 0, failed: num_failed || 0, total_targeted: count || 0, success_rate: success_rate, sent_per_type: sent_per_type || {}, failed_per_type: failed_per_type || {}, } end |
#total_attempted ⇒ Integer
Get the total number of notifications attempted (sent + failed).
226 227 228 |
# File 'lib/parse/model/classes/push_status.rb', line 226 def total_attempted (num_sent || 0) + (num_failed || 0) end |