Project

kw_apn

0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Apple Push Notification Library by Kupferwerk. Supports extended format with feedback.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme
¶ ↑

About

¶ ↑

Push Notification Library with support for the extended format. This Library is designed to send thousands of APNs at once without dropping a lot of messages on errors. Since version 0.4 it supports the use of multiple App IDs with one process.

¶ ↑

Getting Started

¶ ↑

For Rails start the generator: kw_apn This will copy the configuration example into your project.

If you not working with Rails you need to specify either Rails.root and Rails.env or RACK_ROOT and RACK_ENV for the gem to work.

Manual: create the File <project_root>/config/kw_apn.yml

structure of the config file should look like this:

environment: 
  cert_file: path to ssl certificate file
  push_host: 'gateway.sandbox.push.apple.com' or 'gateway.push.apple.com' for live
  push_port: 2195
  feedback_host: 'feedback.sandbox.push.apple.com' or 'feedback.push.apple.com' for live
  feedback_port: 2196
¶ ↑

Creating cert file

¶ ↑

Export the key and the certificate as P12 files and run:

openssl pkcs12 -in apn-cert.p12 -out apn-cert.pem -nodes -clcerts
openssl pkcs12 -in apn-key.p12 -out apn-key.pem -nodes -clcerts
¶ ↑

Example

¶ ↑
users = MyAPNUsers.all
n = []
payload = {:aps => {:alert => "Something very important for everyone to read", :sound => 'annoying_beep'}}

users.each do |u|
  n << KwAPN::Notification.create(u.token, payload, 0)
end

status, ret = KwAPN::Sender.push(n, 'TestSession')

if status == :ok
  ret.each do |token|
    MyAPNUsers.delete_all('token'=>token)
  end
end
¶ ↑

Multiple App IDs

¶ ↑

Since version 0.4 it is possible to use kw_apn with multiple App IDs.

Configuration Example:

production:
  'com.mycompany.app1':
    cert_file: config/apn_certs/app1.pem
    cert_key: config/apn_certs/app1.pem
  'com.mycompany.app2':
    cert_file: config/apn_certs/app2.pem
    cert_key: config/apn_certs/app2.pem

Usage Example

... same as above...

status, ret = KwAPN::Sender.push(n, 'TestSession', 'com.mycompany.app1')
¶ ↑

Copyright

¶ ↑

Distributed under the MIT License. Based in part on Apns4r by Leonid Ponomarev (rdoc.info/projects/thegeekbird/Apns4r)