Archive for the author ·

Tim

·...

Why the $100 iTunes gift card back to school promotion is a great deal for Apple and iWorks

no comments

There have been a couple of posts lately on why the $100 iTunes gift card is better than the previous iPod touch promotion. I fully agree that the economics are greatly in Apple’s favor since they get to make back the 30% on apps from the Mac App Store and the iOS App Store, books from their iBooks bookstore, and whatever their cut is of music purchased. But I have another reason why I think it is an amazing idea:


One of the main questions I get from people buying iPads is “how do I edit Word documents on the iPad?”. Right now there is no great solution for this. You can buy 3rd party apps that will let you open documents from your dropbox folder and edit them – but as anyone who have tried this can attest – there is a very high probability that any document edited in a 3rd party app will look very different when you open it on your PC in Word later. At best the fonts and alignments may be off at worst you may have just lost all the tracked changes that someone made.


I am sure that this is a huge factor for people wanting to use the iPad for work. People have told me that they are using citrix or remote desktop clients to access PCs so they can edit docs on the iPad, which just seems to defeat the whole purpose of having an iPad.


By Apple giving $100 to students they are giving a big discount on the iWorks suite (or maybe the students will just use it on music and games and ask their parents for $ for the iWorks suite). I hope that this will increase the number of people that adopt the Apple document platform and get people away from Word. With iCloud coming soon we will be able to open our Pages/Numbers/Keynote documents on the iPad / PC / Web (??). Personally, if the iPad could do documents well I would not need to bring a laptop when traveling anymore.

Share

On constructive critizism

no comments

There has been a couple of blog posts lately regarding the bloggy criticism of iOS applications by other app developers as well as general tech bloggers. These posts seem to suggest that iOS developers should band together and not criticize each others applications. I generally agree with the statement “be excellent to each other” – but if that means patting each others backs and saying good job even if the application has flaws then the iOS platform is in trouble. I think that one of the great things about the iOS platform is the constant push to make something that is greater and more amazing than what has been done before.


Getting criticism, be it from users through app reviews or emails or from bloggers, is a great way to push everyone to make better applications. I can clearly identify with the fact that developers have an emotional connection to the applications that they make. None of my applications make a huge amount of money and my main motivation is to provide people with great tools to use on their phone – so getting emails or reviews saying “this app sucks” is a feeling not much different than helping a complete stranger just to have them spit at you.


In my opinion, the app review system setup by Apple is one of the greatest innovations of the iOS platform and has been instrumental in the success of the App Store – before this the only way to give feedback was to email the developer and then they could do whatever they wanted – you had already paid for the app so they had no incentive to actually fix the issue. With public reviews and a rating system the incentive to fix issues brought up is much greater and this is something that will push apps to become better. Several times this has brought great new features to my apps and alerted me to features that were not as intuitive as I had originally thought.


Like many other Apple enthusiasts I was very excited for the launch of The Daily. Like many others I was disappointed at the initial product. I think that a lot of people expected the app to be Apple Great (like Maps, Garage Band etc) because of the hype and media buildup for the app and the apparent endorsement of the app by Apple. However, the app has several short falls which were pointed out and suggestions for improvements with implementation were posted. I do not understand why the developer of the app would be surprised that the app got a harsh reception when the developer admits himself that there were issues with the app that if they had longer time could have been sorted out.


I hope that the iOS developer community is grown up enough that we can accept criticism of our work and that we can learn from this and all strive towards making excellent if not perfect apps.

Share

Implementing iAd in iPhone applications

no comments

There are a couple of tricks to implementing iAd in iPhone applications that are not 100% spelled out in the documentation provided by Apple. If you do not implement right your app will crash on phones running older versions of iOS such as iOS4.1 and iOS3.

For your .h file:

#import <UIKit/UIKit.h>;
#import <iAd/iAd.h>;
@interface iAdViewController : UIViewController <ADBannerViewDelegate> {
	ADBannerView *adView;
 	BOOL bannerIsVisible;
}
@property (nonatomic,assign) BOOL bannerIsVisible;
@end

In the .m file you need the following:

- (void) viewWillAppear:(BOOL)animated {
	// check if iAd is available
	Class classAdBannerView = NSClassFromString(@"ADBannerView");
	if (classAdBannerView) {
		// create iAd
		ADBannerView *bannerView = [[classAdBannerView alloc] initWithFrame:CGRectZero];

		if (&ADBannerContentSizeIdentifierPortrait != nil) {
			// NEWER
			DLog(@"NEWER");
			bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
			bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
		} else {
			// OLDER
			DLog(@"OLDER");
			bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
			bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
		}

		bannerView.delegate=self;

		self.adView = bannerView;
		[self.view addSubview:adView];
		self.bannerIsVisible=NO;
		[bannerView release];

	}
	[super viewWillAppear: animated];
}

I am creating the bannerView programatically in order to have the app also work on pre iOS 4.1 devices. The check for ADBannerContentSizeIdentifierPortrait is to see if the user is using iOS 4.1 or newer iOS. In iOS 4.1 the identifiers were based on size – but in newer iOS the iPad got iAds and the size no longer made sense – thus the landscape/portrait designations.

Finally – if your app supports multiple interface orientations – you need to let the banner know that the device rotated so it can show the right size ad.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if (&ADBannerContentSizeIdentifierPortrait != nil) {
        // NEWER
		DLog(@"NEWER");
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
        else
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
    } else {
        // OLDER
		DLog(@"OLDER");
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier480x32;
        else
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    }
}
Share

Facebook crack down on “spammy” apps

16 comments

Today I got an email from Facebook saying that (without warning) they have shut down the LogYourRun Facebook app.  The reason for this is that a Facebook algorithm had determined that the application was “spammy”.  This is a huge surprise to me and the thousands of users that use this app on a daily basis to brag about their exercise activities.  The application makes use of very basic Facebook stream post functionality provided by their iPhone SDK.  The post dialog, per Facebook’s terms, is not pre-filled with any information in the message field and requires the user to 1) actively enter their message and 2) press the post button.  There is nothing automated about the posting and it does not happen in the background – the user is fully aware that they are posting the activity.  The screenshot below shows an example of one of these spammy post:

The removal of this app is a huge let down since the the LogYourRun iPhone application relies on the application ID of the Facebook app in order to let people post their activity information on Facebook.  In addition to taking down the app they also took down the app’s Facebook page – so I have now lost all mode of communication with the application users and my inbox is currently getting flooded by emails from users letting me know that the app is no-longer working.

I am used to developing apps on a closed system – the iPhone – so I am used to following directions on how the user experience should be and what I can and cannot do.  For Facebook applications the terms of service is described in their Platform Policies (http://developers.facebook.com/policy).  The terms in this policy are very nebulous and include things such as “Create a great user experience” and “Be trustworthy” but does not actually define what “spammy” is – though from my albeit infrequent use of Facebook, I would think that Farmville would fit that description better than the LogYourRun application.  In addition I do not see a single term in the document that the LogYourRun app violates.  The app clearly pops up a stream.publish dialog (created using the Facebook JS library on the web or their SDK on the iPhone!) which the user can clearly decide to click post or skip.

I tried appealing the removal of the app and I must say that I appreciate that they got back to me within a couple of hours – though the reply could have easily come from the same algorithm that deleted the app (see below).  It crushed all hopes of ever reviving the app and restoring communication to the over 30K users of the app.

So now I am left with having to update the iPhone app so it does not link to the broken Facebook app.  It was surprisingly easy to setup a new application – which is probably why they need to have algorithms for taking them down also.  This will allow me to go back to being an enabler of my evil spamming users so they can once again brag about their exercise activities.

Share

Please Apple, open up Text To Speech to developers

no comments

One of the little known features of the iPhone is that it actually does a great job of talking to you. The reason why it is little known is that you have to turn on the accessibility options in order to experience it – or you have to use the Voice Control – which does not work great and therefore is not used extensively. The built-in text to speech engine of the phone is not open to developers so there are no third party apps that make use of the text to speech (TTS).

In the mean time developers have to rely on shipping their apps with large bundles of mp3 or aiff files in order to get their applications to talk to the users. Or they can implement some of the online TTS engines or TTS engines made for the iPhone. The results are terrible in all cases that I have observed – if an app needs to only speak predefined words the developer will load all of these as sound files that will be downloaded with the app. This leads to bloated app bundles and wastes bandwidth and phone storage media. The iPhone TTS engines also take considerable amounts of space and if anyone has been able to understand what the app Social Radio is saying to them they deserve a medal. Then there are apps that use online TTS engines and essentially downloads the sound file on demand. This is probably more efficient and has a better result – but you need an internet connection and you will always be at the mercy of the TTS engine provider.

So Apple – please open up the great TTS engine of the iPhone to developers so we can make apps that will be able to talk to the users.

Share