{"_id":"loopback-push-notification","_rev":"171-c42940975fc74e5344a1e8d8f5c486fb","name":"loopback-push-notification","dist-tags":{"latest":"1.2.3"},"versions":{"1.0.0":{"name":"loopback-push-notification","version":"1.0.0","license":"MIT","_id":"loopback-push-notification@1.0.0","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-push-notification","bugs":{"url":"https://github.com/strongloop/loopback-push-notification/issues"},"dist":{"shasum":"60251c330dc9e52092103574f99c35959ae811d1","tarball":"https://registry.npmjs.org/loopback-push-notification/-/loopback-push-notification-1.0.0.tgz","integrity":"sha512-8RX58WmJzaedA2aJ7w2miDBe2juLzqj0GzFuYOjplkHZxXpYCccBQQXrzrU5SvIWUKJYYmpywcg9KBsXLpm9bA==","signatures":[{"sig":"MEUCIEyu/Al7IOMwdC85zcBlS7ekmcl9r/yEP2I+bhoxIq1eAiEAsYSoO9GxIXYI+n2NgcbXgeU5Vefu4pxhv8bunu6zJls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"./node_modules/.bin/mocha --timeout 30000 test/*test.js"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"https://github.com/strongloop/loopback-push-notification.git","type":"git"},"_npmVersion":"1.3.21","description":"Loopback Push Notification","directories":{},"dependencies":{"apn":"~1.4.2","mpns":"~2.1.0","async":"~0.2.9","debug":"~0.7.4","node-gcm":"~0.9.7"},"devDependencies":{"chai":"*","mocha":"*","sinon":"*","should":"*","loopback":"1.x","deep-extend":"*","loopback-testing":"~0.1.0","loopback-connector-mongodb":"1.x"},"peerDependencies":{"loopback":"1.x >=1.4.2"}},"1.1.0":{"name":"loopback-push-notification","version":"1.1.0","license":"MIT","_id":"loopback-push-notification@1.1.0","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-push-notification","bugs":{"url":"https://github.com/strongloop/loopback-push-notification/issues"},"dist":{"shasum":"13d325e67f29e9a0700e59ae49ad2731c691b79f","tarball":"https://registry.npmjs.org/loopback-push-notification/-/loopback-push-notification-1.1.0.tgz","integrity":"sha512-7ekVLPRjSX41waRKZyhg3v7z1ZjTCavN4Rj+zghnojTrzZyo2Laro9PklL/d8drf7l/PjpbiU5af4Lx7paX4Mg==","signatures":[{"sig":"MEUCIGSibLmeXxHApa77mnxzo2uBnB37RXak1VSXIekRly+GAiEA2BavVdFFJWZEnq0GK7LpSnWJWQEQDGrdDvHl7YxNt8w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"./node_modules/.bin/mocha --timeout 30000 test/*test.js"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"https://github.com/strongloop/loopback-push-notification.git","type":"git"},"_npmVersion":"1.3.21","description":"Loopback Push Notification","directories":{},"dependencies":{"apn":"~1.4.2","mpns":"~2.1.0","async":"~0.2.9","debug":"~0.7.4","node-gcm":"~0.9.7"},"devDependencies":{"chai":"*","mocha":"*","sinon":"*","should":"*","loopback":"1.x","deep-extend":"*","loopback-testing":"~0.1.0","loopback-connector-mongodb":"1.x"},"peerDependencies":{"loopback":"1.x >=1.5.0"}},"1.1.1":{"name":"loopback-push-notification","version":"1.1.1","license":"MIT","_id":"loopback-push-notification@1.1.1","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"strongloop","email":"callback@strongloop.com"},{"name":"bajtos","email":"miro.bajtos@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-push-notification","bugs":{"url":"https://github.com/strongloop/loopback-push-notification/issues"},"dist":{"shasum":"c87d2d1da3ebb680c228f41bfc4d217792e4bbd4","tarball":"https://registry.npmjs.org/loopback-push-notification/-/loopback-push-notification-1.1.1.tgz","integrity":"sha512-AOHBZmWH02Atnbp95yM6i/EyNBA++3rkKn3Vt+ZBx5GWrKsLDwYE3xmjyFKq4YtXwKLBpXA8rtVX9ceKkkLnkA==","signatures":[{"sig":"MEUCIQDf37cdVndMbFycMmK4epe16rPDqxPPkgeutPQEf9eq6AIgGY59nqJ9G3WxFgNAFZI/qnJzEXLfggYP1wkC8XV8D48=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"./node_modules/.bin/mocha --timeout 30000 test/*test.js"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"https://github.com/strongloop/loopback-push-notification.git","type":"git"},"_npmVersion":"1.3.21","description":"Loopback Push Notification","directories":{},"dependencies":{"apn":"~1.4.2","mpns":"~2.1.0","async":"~0.2.9","debug":"~0.7.4","node-gcm":"~0.9.7"},"devDependencies":{"chai":"*","mocha":"*","sinon":"*","should":"*","loopback":"1.x >=1.6.1","deep-extend":"*","loopback-testing":"~0.1.0","loopback-connector-mongodb":"1.x"},"peerDependencies":{"loopback":"1.x >=1.6.1"}},"1.2.0":{"name":"loopback-push-notification","version":"1.2.0","license":{"url":"https://github.com/strongloop/loopback-push-notification/blob/master/LICENSE","name":"Dual Artistic-2.0/StrongLoop"},"_id":"loopback-push-notification@1.2.0","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"strongloop","email":"callback@strongloop.com"},{"name":"bajtos","email":"miro.bajtos@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-push-notification","bugs":{"url":"https://github.com/strongloop/loopback-push-notification/issues"},"dist":{"shasum":"9fde0fb2599ffe861c9e1099afdb4c1891d41cc8","tarball":"https://registry.npmjs.org/loopback-push-notification/-/loopback-push-notification-1.2.0.tgz","integrity":"sha512-hwikWSKamWKwk9ej20IJDiqYZywSRFqfB0DO5DvjIpd0JS+wEIu26+REaiw6QD46dfOk/2vIl9tTriiTrMm0IA==","signatures":[{"sig":"MEQCIDMe7twFUpHouSVigWJ7XQYvnE3AQ60qyvkaSbnLQ1lgAiBMximoObET5zr1+4MHQFPTKGyf52QIFsaahwGH6MbheQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"mocha --timeout 30000 test/*test.js"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"https://github.com/strongloop/loopback-push-notification.git","type":"git"},"_npmVersion":"1.3.24","description":"Loopback Push Notification","directories":{},"dependencies":{"apn":"~1.4.4","mpns":"~2.1.0","async":"~0.2.10","debug":"~0.7.4","node-gcm":"~0.9.9"},"devDependencies":{"chai":"*","mocha":"*","sinon":"*","should":"*","loopback":"1.x >=1.7.0","deep-extend":"*","loopback-testing":"~0.1.2","loopback-connector-mongodb":"1.x"},"peerDependencies":{"loopback":"1.x >=1.7.0"}},"1.2.1":{"name":"loopback-push-notification","version":"1.2.1","license":{"url":"https://github.com/strongloop/loopback-push-notification/blob/master/LICENSE","name":"Dual Artistic-2.0/StrongLoop"},"_id":"loopback-push-notification@1.2.1","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"strongloop","email":"callback@strongloop.com"},{"name":"bajtos","email":"miro.bajtos@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-push-notification","bugs":{"url":"https://github.com/strongloop/loopback-push-notification/issues"},"dist":{"shasum":"f6b0a020707f1555718efc7fecbb20be10520eb4","tarball":"https://registry.npmjs.org/loopback-push-notification/-/loopback-push-notification-1.2.1.tgz","integrity":"sha512-yYVvnEw65ZuApR4JPgJ6metidzWiTxhuamZyQNEJkPdnSGqWIKYSVhZFWTo16izCgK3I6B3lLbQhI4euqW+j+Q==","signatures":[{"sig":"MEUCIFYvc+O8MvUTJOx4mnAcXAsuZatX24zrtNw2+bjYqsLOAiEAmAScV9FwLTJb9wnINXlzET8j8RlwUeUzQ2w7bTO+PXc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"f6b0a020707f1555718efc7fecbb20be10520eb4","scripts":{"test":"mocha --timeout 30000 test/*test.js"},"_npmUser":{"name":"bajtos","email":"miro.bajtos@gmail.com"},"repository":{"url":"https://github.com/strongloop/loopback-push-notification.git","type":"git"},"_npmVersion":"1.4.9","description":"Loopback Push Notification","directories":{},"dependencies":{"apn":"~1.4.4","mpns":"~2.1.0","async":"~0.2.10","debug":"~0.7.4","node-gcm":"~0.9.9"},"devDependencies":{"chai":"*","mocha":"*","sinon":"*","should":"*","loopback":"1.x >=1.7.0","deep-extend":"*","loopback-testing":"~0.1.2","loopback-connector-mongodb":"1.x"},"peerDependencies":{"loopback":"1.x >=1.7.0"}},"1.2.3":{"name":"loopback-push-notification","version":"1.2.3","license":{"url":"https://github.com/strongloop/loopback-component-push/blob/master/LICENSE","name":"Dual Artistic-2.0/StrongLoop"},"_id":"loopback-push-notification@1.2.3","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"strongloop","email":"callback@strongloop.com"},{"name":"bajtos","email":"miro.bajtos@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-component-push","bugs":{"url":"https://github.com/strongloop/loopback-component-push/issues"},"dist":{"shasum":"865055c5ec1c8a96d696d237b7b53b059dad2fdf","tarball":"https://registry.npmjs.org/loopback-push-notification/-/loopback-push-notification-1.2.3.tgz","integrity":"sha512-J85D90w8dS2pX1MQL4MOC5lUlEIJAkuV9H6/ybs3kx5FnyowoZlvBg+6W5RhudPVFyXdy/wxFbiKI83t/Mkixw==","signatures":[{"sig":"MEUCIQDbNH4nJ3YdLauyKbJ1zOAxyATc8Cci4E/u24/0mFXAnQIgKbTtk2KZecfHrlpKGrlIW8qYuu35/sdM49ILhSt8jBY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"865055c5ec1c8a96d696d237b7b53b059dad2fdf","scripts":{"test":"mocha --timeout 30000 test/*test.js"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"https://github.com/strongloop/loopback-component-push.git","type":"git"},"_npmVersion":"1.4.9","description":"Loopback Push Notification","directories":{},"dependencies":{"apn":"~1.5.2","mpns":"~2.1.0","async":"~0.9.0","debug":"~1.0.2","node-gcm":"~0.9.11"},"devDependencies":{"chai":"*","mocha":"*","sinon":"*","should":"*","loopback":"1.x >=1.7.0","deep-extend":"*","loopback-testing":"~0.2.0","loopback-connector-mongodb":"1.x"}}},"time":{"created":"2014-01-08T19:30:49.792Z","modified":"2024-07-09T12:43:33.265Z","1.0.0":"2014-01-08T19:30:49.792Z","1.1.0":"2014-01-15T00:27:25.068Z","1.1.1":"2014-02-11T18:58:32.611Z","1.2.0":"2014-02-21T19:11:10.371Z","1.2.1":"2014-06-10T07:10:56.056Z","1.2.3":"2014-07-23T23:07:28.582Z"},"bugs":{"url":"https://github.com/strongloop/loopback-component-push/issues"},"license":{"url":"https://github.com/strongloop/loopback-component-push/blob/master/LICENSE","name":"Dual Artistic-2.0/StrongLoop"},"homepage":"https://github.com/strongloop/loopback-component-push","repository":{"url":"https://github.com/strongloop/loopback-component-push.git","type":"git"},"description":"Loopback Push Notification","maintainers":[{"email":"enjoyjava@gmail.com","name":"rfeng"},{"email":"r.m.graham@gmail.com","name":"rmg"},{"email":"dianahmlau@gmail.com","name":"dhmlau"},{"email":"jgorzinski@gmail.com","name":"theprez"},{"email":"oss@bajtos.net","name":"bajtos"},{"email":"skawful@gmail.com","name":"ritch"}],"readme":"# LoopBack Push Notification Component\n\n**NOTE: The loopback-component-push module supersedes [loopback-push-notification](https://www.npmjs.org/package/loopback-push-notification). Please update your package.json accordingly.**\n\nThis module provides a set of LoopBack models to enable mobile device push notifications.\n\nPlease see the full documentation: [Creating push notifications](http://docs.strongloop.com/display/LB/Creating+push+notifications).\n\n## Architecture\n\n![push-notification.png](push-notification.png)\n\n## Key Components\n\n* Device model and APIs to manage devices with applications and users\n* Application model to provide push settings for device types such as ios and\nandroid\n* Notification model to capture notification messages and persist scheduled\nnotifications\n* Optional Job to take scheduled notification requests\n* Push connector that interact with device registration records and push\nproviders such as APNS, GCM, and MPNS.\n* Push model to provide high level APIs for device-independent push notifications\n\n## Samples\n\n### Node.js server\n\nAn [example LoopBack server application](/example/server) is provided.  To run\n\nTo run it:\n\n    cd example/server\n    node app\n\nOpen your browser to [http://127.0.0.1:3010](http://127.0.0.1:3010).\n\nBy default, the app uses an in-memory store for the application/installation data.\nTo change to a MongoDB instance, set the MONGODB environment variable to the MongoDB URL. For example,\n\n    MONGODB=mongodb://localhost/demo node app\n\n### iOS client\n\nThe [iOS example app](/example/ios) uses LoopBack the LoopBack iOS SDK to enable\nand handle push notifications. \n\n### Android client\n\nThe [Android example app](/example/android) uses LoopBack Android SDK to enable\nand handle push notifications. \n\n## References\n\n- https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html\n- http://developer.android.com/google/gcm/index.html\n- http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202945(v=vs.105).aspx\n- https://github.com/argon/node-apn\n- https://github.com/logicalparadox/apnagent-ios\n- https://blog.engineyard.com/2013/developing-ios-push-notifications-nodejs\n\n","readmeFilename":"README.md","users":{"ravisuhag":true}}