class Pushofy::ApplePush

Public Class Methods

new(payload_hash, settings) click to toggle source
# File lib/pushofy/applepush.rb, line 9
def initialize(payload_hash, settings)
  @deviceTokenHex = payload_hash["device"]
  @payload_hash = payload_hash.delete('device')
  @settings = settings
end

Public Instance Methods

feedback() click to toggle source
# File lib/pushofy/applepush.rb, line 27
def feedback
  host = 'feedback.sandbox.push.apple.com'
  path =  Dir.pwd + '/app/controllers/CertificateName.pem'
  ssl_client = Pushofy::ConnectionToAppleServer::ssl_connect(host, 2196, path)
  ssl_client.connect
  apns_feedback = []
  while message = ssl_client.gets
    timestamp, _token_size, token = message.unpack('N1n1H*')
    apns_feedback << [Time.at(timestamp), token]
  end
  ssl.close
  sock.close
end
push() click to toggle source
# File lib/pushofy/applepush.rb, line 14
def push
  path = @cert_name
  ssl_client = Pushofy::ConnectionToAppleServer::ssl_connect(@settings[:host], @settings[:port], @settings[:password], @settings[:cert])
  ssl_client.connect
  device = [@deviceTokenHex]
  device_token_binary = device.pack('H*')
  pt = device_token_binary
  pm = @payload_hash.to_json
  message = [0, 0, 32, pt, 0, pm.size, pm].pack('ccca*cca*')
  ssl_client.write(message)
  ssl_client.flush
end