iPhone Application Developer – iPhone Developer Labs – iPhone Application Development

iPhone application developer resource – application development, updates & news for iphone developers

Author Archive

Utility for iPhone app developers: iSimulate

November 4th, 2009 by Rama Krishna 1 comment »

Tired of having to install your application on a device for every little change that you make in your code? No!! You test it on the iPhone Simulator!!
What if the application uses GPS and Accelerometer? You cannot test it on the iPhone Simulator.

Here comes iSimulate from vimov to your rescue. People at vimov have created a really useful utility for developers to test their applications which employ GPS and Accelerometer on the iPhone Simulator. Lots of time saved between installs right!!

iSimulate is an application which you download and install on your device to send accelerometer and GPS details to the app running on the iPhone Simulator. The app must of course embed the iSimulate library to be able to receive those details. All it takes to install the iSimulate app on your device, embed the library in your application and start using it is just around 5 minutes.

The newer releases of iSimulate even support video streaming. You can actually see the game or app on your iPhone or iPodTouch even though it’s running on the iPhone Simulator. This enables you to provide very accurate touches to the Simulator. This is a giant leap forward from it’s first days where you had screen filled with Accelerometer graph to simulate touches!!

iSimulate really makes testing your apps easy and quick. Go get your apps on to AppStore that much quicker!!

Tags: iPhone App Developers, iPhone Application Development, iPhone SDK Help, iphone simulator

Custom URL schemes and Launching other applications — Best Practices for iPhone OS 3.0

August 24th, 2009 by Rama Krishna 1 comment »

How to open other applications like phone dialer, SMS, Safari, Google Maps, iTunes or AppStore or any other iPhone application?

“openURL” is the API to use to achieve any of the above and many more.
If you need to let your application users quickly dial APPLE from within your app, just include the following line

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:8006927753"]];

Similarly, you could initiate SMS application by using openURL with “sms: “, but unfortunately you cannot fill in the SMS content as Apple does not yet support it.
There are many more things you could do with this API like launching Google Maps, Safari with any website like you want or even the AppStore links to your apps which you want the users to buy.

Checking support for URLs of other applications
Until the release of iPhone OS 3.0 it was not possible to find if there are any applications installed on the device which handle the URL scheme you are about to use. But now it is possible through the following API

- (BOOL)canOpenURL:(NSURL*)url

Call the above API before using “openURL” to make sure your call will “certainly” be handled by a registered application. If you were developing an iphone app which lets a phone call be made from within it, do the following

// this will fail if the device is an iPod
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:111"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:111"]];
}
else
{
// show an Alert here indicating that the call can’t be completed
}

Apart from using “canOpenURL”, do check the return value from “openURL” too and take appropriate action.

You should also use “canOpenURL” to find out if any features (like calling a number and SMS) that are not accessible on iPod should be disabled or hidden. Showing “phone” icons and letting them be clicked in your application on an iPod is a sure shot way to get your application rejected for uploading to AppStore.

Registering and handling custom URL schemes
If you are developing a great tool and can be used by other applications, you can register custom URL schemes and implement them. To create custom URL schemes just add them to your application’s “info.plist” file.

  • To the root element of your application’s “info.plist” file, add a row with key named “URL types”.
  • Expand it to find “item1″ in it, expand it and edit the value for key “URL identifier” to look something like “com.yourcompany.yoururlscheme”
  • Add another row to “item1″ with key “URL Schemes”. Type in the first few characters of your URL scheme.
    For an example, if you wish to use url formats like abc://part1/part2, just enter “abc” for URL Schemes

Once you have created and registered your own URL formats/schemes, you can handle incoming URL requests by implementing the following UIApplicationDelegate method

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

Before parsing and/or handling the URL, make sure it is in the right format and follows all rules of your URL scheme.

The above method was the only place where you can handle incoming URLs until iPhone OS 3.0 arrived. For iPhone OS 3.0 and above, the preferred place to handle incoming URLs is

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

This method should return whatever “handleOpenURL” API would have returned if it were implemented. If you implement the above delegate method of UIApplication, IPhone OS will not invoke the following methods

- (void)applicationDidFinishLaunching:(UIApplication*)application
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

Tags: Best Practices for iPhone OS 3.0, iPhone App Developers, iPhone app Developers help, iPhone App Development, iPhone Custom URL schemes, iPhone OS 3.0, iPhone SDK Help

iPhone application approval process — Dubious

August 22nd, 2009 by Rama Krishna 1 comment »

There are many stories on the Internet of iPhone app developers who have been harassed by the Apple’s approval process for applications. This article is not of such types, but an example of their standards in reviewing applications.

Apple says, you should not advertise or disable features in an iPhone or iPodTouch application in order to get people to buy some other app. But that is exactly what Rope’n'Fly did with their lite version app and got away!!

Rope’n'Fly advertises their high scores feature in the lite version app by saying it is not available for “training” mode. That may be a nice mask, may be high scores are not available for training mode even in the full version, but when the lite version app is considered as an app on its own that is “illegal”.

Rope’n'Fly is great and is my current favorite game for the iPhone, but did they do any thing to get the app go through the review process without any hiccups? Some of mine don’t seem to get that privilege!! Infact, one my apps which was approved the first time, was rejected (citing a UI issue, which I never knew was a problem) when I tried to update it.

Wish all developers the best of luck with their application approval process for iPhone!!

Tags: iPhone App Development, iPhone application review

Apple at it again!!

August 19th, 2009 by Rama Krishna 3 comments »

Apple’s release of iPhone OS 3.0 was eagerly awaited by the iPhone developer as well as the user community alike. But since it has been released I haven’t been able to get a good night’s sleep, not because of the cool new features it had using which I could create new exiting applications, but because of the bugs it has in it’s new iPhone OS 3.0.

Ever since Apple has released the new iPhone OS, I have been looking around for a fix to the problem I have seen with UIImageViews. Frantically “Google”ing for a fix, searching Apple iPhone Documentation again and again just to see if I have missed anything in the Release Notes and Change Logs of the iPhone SDK for UIImageView have not yielded any result. My self imposed deadlines to update all my apps for iPhone OS 3.0 have been breached and a resolution was not in sight.

The bug in UIImageView was its memory usage. As long as an image on screen is left alone after being created, nothing happens. But if you have any sinister designs on your mind, of moving/resizing the image on screen memory usage starts increasing. And there is no way you could do anything to bring the memory usage down, even releasing the image view object does not work.

And the most important finding in this issue is that “there are no memory leaks”. All the memory allocated is always being used!! That is what I had to believe, but performance of my applications on iPhone was rapidly falling down with the amount of time spent on it. Clearly indicating to me that there was something odd with the new iPhone OS.

A detailed bug report that I sent to Apple received a reply stating

This is due to a bug in the graphics system that mis-reports how it is allocating memory to ObjectAlloc, which causes it to display memory usage as continuously increasing.
If you attach the Memory Monitor instrument to your sample application, you will find that the Real Memory usage stays constant through out the application’s execution, indicating that while ObjectAlloc believes memory usage is increasing, it really is not.

For a couple of days, I was devastated at receiving that reply. So, no way out for me from this situation? Are all my app users going to give me bad ratings for no fault of mine?

Fortunately, I received another e-mail from Apple Support acknowledging that

this is a known issue, which is currently being investigated by engineering

Obviously someone else has already reported the issue, but the above response is only a “consolation prize” for me and nothing in the equation between me and my application purchasers changed. They are still going to complain that my apps are resource hogging and give them bad ratings.

This issue seems to be fixed in iPhone OS 3.1 and beyond, but the damage is already done!! Will all iPhone/iPodTouch users update their devices promptly?

Hope your applications are not plagued with these problems, and/or you have found an alternative to overcome this problem.

Happy programming!!

Tags: iPhone App Development, iPhone OS, iPhone OS 3.0 issues, iPhone OS Bugs
© 2011 iPhone Application Developer – iPhone Developer Labs – iPhone Application Development
iPhone Development Labs, iPhone Development Help, iPhone Development Tips
Back to Top