class ApnsKit::Client
Attributes
connection_pool[R]
default_topic[R]
pool_size[R]
Public Class Methods
development(certificate, pool_size: 1, heartbeat_interval: 60)
click to toggle source
# File lib/apns_kit/client.rb, line 24 def development(certificate, pool_size: 1, heartbeat_interval: 60) client = self.new(APPLE_DEVELOPMENT_API_URI, certificate, pool_size: pool_size, heartbeat_interval: heartbeat_interval) end
new(uri, certificate, pool_size: 1, heartbeat_interval: 60)
click to toggle source
# File lib/apns_kit/client.rb, line 30 def initialize(uri, certificate, pool_size: 1, heartbeat_interval: 60) @pool_size = pool_size @connection_pool = @pool_size.times.map { ApnsKit::Connection.new(uri, certificate) }.freeze @default_topic = certificate.app_bundle_id if heartbeat_interval > 0 ApnsKit.log_info("Setting up heartbeat checker") @heartbeat_checker = Concurrent::TimerTask.new { @connection_pool.each(&:ping) } @heartbeat_checker.execution_interval = heartbeat_interval @heartbeat_checker.execute end end
production(certificate, pool_size: 1, heartbeat_interval: 60)
click to toggle source
# File lib/apns_kit/client.rb, line 19 def production(certificate, pool_size: 1, heartbeat_interval: 60) client = self.new(APPLE_PRODUCTION_API_URI, certificate, pool_size: pool_size, heartbeat_interval: heartbeat_interval) client end
Public Instance Methods
inspect()
click to toggle source
# File lib/apns_kit/client.rb, line 74 def inspect "#<ApnsKit::Client:#{"0x00%x" % (object_id << 1)} #{to_s}>" end
send(*notifications)
click to toggle source
# File lib/apns_kit/client.rb, line 62 def send(*notifications) return [] if notifications.empty? notifications.flatten! notifications.each { |notification| notification.topic = default_topic if notification.topic.nil? } request = ApnsKit::Request.new(notifications) return Concurrent::Future.execute{ request.perform_blocking_send(connection_pool.sample) }.value end
send_async(*notifications, &block)
click to toggle source
# File lib/apns_kit/client.rb, line 48 def send_async(*notifications, &block) notifications.flatten! notifications.each { |notification| notification.topic = default_topic if notification.topic.nil? } request = ApnsKit::Request.new(notifications) if block Concurrent::Future.execute{ request.perform_nonblocking_send(connection_pool.sample, &block) } else Concurrent::Future.execute{ request.perform_nonblocking_send(connection_pool.sample) } end return true end
shutdown()
click to toggle source
# File lib/apns_kit/client.rb, line 42 def shutdown @heartbeat_checker.shutdown if @heartbeat_checker @connection_pool.each(&:close) return true end
to_s()
click to toggle source
# File lib/apns_kit/client.rb, line 70 def to_s "uri=#{connection_pool.first.uri} connected=#{connection_pool.map(&:connected)} pool_size=#{pool_size}" end