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