Tuesday, 4 May 2010

Adobe Flash Apps Banned on the iPhone: Apple Changes License Agreement



FlashApple recently changed the License agreement for iPhone developers, stating in section 3.3.1:

"Applications must be originally written in Objective-C, C, C++, or JavaScript."

This means that apps for the iPhone must be written only in the native format for iPhone - developers are not allowed to use 3rd Party "Middleware" to build apps, which of course includes Flash. This is a rather bold step by Apple, because it means that Adobe are now having to ditch their implementation of Flash for the iPhone (but recent news has hinted that an anti-trust lawsuit will be taken against Apple by Adobe).  This change means that all the middleware tools, including PhoneGap, Flash, Unity and many more will not be allowed.  Apple have given the reason for the change as:

“We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform. If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.”

At Web Comms, we believe in high quality apps, so agree with the decision taken by Apple. We have always believed that the iPhone is such a unique device, that to get the most from it you need to write apps specifically for it. We have looked into tools such as Phone Gap which allow you to "write once, run anywhere", but the apps are then limited to the lowest common denominator of all the smart phones.

Tuesday, 1 December 2009

The iPhone app review process

Here is some information for those who are interested in the iPhone app review process from a developers point of view.

App Binary


The first thing to do is write and test your app. iPhone apps are all written using the Xcode development environment on a Mac.

Development Provisioning Profile

All apps on the iPhone are signed to ensure that only apps approved by Apple can be run on an iPhone - an iPhone will not run an unsigned app (unless it has been jail-broken). During development, you must obtain a Development provisioning profile - this is a digital certificate that is generated on the iPhone development portal website.  A development provisioning profile combines a specific device, a specific developer and optionally a specific app. This means that a development app can only be run on the device that is specified when the provisioning profile is generated. You download the provisioning profile from the iPhone development portal website and load it onto your iPhone, which is then specified when the app is built and signed in Xcode.

Distribution Provisioning Profile


When the app is complete, and has been tested, you must then generate a distribution version of the app. This is done by obtaining a Distribution Provisioning Profile - again generated on the iPhone developer portal website.  When the distribution profile has been installed in Xcode, you tell Xcode to build and sign the app using the distribution profile. This then generates a signed app ready for submission to the App Store. You must then compress the binary into a zip file.

Submission to Apple for review


You submit the zipped binary to Apple using the iTunes connect website.  Before you can upload the binary, you must create a new application and provide all the relevant information for it to go in the app store. You must provide:

  1. Application Title: The title of the app as shown in the App store.
  2. Application description: Up to 4000 characters, plain text shown in the app store
  3. Device Requirements: The types of device the app runs on e.g. iPod Touch / iPhone
  4. Primary and secondary categories: The app store categories where the app will be listed
  5. Copyright: The rights holder of the app
  6. Version number: Version number of the app - increment this with any product updates
  7. SKU Number: Your own internal SKU number (can be anything)
  8. Keywords:  Up to 100 characters, comma-separated keywords to help people find your app
  9. Application URL: (optional) a URL with information on the app
  10. Support URL:  URL where customers can obtain support information
  11. Support Email Address: For Apple to use if there are any problems with your app - this is not shown to customers
  12. Demo Account - Full Access: (optional) Any additional information to allow Apple to fully test and review the app. They will reject the app if they cannot access some of the features
  13. Ratings: Specify the type of content in your app. Based on your answers the age rating is automatically calculated.
  14. Release Date: The date when you want the app to go into the App store.
  15. Pricing: The price tier of your app, ranges from free to $999
  16. App store image: A 512x512 pixel image used in the App Store
  17. Screenshots: A primary screenshot, and also up to 4 extra screenshots. These appear in the App store.

Once all this has been completed, you upload your binary. Then click "Save Changes" - you can now sigh with relief and go and do something else for a couple of weeks while Apple review your app.

Review Status


Once submitted, you app is placed in a queue to be reviewed.  The status is as follows:

  • Waiting for review Immediately after submission, when the app is waiting in the queue
  • In Review When Apple start the review process
  • Rejected Apple reject your app for many reasons, but can include the app crashing, unsuitable content or use of an unpublished API.
  • Ready for Sale Hooray! the app has been approved and is ready to go into the App store. The app will be available immediately if the release date has already passed. 
And that was a summary of the app development and submission process!

App submission headaches

Is it just me or is iTunes connect really slow?  I have been trying to upload a new app binary for about half an hour, but cannot get the iTunes connect applications page to load!  Anyway...

Finally heard back from Apple about an app we've had in review since 11th November - hooray!  They phoned to say that we had to reword the iTunes description, and then they will approve the app. I'll let you know when the app is in the app store - it is a bit disappointing it took so long because the app is an advent calendar that we ideally wanted out before December.

Thursday, 26 November 2009

Site Crawling for SEO

Spent some time today working on Spiralytics - our web crawling software. It crawls web sites for SEO purposes and builds up a report of all the pages it finds.

We had a problem a few weeks ago with a crawl on one of our sites - it could only find a small percentage of the web site. Normally this is caused by Javascript or Flash embedded links, but this time the pages were linked with normal anchor links.  After some investigation I found the issue was caused by the web site returning HTTP error code 403.

HTTP Error 403


The 403 Forbidden error code is returned normally by the server when clients are not allowed to view a page. For example, if you attempt to view a directory like /pages/ but there is no index page.  Their are other reasons, including the server incorrectly returning 403 instead of 401 Unauthorised. It was none of these reasons because the page is visible to web browsers.  This only leaves something to do with the server not liking our crawler!

I first tried changing the user-agent to various Mozilla and googlebot, but still got the same response.  I then tried to slow down the crawler in case the server restricted many requests from the same IP within a short time period. But again no luck?

So after all that - no luck.  It'll have to wait for another day.

iPhone

Started working on a new iPhone app for a client.  We've already decided on the basic functionality, so I was just finalising some of the details and producing mockups based on the initial designs from our designer.

Wednesday, 25 November 2009

My new blog

Welcome to my new blog

I thought it was about time I started a blog! A little bit of info about myself - I am CTO of Web Comms, an iPhone development company. I wanted to create a blog to let everyone know the things we are working on at Web Comms and put out some details on the technical solutions we've found.  I'll also be giving info on the latest news and goings on in the iPhone community that I am involved in or hear about.

The next blog will be along soon when I describe some of the things we've been doing today!