diff options
| author | Jules Laplace <jules@okfoc.us> | 2017-03-23 17:09:48 +0100 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2017-03-23 17:09:48 +0100 |
| commit | 3696f587f46a6d596bc8c0e9891566edbaf0ca63 (patch) | |
| tree | 41f2db8966f2ff10cd467d1e66ce2c0ba5de52af /StoneIsland/platforms/android/assets/www/js/lib/etc/push.js | |
| parent | c23ff34eeef700532e22f6d3f573e54dfd48b5a9 (diff) | |
android
Diffstat (limited to 'StoneIsland/platforms/android/assets/www/js/lib/etc/push.js')
| -rwxr-xr-x | StoneIsland/platforms/android/assets/www/js/lib/etc/push.js | 118 |
1 files changed, 86 insertions, 32 deletions
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js index 634ffe6d..da63fdd1 100755 --- a/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js +++ b/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js @@ -1,50 +1,103 @@ var push = (function(){ - var appId = "GS82ZxpN8Mecpc53rsyu6aLLGK0W4CKi42J25DLB" - var clientKey = "hQRtQfsgimYnX5PMivtcdXCG9eZhESeyTr0Rd8Sv" - var push = { settings: {} } - var parsePlugin + var push = { settings: {}, disabled: false } + var pushPlugin push.init = function(){ - parsePlugin = window.parsePlugin || { initialize: function(){} } - parsePlugin.initialize(appId, clientKey, push.did_initialize, push.error) + if (device.platform !== "ios") { + push.disabled = true + return + } + + pushPlugin = PushNotification.init({ + ios: { + alert: true, + badge: true, + sound: false, + clearBadge: true, + }, + }) + + console.log("push init") + + PushNotification.hasPermission(push.did_initialize) + pushPlugin.on('registration', push.got_registration) + pushPlugin.on('notification', push.got_push_notification) } - push.did_initialize = function() { - parsePlugin.registerCallback('onNotification', function(){ - window.onNotification = push.got_push_notification - }, push.error) + push.did_initialize = function(data) { + if (! data.isEnabled) { + return + } + console.log("push did initialize") + var hub_status = localStorage.getItem("yoox.push_hub") + var store_status = localStorage.getItem("yoox.push_store") push.settings.requested = localStorage.getItem("yoox.push_requested") == "true" - push.settings.hub = localStorage.getItem("yoox.push_hub") == "true" - push.settings.store = localStorage.getItem("yoox.push_store") == "true" + push.settings.hub = hub_status == "true" + push.settings.store = store_status == "true" + + if (! hub_status || hub_status == "true") { + push.subscribe("hub") + } + if (! store_status || store_status == "true") { + push.subscribe("store") + } + } + push.got_registration = function(data){ + var registrationId = data.registrationId + var oldRegistrationId = localStorage.getItem("yoox.registrationId") + console.log(registrationId, oldRegistrationId) - if ( ! push.settings.requested ) { - localStorage.setItem("yoox.push_requested", "true") + if (registrationId !== oldRegistrationId || ! push.settings.requested) { + localStorage.setItem("yoox.registrationId", registrationId) push.subscribe("hub", function(){ push.subscribe("store") }) } } push.subscribe = function(channel, cb){ - parsePlugin.subscribe(channel, function(){ - push.settings[channel] = true - localStorage.setItem("yoox.push_" + channel, "true") + if (push.disabled) return + push.settings[channel] = true + localStorage.setItem("yoox.push_" + channel, "true") + var data = { + registrationId: localStorage.getItem("yoox.registrationId"), + channel: channel, + platform: device.platform, + } + pushPlugin.subscribe(channel, function(){ console.log("subscribed to", channel) - cb && cb() - }, push.error) + }) + $.ajax({ + method: "POST", + url: "https://stone.sup.land/_services/push/add", + data: data, + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + success: function(){ + console.log("subscribed to", channel) + cb && cb() + }, + error: push.error, + }) } push.unsubscribe = function(channel, cb){ - parsePlugin.unsubscribe(channel, function(){ - push.settings[channel] = false - localStorage.setItem("yoox.push_" + channel, "false") - console.log("unsubscribed from", channel) - cb && cb() - }, push.error) + if (push.disabled) return + push.settings[channel] = false + localStorage.setItem("yoox.push_" + channel, "false") + var data = { + registrationId: localStorage.getItem("yoox.registrationId"), + channel: channel, + platform: device.platform, + } + $.ajax({ + method: "POST", + url: "https://stone.sup.land/_services/push/remove", + data: data, + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + success: function(){ + console.log("unsubscribed from", channel) + cb && cb() + }, + error: push.error, + }) } - // parsePlugin.getInstallationId(function(id) { - // var install_data = { - // installation_id: id, - // channels: ['SampleChannel'] - // } - // }, push.error) push.got_push_notification = function(push_obj) { // alert('We received this push notification: ' + JSON.stringify(push_obj)); app.blog.refresh() @@ -63,8 +116,9 @@ var push = (function(){ app.intro.$alert.show().html("[ HUB UPDATED ]") } - if (push_obj.receivedInForeground === false) { + if (push_obj.additionalData.foreground === false) { // TODO: route the user to the uri in push_obj + pushPlugin.finish(function(){}, function(){}) } else { app.route("intro") |
