Posted on by

GameThriveLong is the Creative Director of Hiptic Games, the makers of the Corona hits Go Ninja! and Shaqdown which were both featured on iTunes and were downloaded collectively over 5 million times. His previous works include Gaia Online, Super Street Fighter 2 Turbo HD Remix and Tatsunoko VS Capcom. He is currently Director of Business Development at GameThrive.


What are Push Notifications?

A Push Notification is similar to an SMS message. It’s basically an alert that instantly appears on your mobile device. Apps must first prompt a user if they wish to receive notifications, and if they accept, the application can deliver relevant messages to that user at any time. Apps typically use push notifications to tell users about new updates, limited time discounts, or simply to remind them to use the app after a few days of inactivity. It’s the easiest way for app developers to dramatically boost re-engagement and retention.

Studies have shown that push notifications boost user retention by as much as 50%, making push notifications an essential part of any app’s success.

It’s no wonder that the big game companies all use Push to keep their players engaged for as long as they can.

We at Hiptic Games were hard pressed to an inexpensive and reliable push notification solution that gave us the ability to send scheduled and targeted push notifications to the users of our Corona games.

Many services offer Push Notifications on a free tier, but severely limit the available features. They also start charging you when you cross a threshold number of devices, number of apps, or data points. Before long, you may suddenly find yourself billed large amounts even if you’re not making enough money to cover those costs.

We understand that most indie developers are on a tight budget and often can’t afford to pay the prices that many push notification providers charge. So, we decided to make GameThrive — our own Push Notifications service. And we are working with Corona to bring this service to Corona developers for free.

What’s GameThrive?

GameThrive is a cross platform Push Notifications solution that can be set up in less than 15 minutes and provides segmentation targeting, localization, scheduled push and real time tracking. GameThrive currently supports native Apple and Google push notifications and comes with libraries for native iOS, native Android, Corona SDK and Unity.

Get started sending Push Messages with GameThrive:

If you’re an Enterprise user check out the GameThrive for Corona Enterprise documentation here. Otherwise, read on…

  1. Sign up for a free account on GameThrive.com
  2. If you’re developing your game for iOS, follow the directions to make your application certificate push compatible here. You should start with your development certificate, but don’t forget to make your Production certificate push compatible too before releasing your game.
  3. If you’re releasing your game on Android, follow the directions to generate a push notification key and project number here.
  4. In your project folder, find config.lua and add the following in a new line after “application = {”
    notification = {
    google = { projectNumber = "XXXXXXXXXXXX" },
    iphone = { types = { "badge", "sound", "alert", "newsstand" } },
    }, 

    Include just the google or iphone sections if your game is for only one platform. If you will be releasing on Android, set your project number to the value on the Google Developer console (Make sure you followed step 3 first): https://console.developers.google.com.

  5. Update the build.settings file in the Corona project folder to contain the following inside of the “settings” table.

    
        plugins =
        {
            -- key is the name passed to Lua's 'require()'
            ["plugin.GameThrivePushNotifications"] =
            {
                -- required
                publisherId = "com.gamethrive",
            },
        },
    
  6. At the top of main.lua, place the following code.

    
    -- This function gets called when the player opens the notification
    function HandleOpenedFromNotification(message, additionalData)
        if (additionalData and additionalData.discount) then
            native.showAlert( "Discount!", message, { "OK" } )
            -- Take player to your game store
        elseif(additionalData and additionalData.bonusCredits) then
            native.showAlert( "Bonus Credits!", message, { "OK" } )
            -- Add credits and take player your game store or inventory if you like
        end
    end
    local launchArgs = ...
    local GameThrive = require ( "plugin.GameThrivePushNotifications" )
    GameThrive.HandleLaunchArgs(launchArgs, "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", HandleOpenedFromNotification)
    

    Replace XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX with your App ID, available on the settings page for your app on https://gamethrive.com.

    HandleOpenedFromNotification will be called when a user receives a notification. If the app is currently running at the time (even in the background), no notification will be displayed on the device but it will still be received and this method will still be called.

    The code above is an example, but you can customize the contents of this method to do different things when a user accepts a notification. The additionalData parameter is a table that can be defined when you send a notification from the GameThrive website.

  7. That’s all! Now just run your app on a device and you will be able to deliver notifications to it from the GameThrive website. People who download your application will be automatically prompted if they wish to accept notifications, and you can send them notifications any time you wish.

More documentation

Push it, good.

Already using another push notification provider? Simply contact us and we’ll be happy to help you switch.

We hope you’ll give it a try. And please feel free to contact us directly if you have any questions on how to get started and best practices to start engaging your users. Thanks!


Posted by . Thanks for reading...

Post Category: Plugins

Post Tags:

42 Responses to “Plugin Partner: Introducing GameThrive, free push notifications for Corona developers”

  1. Dave Baxter

    “If the app is currently running at the time (even in the background), no notification will be displayed on the device but it will still be received and this method will still be called.”

    You would be best popping up a showAlert with a OK and Cancel button and then if they press OK take them to the coin screen or whatever. Otherwise they might be doing something important in a game, showAlert pops up with just a OK button and pressing that OK takes you to the coin screen I would be might (not pleased) off!

    Looks good though, gonna give it a try for the app am currently developing.

    Dave

    Reply
    • George

      George from GameThrive here,

      Great point! We’ll update our documentation with a better example for this case.

      Reply
  2. Lourenco

    Nice!
    Can we push notifications from a game/app itself rather than from GameThrive interface.
    Can we do this with the rest api?

    Reply
    • George

      For rich push notifications there’s a built-in feature to direct users to a website when users open a notification. You can also write some custom code inside the HandleOpenedFromNotification method to open up an in-app webview if you’d like.

      Let us know if you need something more than this and hopefully we’ll be able to add it for you :)

      Reply
  3. Serkan

    I tried out your sample code and did everything on the website but it constantly fails to send the messages. Why can that be? I really like to include it in our next game before it goes to testing.

    Reply
  4. Vince A

    Wow, this is indeed very generous and will be a boon to any indie developer! I just have a few questions:

    1) Does it support sending push notifications from device to device, such as notifying someone that it’s their turn to play?

    2) Will it work on the Amazon Kindle?

    3) What happens if you reach your threshold of 50M pushes per month? Do you pay a flat rate for every 1000 after?

    Thanks, I’m very interested in using this service :)

    Reply
    • George

      Thanks Vince!

      1) Does it support sending push notifications from device to device, such as notifying someone that it’s their turn to play?

      >> Not yet, but this is on our todo list. I do have a question for you though: What do you use for your backend to store game state? It’s possible that it would make more sense for your backend system to send a notification through our API (Which we will support very soon), than for the device to make the API call.

      2) Will it work on the Amazon Kindle?

      >> Not yet. There are a couple barriers for this to work unfortunately. Our server is not yet set up to talk to Amazon’s Device Messaging API (but this is high up on our todo list), and Corona does not have a simple way to get Amazon device registration ids (We may be able to write a native extension to do this though).

      3) What happens if you reach your threshold of 50M pushes per month? Do you pay a flat rate for every 1000 after?

      >> We can work with you to increase the limit, but the setup process may take a bit longer because we want to make sure that we can reliably deliver such a high volume without affecting the performance of the rest of our system. It will still be free.

      Reply
      • Vince A

        Hi George, thanks for the quick and thorough response!

        I am still in the research phase for a backend service provider. I don’t really have the time to implement one myself so I was planning on using Parse. Their monthly API call limit is fairly low which is why I want to use a separate service to handle push notifications.

        Nevertheless I’m glad to see you guys looking out for the smaller developers. I think something like this is just what we need.

        Reply
      • Lerg

        Hi,
        For the backend I love to use Go language on Google App Engine. If you can make a lib that will work with Go -that would be really awesome. I know many other developers use PHP for backends.

        Reply
        • George

          Our API is just REST based, so it should be easy enough to use it from Go that a special library shouldn’t be necessary. I’ll let you know when we add notification delivery to our API (will be quite soon).

          Reply
  5. Kerem

    3) What happens if you reach your threshold of 50M pushes per month? Do you pay a flat rate for every 1000 after?

    >> We can work with you to increase the limit, but the setup process may take a bit longer because we want to make sure that we can reliably deliver such a high volume without affecting the performance of the rest of our system. It will still be free.

    -=======-

    Wow. This is amazing and very very generous. As much as I like “free” just like the next person, I have to ask… How are you planning on surviving and paying the bills? Sounds like you have a great service blooming here but if you go out of business in 3 months it won’t be good for anyone including the devs here who choose to invest time integrating your service in their apps. What is the business model? Can we count on GameThrive being here and thriving in the long run? Thanks much!!!

    Reply
    • George

      Good question :)

      We make money in two ways:
      1. Charging for special notification targeting features (Currently in development).
      2. Using GameThrive as a lead generation tool for our game development consultancy (http://hiptic.com)

      Right now we’re fortunate that our consultancy makes enough money for us to continue supporting GameThrive indefinitely. We developed a highly efficient backend delivery system so our hosting costs are very low.

      Though we are working hard to avoid this, if we do start charging for existing features, we will grandfather in the free pricing for existing accounts.

      Reply
      • Kerem

        Super. Thanks much for taking the time to share. Wishing you and your business all the very best of success. Runs to sign up now… :-)

        Reply
    • George

      A push is per device. So if you have 200,000 players who accepted push notifications and you send a notification to all of them, that counts as 200,000 pushes.

      Reply
  6. Naveen

    Quick question: if I integrate this into 10 of my games, and I only want to send 1 notification to a user (even if they have a bunch of my games installed), is this possible? I wouldn’t want to send 5 notifications of the exact same thing to a player.

    Reply
    • George

      Yep, it’s possible but might take a bit of work. You’ll have to set up a backend server if you don’t have one yet, or use something like Parse.

      First, you’ll need to have a way to uniquely identify a user across your apps. On android you can use their device_id, but on iOS you’ll have to use something like their email or username (If you have a sign-up process in your apps).

      Now using this unique identifier, on your server keep a record of each application that a user has installed.

      Now there are two ways to go about preventing multiple deliveries:

      1. Use our API

      In the next few days we’ll be releasing an API update that you can use to deliver notifications to users one at a time. From your server, you can use this API combined with a list of which apps a user has installed to just send one notification to each person even if they have multiple apps installed.

      2. Use Tags

      Each time a user launches an app, check with your server to see if they have any of your other apps installed and use the GameThrive “Tags” feature to tag them. For instance, a user might have the following tags:

      Installed_App1=true
      Installed_App2=false
      Installed_App3=true

      Then, in GameThrive, set up segments based on this tag on each of your apps. The segments can have the same name as the tags, and you’ll need to create the same segments for each app.

      Finally, from GameThrive, go to each app and send a notification filtered by the appropriate segments:

      App1 Notification = Deliver to segment “ALL”
      App2 Notification = Deliver to segment “ALL”, exclude “Installed_App2″
      App3 Notification = Deliver to segment “ALL”, exclude “Installed_App2″ & “Installed_App3″

      Unfortunately this won’t be 100% reliable because the tags may go out of date if a user installs a new app but doesn’t launch the previous one. But it’s better than nothing.

      Whew, hopefully that all made sense :D

      Reply
  7. Warren

    Is there any way I can send a push notification to a single user? If I have some sort of unique ID for each user such as their email can I send it out to just that user? I don’t know if you support allowing so many tags or however I would use it. I want to send a push notification to someone when someone made a reservation in their condo. I have an app that shows all the dates that the condo has been rented and want to notify each user of any change right then. Thanks!!

    Reply
    • George

      Hey! Just replied to your email but I’ll post here too for the benefit of others:

      Next week we’ll be releasing an API that lets you do this. Our SDK will give you a unique token for each user that you can save in your backend system, and then you can use our API to deliver a message by specifying the content of the message and the token(s) of who you want to send it to.

      Reply
      • George

        Update: The notification delivery API is ready. We also support delivering messages through the device_token.

        Reply
  8. Stephen Lewis

    This is great. The docs and guides provided made this very easy for me to get set up. It would be good to have a specific area of the Corona Forums dedicated to the GameThrive plugin. Also, there doesn’t yet seem to be a link to the official GameThrive plugin reference at http://docs.coronalabs.com/plugin/index.html. The only way I could find it was via this blog post.

    Reply
  9. Michael

    Thanks a lot. in German we say “MEGA GEIL”, (really cool) and so fast and easy.

    Reply

Leave a Reply

  • (Will Not Be Published)