Awesome New jQuery Mobile Themes

In addition to standard jQuery Mobile themes, we just added a bunch of new and awesome themes and swatches to Appery.io Mobile App Builder.

Appery.io Dark-gray themes

Appery.io Pastel themes

Appery.io Olive themes

Appery.io Cappuccino themes

Appery.io Rainbow-plain themes

Appery.io Winter themes

You can set the swatch name from screen properties:

or click More themes link to change the theme:

REST Service: Cross-domain Security, JSON, JSONP, and CORS

Appery.io, the cloud-based HTML5, jQuery Mobile and PhoneGap mobile app builder come with a very powerful and easy way to define and consume REST services in a mobile app. Inside the builder, you get what amounts to a very easy to use REST services console where any service can be defined, tested, and have its response parameters automatically defined.

Being able to run and test the service from inside the builder is very important as it demonstrates that the service works and data is returned. The next step is usually to make the service available on the page, define UI-service data binding, and then set the service to be invoked on some event. But, when testing the app in a browser, the services sometimes doesn’t work or no data is returned. This creates confusion as the service worked when testing it inside the builder but doesn’t work when invoking from a browser page. The reason this happens is because of the cross-domain security built into browsers.

All browsers have this built into them. Basically, to invoke a service via JavaScript (AJAX) from a domain like mydomain.com, the page from which the service is invoked has to be hosted on that same domain, mydomain.com. When testing an app built in Appery.io, the page is running on appery.io but the service being invoked is on a different domain like, for instance, search.twitter.com. The browser won’t allow this. This is by design to ensure that no bad or malicious JavaScript code can be used to invoke the service.

What can we do? There are a number of options to make this work.

Hosting the page on the same domain

The most obvious option is to host the page and the service on the same domain. The solution is simple but not very practical today. With the new shift to a client-cloud architecture, many services used in mobile apps today are cloud-based, and are hosted via different API providers and thus are on different domains. Hosting the page and the service on the same domain might work well if services were deployed completely within the same organization.

JSONP (JSON with Padding)

JSONP is the unofficial way many provides solve the cross-domain problem. Instead of making a regular AJAX request which is subject to cross-domain security, the request is made via loading a JavaScript file with a special callback function defined. As loading a JavaScript file is not an AJAX call, it doesn’t fall under the cross-domain security problem. The callback function is then invoked to process the data returned (which is JSON). The URL looks like this:

http://someurl?callback=getthedata

getthedata would be invoked to process the response.

With JSONP, a service can be invoked from a page hosted on different domain. For example, Twitter’s API supports JSONP and thus can be invoked from appery.io hosted pages. However, it’s up to the service to support JSONP and not all services support this feature.

Cross-origin resource sharing (CORS)

While JSONP could be considered a hack or a workaround, CORS is an attempt to create a standard way to solve the cross-domain issue. When a service request is made, the server will include a header parameter in the response indicating that the domain from which the call was made – is allowed to invoke this service. However, it’s up to the service providers to add such support. For example, the Parse mobile back-end service supports this feature and makes it very easy to use their services.

Appery.io proxy

If none of the above options are available, Appery.io Mobile App Builder provides a proxy service that works for testing and apps that are hosted on appery.io. When using the proxy, the request is first sent to the proxy server and then, from the server, the request is made to the service. Because the request is sent from the server and not from the page, cross-domain security is not triggered.

Google Chrome with security disabled

Finally, one more option exists, but it’s only useful in development or testing. You can start Google Chrome with security disabled in which case the cross-domain issue is no longer a problem. To start Chrome with security disabled start it with this command line:

chrome –disable-web-security

Mobile Web app vs. mobile app

Everything I just described applies to mobile Web apps – pure Web apps running in the browser. When you develop a PhoneGap app (hybrid app) cross-domain security is not an issue, even though the app is actually running in a browser (albeit a chromeless one).

Next time you are trying a REST service, this should help you understand that’s really happening.

Originally published on Maxa blog.

HTML5 Mobile App Hosting With Appery.io

When starting a new mobile app in Appery.io Mobile App Builder, you get two choices. You can create a mobile app which is essentially a PhoneGap app, or a mobile web app which is pure HTML5, jQuery Mobile app. When going with a mobile web app, you can easily publish and host your app from Appery.io by clicking the Publish button.

You can create a subdomain such as mycoolapp.appery.io but can also use completely custom domain. This is an incredible feature because you can build the app in the cloud and then do one-click publish. Your app is published in about 3 minutes. Once the app is published, you can continue working and republish the app once the new release (new features) were added.

Mobile app hosting is included in the Pro plan and can be added as an option to the Standard plan for $10/m.

Lastly, if this sort of hosting is not your cup of tea, you can always export the app and host it anywhere else. Either way – it’s super easy and fast.

PhoneGap 1.4, Ajax Navigation, jQuery Mobile Visual Data Mapper, HTML5 Audio Control

We recently pushed a new release of Appery.io Mobile App Buider and here are some of the most important new features.

PhoneGap 1.4

PhoneGap version was upgraded to the latest and greatest version 1.4. Every mobile app project automatically comes with PhoneGap 1.4 included, nothing you need to do. You can easily invoke any PhoneGap API and we also provide special Device palette with components based on PhoneGap API.

jQuery Mobile Ajax Navigation

This feature has been requested for some time and now it’s available. When defining page navigation, you can now select transition effect

New jQuery Mobile Visual Data Mapper

We have switched to a new and more powerful jQuery Mobile data mapping. To create mappings, simply select a variable and drag and connect to the other side. When you drag service variables into the page, the page nodes will automatically expand so you don’t necessarily need to open the page nodes ahead of time. The new mapper will allow us to expose all component properties and add additional powerful features.

HTML5 Audio Control

In addition to video control, we also just added HTML5 audio control:

Sign up and try Appery.io Mobile App Builder today.

Appery.io Mobile App Builder – What’s New in Docs

We recently updated a number of help documents. Here is a summary of what has been updated:

As always, if you have any questions or would like to cover a topic in a new tutorial, let us know on the forum, on Twitter, Facebook, email, or right here.

Appery.io: Cloud-based Mobile App Builder Now With jQuery Mobile 1.0

In mid January we have released an update to Appery.io mobile app builder and now every app (new or old) is based on jQuery Mobile version 1.0.

Now that there is a Free plan, nothing should stop you from building your mobile app.

Lastly, if you need to write any custom JavaScript in your app, here is how.

Use Barcode Scanner Component In Your Mobile App

Add Barcode Scanner component when building your app in Appery.io. Give it a try here.

Exporting Android App Built in Appery.io Into Eclipse

So you built a really cool mobile app in Appery.io, now you want to export Android app sources and open in Eclipse. Here is how to do it.

  1. Export Android sources in Appery.io by going to Export > Android row > Source Code/Eclipse Project
  2. Download and extract Eclipse IDE for Java Developers (download link)
  3. Download and extract Android SDK (download link)
  4. Update Android SDK (may take a long time):
    $<path_to_android_sdk>/tools/android update sdk –no-ui
  5. Install ADT Plugin for Eclipse (guide link)
  6. Import project to Eclipse:
    • Package Explorer > File > Import… > General > Existing Projects into Workspace > Choose Appery project folder) > Finish
  7. Running app:
    • Right-click project > Run as > Android application
  8. Building APK:
    • invoke context menu on project > Android tools > Export Signed Application Package

Using HTML5

Here is how add HTML5 <audio> tag to your mobile app in Appery.io. Add the following JavaScript on screen load event:

$('').appendTo('#j_3');

Here is how the app looks in Google Chrome (desktop):

We are working on adding an actual component for the <audio> tag. We already have HTML5 <video> tag.

One more thing. Mobile browser support for the <audio> still varies. iOS seems to have good support while Android support is not as good yet (no support on Android 2.2).

New Tutorial: Building Mobile App with Google Map and Geolocation