Sha256: e3251892cc5afa43426e25d2c8c260a788f5096d8f3b4f67e66770d417496266

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

module FwtPushNotificationServer

	module Notifier

		class APNS < Notifier::Base

			def notify_once(message, device_tokens, payload = nil)

				alert = message.byteslice(0, 232)
		     	alert += '...' if alert.bytesize > 232
		      
		     	config = FwtPushNotificationServer.apns_config
		     	pusher = Grocer.pusher(config)
		      
		     	device_tokens = [device_tokens] unless device_tokens.is_a?(Array)
				device_tokens.each do |device|
		      		if device.is_valid
		        		token = device.token
		      	 		n = Grocer::Notification.new(device_token: token, alert: alert, custom: payload)
		        		pusher.push n
		    	  	end
		      	end

		      	feedback_config = {
		      		:gateway => config[:gateway].gsub('gateway', 'feedback'),
		      		:certificate => config[:certificate]
		      	}
		      	feedback = Grocer.feedback(feedback_config)
		      	feedback.each do |attempt|
		        	token = attempt.device_token
		        	device_token = DeviceToken.find_by_token(token)
		        	if device_token
			        	device_token.update_attribute("is_valid", false) if device_token.updated_at < attempt.timestamp
		        		Rails.logger.warn("APNS: Device #{token} (#{device_token.user_id}) failed at #{attempt.timestamp}")
		        	end
		      	end

			end

		end

	end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fwt_push_notification_server-0.1.0.b11 lib/notifier/apns.rb