class BMO::APNS::Notification::Payload
The Payload
contains the data sent to Apple
Constants
- MAX_BYTE_SIZE
Attributes
custom_data[R]
data[R]
options[R]
truncable_alert[R]
Public Class Methods
new(data, options = {})
click to toggle source
# File lib/bmo/apns/notification.rb, line 41 def initialize(data, options = {}) @data = data @truncable_alert = options[:truncable_alert] @options = options end
Public Instance Methods
package()
click to toggle source
# File lib/bmo/apns/notification.rb, line 60 def package json = data.to_json [2, json.bytes.count, json].pack('cna*') end
to_package()
click to toggle source
# File lib/bmo/apns/notification.rb, line 47 def to_package truncate_alert! if truncable_alert && !valid? validate! package end
truncate_alert!()
click to toggle source
# File lib/bmo/apns/notification.rb, line 65 def truncate_alert! return unless data[:aps] && data[:aps][:alert] string = data[:aps][:alert] diff_bytesize = package.bytesize - MAX_BYTE_SIZE desirable_bytesize = (string.bytesize - diff_bytesize) - 1 data[:aps][:alert] = Utils.bytesize_force_truncate(string, desirable_bytesize, options) end
valid?()
click to toggle source
# File lib/bmo/apns/notification.rb, line 75 def valid? package.bytesize < MAX_BYTE_SIZE end
validate!()
click to toggle source
# File lib/bmo/apns/notification.rb, line 53 def validate! return true if valid? str = "Payload byte size (#{package.bytesize})" \ " should be less than #{Payload::MAX_BYTE_SIZE} bytes" fail PayloadTooLarge, str end