Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pushmeup

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pushmeup

  • 0.3.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Pushmeup

a gem for various push notification services.

Goals

Pushmeup is an attempt to create an push notifications center that could send push to devices like:

  • Android
  • iOS
  • Mac OS X
  • Windows Phone
  • And many others

Currently we have only support for iOS, Android and Kindle Fire but we are planning code for more plataforms.

Installation

$ gem install pushmeup

or add to your Gemfile

gem 'pushmeup'

and install it with

$ bundle install

APNS (Apple iOS)

Configure

  1. In Keychain access export your certificate and your private key as a p12.

![Keychain Access](https://raw.github.com/NicosKaralis/pushmeup/master/Keychain Access.jpg)

  1. Run the following command to convert the p12 to a pem file

     $ openssl pkcs12 -in cert.p12 -out cert.pem -nodes -clcerts
    
  2. After you have created your pem file. Set the host, port and certificate file location on the APNS class. You just need to set this once:

     APNS.host = 'gateway.push.apple.com' 
     # gateway.sandbox.push.apple.com is default and only for development
     # gateway.push.apple.com is only for production
     
     APNS.port = 2195 
     # this is also the default. Shouldn't ever have to set this, but just in case Apple goes crazy, you can.
     
     APNS.pem  = '/path/to/pem/file'
     # this is the file you just created
     
     APNS.pass = ''
     # Just in case your pem need a password
    

Usage

Sending a single notification:
device_token = '123abc456def'
APNS.send_notification(device_token, 'Hello iPhone!' )
APNS.send_notification(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default')
Sending multiple notifications
device_token = '123abc456def'
n1 = APNS::Notification.new(device_token, 'Hello iPhone!' )
n2 = APNS::Notification.new(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default')
APNS.send_notifications([n1, n2])
    

All notifications passed as a parameter will be sent on a single connection, this is done to improve reliability with APNS servers.

Another way to send multiple notifications is to send notifications in a persistent connection (thread safe)
# Define that you want persistent connection
APNS.start_persistence

device_token = '123abc456def'

# Send single notifications
APNS.send_notification(device_token, 'Hello iPhone!' )
APNS.send_notification(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default')

# Send multiple notifications
n1 = APNS::Notification.new(device_token, 'Hello iPhone!' )
n2 = APNS::Notification.new(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default')
APNS.send_notifications([n1, n2])

...

# Stop persistence, from this point each new push will open and close connections
APNS.stop_persistence
Sending more information along
APNS.send_notification(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default', 
                                    :other => {:sent => 'with apns gem', :custom_param => "value"})
                                        

this will result in a payload like this:

{"aps":{"alert":"Hello iPhone!","badge":1,"sound":"default"},"sent":"with apns gem", "custom_param":"value"}

Getting your iOS device token

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Register with apple that this app will use push notification
    ...
    
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
    
    ...
    
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    // Show the device token obtained from apple to the log
    NSLog("deviceToken: %", deviceToken);
}

GCM (Google Cloud Messaging)

Configure

	GCM.host = 'https://android.googleapis.com/gcm/send'
	# https://android.googleapis.com/gcm/send is default

	GCM.format = :json
	# :json is default and only available at the moment

	GCM.key = "123abc456def"
	# this is the apiKey obtained from here https://code.google.com/apis/console/
	

Usage

Sending a single notification:
	destination = ["device1", "device2", "device3"]
	# can be an string or an array of strings containing the regIds of the devices you want to send

	data = {:key => "value", :key2 => ["array", "value"]}
	# must be an hash with all values you want inside you notification

	GCM.send_notification( destination )
	# Empty notification

	GCM.send_notification( destination, data )
	# Notification with custom information

	GCM.send_notification( destination, data, :collapse_key => "placar_score_global", :time_to_live => 3600, :delay_while_idle => false )
	# Notification with custom information and parameters

for more information on parameters check documentation: GCM | Android Developers

Sending multiple notifications:
	destination1 = "device1"
	destination2 = ["device2"]
	destination3 = ["device1", "device2", "device3"]
	# can be an string or an array of strings containing the regIds of the devices you want to send

	data1 = {:key => "value", :key2 => ["array", "value"]}
	# must be an hash with all values you want inside you notification
	
	options1 = {:collapse_key => "placar_score_global", :time_to_live => 3600, :delay_while_idle => false}
	# options for the notification
	
	n1 = GCM::Notification.new(destination1, data1, options1)
	n2 = GCM::Notification.new(destination2, data2)
	n3 = GCM::Notification.new(destination3, data3, options2)

	GCM.send_notifications( [n1, n2, n3] )
	# In this case, every notification has his own parameters

for more information on parameters check documentation: GCM | Android Developers

Getting your Android device token (regId)

Check this link GCM: Getting Started

(Optional) You can add multiple keys for GCM

You can use multiple keys to send notifications, to do it just do this changes in the code

Configure
	GCM.key = { :key1 => "123abc456def", :key2 => "456def123abc" }
	# the ``:key1`` and the ``:key2`` can be any object, they can be the projectID, the date, the version, doesn't matter.
	# The only restrain is: they need to be valid keys for a hash.
Usage
	# For single notification
	GCM.send_notification( destination, :identity => :key1 )
	# Empty notification

	GCM.send_notification( destination, data, :identity => :key1 )
	# Notification with custom information

	GCM.send_notification( destination, data, :collapse_key => "placar_score_global", :time_to_live => 3600, :delay_while_idle => false, :identity => :key1 )
	# Notification with custom information and parameters

	# For multiple notifications
	options1 = {}
	options2 = {..., :identity => :key2}
	n1 = GCM::Notification.new(destination1, data1, options1.merge({:identity => :key2}))
	n2 = GCM::Notification.new(destination2, data2, :identity => :key1)
	n3 = GCM::Notification.new(destination3, data3, options2)

	GCM.send_notifications( [n1, n2, n3] )
	# In this case, every notification has his own parameters, options and key

FIRE (Amazon Messaging)

Configure

	FIRE.client_id = "amzn1.application-oa2-client.12345678sdfgsdfg"
	# this is the Client ID obtained from your Security Profile Management on amazon developers
	
	FIRE.client_secret = "fkgjsbegksklwr863485245ojowe345"
    # this is the Client Secret obtained from your Security Profile Management on amazon developers
	

Usage

Sending a single notification:
	destination = "tydgfhewgnwe37586329586ejthe93053th346hrth3t"
	# can be an string or an array of strings containing the regId of the device you want to send

	data = {:key => "value", :key2 => "some value2"}
	# must be an hash with all values you want inside you notification, strings only, no arrays

	FIRE.send_notification( destination )
	# Empty notification

	FIRE.send_notification( destination, data )
	# Notification with custom information

	FIRE.send_notification( destination, data, :consolidationKey => "placar_score_global", :expiresAfter => 3600)
	# Notification with custom information and parameters

for more information on parameters check documentation: [Amazon Messaging | Developers](https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/06-sending-a-message#Request Format)

Sending multiple notifications:
	destination1 = "device1"
	destination2 = ["device2"]
	destination3 = ["device1", "device2", "device3"]
	# can be an string or an array of strings containing the regIds of the devices you want to send

	data1 = {:key => "value", :key2 => ["array", "value"]}
	# must be an hash with all values you want inside you notification
	
	options1 = {:consolidationKey => "placar_score_global", :expiresAfter => 3600}
	# options for the notification
	
	n1 = FIRE::Notification.new(destination1, data1, options1)
	n2 = FIRE::Notification.new(destination2, data2)
	n3 = FIRE::Notification.new(destination3, data3, options2)

	FIRE.send_notifications( [n1, n2, n3] )
	# In this case, every notification has his own parameters

for more information on parameters check documentation: [Amazon Messaging | Developers](https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/06-sending-a-message#Request Format)

Getting your Kindle Fire device token (regId)

Check this link Amazon Messaging: Getting Started

Status

Build Status

Build Status Code Climate

Dependency Status Dependency Status

Contributing

We would be very pleased if you want to help us!

Currently we need a lot of testing so if you are good at writing tests please help us

License

Pushmeup is released under the MIT license:

http://www.opensource.org/licenses/MIT

Bitdeli Badge

FAQs

Package last updated on 26 Jul 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc