I came across the mod_parse module a while ago when I was implementing push notifications into an app. I really like the module and I decided to use the analytical parts in my app but unfortunately, the module doesn’t have push yet so I started hacking away and found it was easier and faster than I could ever imagined.

To save everyone the hassle of writing your own code I decided to share mine with the Corona community. Just add it to your main.lua, sign up with parse and get your appID and REST key and your good to go.

After you got your parse keys, build for device and launch the app, go to your parse and see the data browser for your device. I have only run this code on iOS.

Grab the code here and get your push notifications with parse going too!

local appID = "Your appID"
local RESTapiKey = "Your REST ApiKey"
local function notificationListener(event)
      if (event.type == "local") then
      local badgeNum = native.getProperty( "applicationIconBadgeNumber" )
            badgeNum = badgeNum - 1
            native.setProperty( "applicationIconBadgeNumber", badgeNum )
      elseif (event.type == "remote") then
           if (event.badge and event.badge > 0) then
              native.setProperty("applicationIconBadgeNumber", event.badge - 1)
      elseif (event.type == "remoteRegistration") then
           local platform = "ios"
           if (system.getInfo("platformName") == "Android") then
                 platform = "android"
       local function networkListener(event)
            if (event.isError) then
                print(" ===>>> PARSE LISTENER ERROR RESPONSE : ", event.response)
                print(" ===>>> PARSE LISTENER RESPONSE: ", event.response)
        local headers = {
              ["X-Parse-Application-Id"] = appID,
              ["X-Parse-REST-API-Key"] = RESTapiKey,
              ["Content-Type"] = "application/json"
        local bodyData = {
            -- These two fields must be added at parse.com first.
              ["deviceName"]  = tostring( system.getInfo("name") ),
              ["deviceModel"] = tostring( system.getInfo("architectureInfo") ),
              ["deviceType"]  = platform,
              ["deviceToken"] = event.token,
              ["badge"] = native.getProperty("applicationIconBadgeNumber"),
              ["timeZone"] = -3600,
              ["channels"] = {"MyPushChannel"}
       local body = json.encode(bodyData)
       local params = {
             headers = headers,
             body = body
        network.request( "https://api.parse.com/1/installations" ,"POST", networkListener, params)
Runtime:addEventListener("notification", notificationListener )