/ANE-BackgroundFetch

Primary LanguageObjective-CApache License 2.0Apache-2.0

Air Native Extension for Background Fetch on iOS 7+

This is an Air native extension for Background Fetch on iOS 7+. It has been developed by FreshPlanet and is used in the game SongPop.

Notes

This ANE currently supports fetching one or several URLs (GET requests) while your app is in the background or inactive, and getting the fetched data when your app resumes.

Two background modes are supported:

  • fetch: the background fetch is triggered periodically by iOS
  • remote-notification: the background fetch is triggered when your app receives a push notification containing the flag content-available.

Installation

The ANE binary (AirFacebook.ane) is located in the bin folder. You should add it to your application project's Build Path and make sure to package it with your app (more information here).

You also need to setup your app descriptor to support the right background modes:

<iPhone>

	<InfoAdditions><![CDATA[

		<key>UIBackgroundModes</key>
		<array>
        	<string>fetch</string>
        	<string>remote-notification</string>
		</array>

	]]></InfoAdditions>

</iPhone>

Usage

var fetchURL: String = "http://mydomain.com/some/path?param1=value1&param2=value2"

// Setup a BackgroundFetch instance (here we use the remote notification mode)
var backgroundFetch: BackgroundFetch = new BackgroundFetch(BackgroundFetch.BACKGROUND_MODE_REMOTE_NOTIFICATION, fetchURL);

// If some data is available, do something with it
if (backgroundFetch.data)
{
	// do something with data
}

// To stop any future background fetch
backgroundFetch.cancel();
// or
BackgroundFetch.cancelAll();

Here are a few things to keep in mind:

  • you can create several instances of BackgroundFetch, but you should only create one for each (backgroundMode, url) pair
  • if your app is killed, it will be awaken by the OS in a sandbox (the user won't see it) to perform the fetch
  • when in sandbox, your ActionScript code won't be executed, just the native code
  • when in sandbox, the ANE only has 30 seconds to perform the fetch, so don't try to fetch dozens of URLs

Build from source

Should you need to edit the extension source code and/or recompile it, you will find an ant build script (build.xml) in the build folder:

cd /path/to/the/ane

# Setup build configuration
cd build
mv example.build.config build.config
# Edit build.config file to provide your machine-specific paths

# Build the ANE
ant

Authors

This ANE has been written by Alexis Taugeron and Jay Canty. It belongs to FreshPlanet Inc. and is distributed under the Apache Licence, version 2.0.

Join the FreshPlanet team - GAME DEVELOPMENT in NYC

We are expanding our mobile engineering teams.

FreshPlanet is a NYC based mobile game development firm and we are looking for senior engineers to lead the development initiatives for one or more of our games/apps. We work in small teams (6-9) who have total product control. These teams consist of mobile engineers, UI/UX designers and product experts.

Please contact Tom Cassidy (tcassidy@freshplanet.com) or apply at http://freshplanet.com/jobs/