OneSignal with external codes
https://kwiksher.com/doc/kwik_tutorial/programming/push_notification/
lib/onesignal.lua
local M = {} local composer = require("composer") function DidReceiveRemoteNotification(message, additionalData, isActive) if M.app then M.app.notifiedMessage = message else composer.showOverlay(M.pageScene, {notifiedMessage= message, additionalData= additionalData}) end end M.init = function (key, id, pageScene, app ) M.app = app M.pageScene = pageScene OneSignal.DisableAutoRegister() OneSignal.Init(key, id, DidReceiveRemoteNotification) OneSignal.EnableInAppAlertNotification(true) end return M
ext
- onesignal_init.lua
- onesignal_setup.lua
- onesignal_setSubscription.lua
- onesignal_clearAllNotifications.lua
- onesignal_showOverlay.lua
- hideOverlay.lua
Add main
onesignal_init.lua
sets the key and the id. A message from Onesignal is displayed in page 006 notification (views.page06Scene )
local _K = require("Application") require("lib.onesignal").init("ONSIGNAL_KEY","GOOGLE_ID", "views.page06Scene", _K)
002 - toc
Noification button in menu
onesignal_showOverlay.lua
opens oneSignal setting of the page 007
006 - notification
DidReceiveRemoteNotification from Onesignal opens the page

but_close
hideOverlay.lua
msgTxt
- a dynamic text with notifiedMessage of a global variable
007 - oneSignal

setup the buttons with the external codes
code_setSubs
onesignal_setup.lua configures the buttons
- Register button
- Subscribe switch button
but_clear
- onesignal_clearAllNotifications.lua
but_close
- hideOverlay.lua

variables
notifiedMessage
- Global variable to
enableSubscription
- onesignal_setSubscription.lua
- saved locally (Keep track)
isRegister
- saved locally (Keep track)
onesignal_setup.lua
local OneSignal = require("plugin.OneSignal")
local widget = require( "widget" )
local labelColor = {0,0,0}
OneSignal.IdsAvailableCallback( function (userId, pushToken)
print("userId:" .. userId)
if (pushToken) then
print("pushToken:" .. pushToken)
else
native.showAlert("message", "Error in notification setting", { "OK" } )
end
end)
layer.subsBtn.alpha = 0
local function displayOnOffSubscription()
layer.registBtn.alpha = 0
local switchText = display.newText( "On/Off", 250, 160, native.systemFont, 14 )
switchText.anchorY = 0
switchText.x = layer.registBtn.x
switchText.y = layer.registBtn.y -10
switchText:setFillColor( unpack(labelColor) )
sceneGroup:insert( switchText )
local function onOffSwitchListener( event )
print("On/Off Switch\nswitch.isOn = " .. tostring( event.target.isOn ))
OneSignal.SetSubscription(event.target.isOn)
UI.enableSubscript = event.target.isOn
end
-- Create a default on/off switch (using widget.setTheme)
local onOffSwitch = widget.newSwitch
{
left = 190,
top = 180,
--onPress = onOffSwitchListener,
onRelease = onOffSwitchListener,
}
sceneGroup:insert( onOffSwitch )
onOffSwitch.x = layer.subsBtn.x
onOffSwitch.y = layer.subsBtn.y
onOffSwitch.isOn = UI.enableSubscript
onOffSwitch:scale(0.6, 0.6)
end
if UI.isRegister == false then
layer.registBtn:addEventListener("tap", function()
OneSignal.RegisterForNotifications()
UI.isRegister = true
layer.registBtn.alpha = 0
displayOnOffSubscription()
end)
else
displayOnOffSubscription()
end