Android Push Notification Error

Hi, have anyone encountered this error as show in attached screenshot when sending push notification in android using sample code in Corona SDK. 

Any help is highly appreciated.

Also even when the push notification is received, instead of app icon a triangle with exclamation sign shows up, dont’ know why?

Need to see code to see what the push request you are making looks like.

For the triangle icon see: http://developer.coronalabs.com/forum/2012/12/05/custom-icon-local-notifications-android

Here is the code:

local googleApiKey = “**********************”

local googleRegistrationId = nil

– Called when a sent notification has succeeded or failed.

local function onSendNotification(event)

    local errorMessage = nil

    – Determine if we have successfully sent the notification to Google’s server.

    if event.isError then

        – Failed to connect to the server.

        – This typically happens due to lack of Internet access.

        errorMessage = “Failed to connect to the server.”

    elseif event.status == 200 then

        – A status code of 200 means that the notification was sent succcessfully.

        print(“Notification was sent successfully.”)

    elseif event.status == 400 then

        – There was an error in the sent notification’s JSON data.

        errorMessage = event.response

    elseif event.status == 401 then

        – There was a user authentication error.

        errorMessage = “Failed to authenticate the sender’s Google Play account.”

    elseif (event.status >= 500) and (event.status <= 599) then

        – The Google Cloud Messaging server failed to process the given notification.

        – This indicates an internal error on the server side or the server is temporarily unavailable.

        – In this case, we are supposed to silently fail and try again later.

        errorMessage = “Server failed to process the request. Please try again later.”

    end

    – Display an error message if there was a failure.

    if errorMessage then

        native.showAlert(“Notification Error”, errorMessage, { “OK” })

    end

end

– Sends the given JSON message to the Google Cloud Messaging server to be pushed to Android devices.

local function sendNotification(jsonMessage)

    – Do not continue if a Google API Key was not provided.

    if not googleApiKey then

        return

    end

    – Print the JSON message to the log.

    print("— Sending Notification ----")

    print(jsonMessage)

    – Send the push notification to this app.

    local url = “**************************”

    local parameters =

    {

        headers =

        {

            [“Authorization”] = “key=” … googleApiKey,

            [“Content-Type”] = “application/json”,

        },

        body = jsonMessage,

    }

    network.request(url, “POST”, onSendNotification, parameters)

end

– Sends a push notification when the screen has been tapped.

local function onTap(event)

    – Do not continue if this app has not been registered for push notifications yet.

    if not googleRegistrationId then

        return

    end

    – Set up a JSON message to send a push notification to this app.

    – The “registration_ids” tells Google to whom this push notification should be delivered to.

    – The “alert” field sets the message to be displayed when the notification has been received.

    – The “sound” field is optional and will play a sound file in the app’s ResourceDirectory.

    – The “custom” field is optional and will be delivered by the notification event’s “event.custom” property.

    local jsonMessage =

[[

{

    “registration_ids”: ["]] … tostring(googleRegistrationId) … [["],

    “data”:

    {

        “alert”: “Hello World!”,

        “sound”: “notification.wav”,

        “custom”:

        {

            “boolean”: true,

            “number”: 123.456,

            “string”: “Custom data test.”,

            “array”: [true, false, 0, 1, “”, “This is a test.”],

            “table”: { “x”: 1, “y”: 2 }

        }

    }

}

]]

    sendNotification(jsonMessage)

end

Runtime:addEventListener(“tap”, onTap)

– Prints all contents of a Lua table to the log.

local function printTable(table, stringPrefix)

    if not stringPrefix then

        stringPrefix = "### "

    end

    if type(table) == “table” then

        for key, value in pairs(table) do

            if type(value) == “table” then

                print(stringPrefix … tostring(key))

                print(stringPrefix … “{”)

                printTable(value, stringPrefix … "   ")

                print(stringPrefix … “}”)

            else

                print(stringPrefix … tostring(key) … ": " … tostring(value))

            end

        end

    end

end

– Called when a notification event has been received.

local function onNotification(event)

    if event.type == “remoteRegistration” then

        – This device has just been registered for Google Cloud Messaging (GCM) push notifications.

        – Store the Registration ID that was assigned to this application by Google.

        googleRegistrationId = event.token

        – Display a message indicating that registration was successful.

        local message = “This app has successfully registered for Google push notifications.”

        native.showAlert(“Information”, message, { “OK” })

        – Print the registration event to the log.

        print("### — Registration Event —")

        printTable(event)

    else

        – A push notification has just been received. Print it to the log.

        print("### — Notification Event —")

        printTable(event)

    end

end

– Set up a notification listener.

Runtime:addEventListener(“notification”, onNotification)

– Print this app’s launch arguments to the log.

– This allows you to view what these arguments provide when this app is started by tapping a notification.

local launchArgs = …

print("### — Launch Arguments —")

printTable(launchArgs)

Need to see code to see what the push request you are making looks like.

For the triangle icon see: http://developer.coronalabs.com/forum/2012/12/05/custom-icon-local-notifications-android

Here is the code:

local googleApiKey = “**********************”

local googleRegistrationId = nil

– Called when a sent notification has succeeded or failed.

local function onSendNotification(event)

    local errorMessage = nil

    – Determine if we have successfully sent the notification to Google’s server.

    if event.isError then

        – Failed to connect to the server.

        – This typically happens due to lack of Internet access.

        errorMessage = “Failed to connect to the server.”

    elseif event.status == 200 then

        – A status code of 200 means that the notification was sent succcessfully.

        print(“Notification was sent successfully.”)

    elseif event.status == 400 then

        – There was an error in the sent notification’s JSON data.

        errorMessage = event.response

    elseif event.status == 401 then

        – There was a user authentication error.

        errorMessage = “Failed to authenticate the sender’s Google Play account.”

    elseif (event.status >= 500) and (event.status <= 599) then

        – The Google Cloud Messaging server failed to process the given notification.

        – This indicates an internal error on the server side or the server is temporarily unavailable.

        – In this case, we are supposed to silently fail and try again later.

        errorMessage = “Server failed to process the request. Please try again later.”

    end

    – Display an error message if there was a failure.

    if errorMessage then

        native.showAlert(“Notification Error”, errorMessage, { “OK” })

    end

end

– Sends the given JSON message to the Google Cloud Messaging server to be pushed to Android devices.

local function sendNotification(jsonMessage)

    – Do not continue if a Google API Key was not provided.

    if not googleApiKey then

        return

    end

    – Print the JSON message to the log.

    print("— Sending Notification ----")

    print(jsonMessage)

    – Send the push notification to this app.

    local url = “**************************”

    local parameters =

    {

        headers =

        {

            [“Authorization”] = “key=” … googleApiKey,

            [“Content-Type”] = “application/json”,

        },

        body = jsonMessage,

    }

    network.request(url, “POST”, onSendNotification, parameters)

end

– Sends a push notification when the screen has been tapped.

local function onTap(event)

    – Do not continue if this app has not been registered for push notifications yet.

    if not googleRegistrationId then

        return

    end

    – Set up a JSON message to send a push notification to this app.

    – The “registration_ids” tells Google to whom this push notification should be delivered to.

    – The “alert” field sets the message to be displayed when the notification has been received.

    – The “sound” field is optional and will play a sound file in the app’s ResourceDirectory.

    – The “custom” field is optional and will be delivered by the notification event’s “event.custom” property.

    local jsonMessage =

[[

{

    “registration_ids”: ["]] … tostring(googleRegistrationId) … [["],

    “data”:

    {

        “alert”: “Hello World!”,

        “sound”: “notification.wav”,

        “custom”:

        {

            “boolean”: true,

            “number”: 123.456,

            “string”: “Custom data test.”,

            “array”: [true, false, 0, 1, “”, “This is a test.”],

            “table”: { “x”: 1, “y”: 2 }

        }

    }

}

]]

    sendNotification(jsonMessage)

end

Runtime:addEventListener(“tap”, onTap)

– Prints all contents of a Lua table to the log.

local function printTable(table, stringPrefix)

    if not stringPrefix then

        stringPrefix = "### "

    end

    if type(table) == “table” then

        for key, value in pairs(table) do

            if type(value) == “table” then

                print(stringPrefix … tostring(key))

                print(stringPrefix … “{”)

                printTable(value, stringPrefix … "   ")

                print(stringPrefix … “}”)

            else

                print(stringPrefix … tostring(key) … ": " … tostring(value))

            end

        end

    end

end

– Called when a notification event has been received.

local function onNotification(event)

    if event.type == “remoteRegistration” then

        – This device has just been registered for Google Cloud Messaging (GCM) push notifications.

        – Store the Registration ID that was assigned to this application by Google.

        googleRegistrationId = event.token

        – Display a message indicating that registration was successful.

        local message = “This app has successfully registered for Google push notifications.”

        native.showAlert(“Information”, message, { “OK” })

        – Print the registration event to the log.

        print("### — Registration Event —")

        printTable(event)

    else

        – A push notification has just been received. Print it to the log.

        print("### — Notification Event —")

        printTable(event)

    end

end

– Set up a notification listener.

Runtime:addEventListener(“notification”, onNotification)

– Print this app’s launch arguments to the log.

– This allows you to view what these arguments provide when this app is started by tapping a notification.

local launchArgs = …

print("### — Launch Arguments —")

printTable(launchArgs)