<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Indie iPhone Development Blog</title>
	<atom:link href="http://blog.indieiphonedev.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.indieiphonedev.com</link>
	<description>The musings of an independent iPhone developer</description>
	<lastBuildDate>Mon, 20 Jun 2011 18:48:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Why the $100 iTunes gift card back to school promotion is a great deal for Apple and iWorks</title>
		<link>http://blog.indieiphonedev.com/2011/06/20/why-the-100-itunes-gift-card-back-to-school-promotion-is-a-great-deal-for-apple-and-iworks/</link>
		<comments>http://blog.indieiphonedev.com/2011/06/20/why-the-100-itunes-gift-card-back-to-school-promotion-is-a-great-deal-for-apple-and-iworks/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 18:47:09 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[documents]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iWorks]]></category>
		<category><![CDATA[keynote]]></category>
		<category><![CDATA[numbers]]></category>
		<category><![CDATA[pages]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=310</guid>
		<description><![CDATA[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&#8217;s favor since they get to make back the 30% on apps from the Mac App Store and the iOS App Store, books [...]]]></description>
			<content:encoded><![CDATA[<p>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&#8217;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:<br />
<P><br />
One of the main questions I get from people buying iPads is &#8220;how do I edit Word documents on the iPad?&#8221;.  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 &#8211; but as anyone who have tried this can attest &#8211; 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.<br />
<P><br />
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.<br />
<P><br />
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.<br />
<P></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F06%2F20%2Fwhy-the-100-itunes-gift-card-back-to-school-promotion-is-a-great-deal-for-apple-and-iworks%2F&amp;title=Why%20the%20%24100%20iTunes%20gift%20card%20back%20to%20school%20promotion%20is%20a%20great%20deal%20for%20Apple%20and%20iWorks" id="wpa2a_2"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/06/20/why-the-100-itunes-gift-card-back-to-school-promotion-is-a-great-deal-for-apple-and-iworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On constructive critizism</title>
		<link>http://blog.indieiphonedev.com/2011/06/04/on-constructive-critizism/</link>
		<comments>http://blog.indieiphonedev.com/2011/06/04/on-constructive-critizism/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 18:23:53 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[app review]]></category>
		<category><![CDATA[iPhone app]]></category>
		<category><![CDATA[iPhone OS]]></category>
		<category><![CDATA[objective-C]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=304</guid>
		<description><![CDATA[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 &#8220;be excellent to each other&#8221; &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a couple of <a href="http://www.cimgf.com/2011/06/03/why-so-serious/">blog</a> <a href="http://iphonedevelopment.blogspot.com/2011/06/on-being-excellent-to-each-other.html">posts</a> 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 &#8220;be excellent to each other&#8221; &#8211; 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.<br />
<P><br />
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 &#8211; so getting emails or reviews saying &#8220;this app sucks&#8221; is a feeling not much different than helping a complete stranger just to have them spit at you.<br />
<P><br />
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 &#8211; before this the only way to give feedback was to email the developer and then they could do whatever they wanted &#8211; 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.<br />
<P><br />
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 <a href="http://blogs.telegraph.co.uk/technology/shanerichmond/100006286/the-daily-ipad-app-review-a-complete-failure-of-imagination/">which</a> <a href="http://technorati.com/technology/article/ipad-app-review-the-daily/">were</a> <a href="http://www.tuaw.com/2011/02/06/more-thoughts-on-the-daily/">pointed</a> <a href="http://daringfireball.net/linked/2011/02/02/the-daily-in-action">out</a> and <a href="http://daringfireball.net/linked/2011/02/06/brichter-daily">suggestions for improvements</a> 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.<br />
<P><br />
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.  </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F06%2F04%2Fon-constructive-critizism%2F&amp;title=On%20constructive%20critizism" id="wpa2a_4"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/06/04/on-constructive-critizism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing iAd in iPhone applications</title>
		<link>http://blog.indieiphonedev.com/2011/04/27/implementing-iad-in-iphone-applications/</link>
		<comments>http://blog.indieiphonedev.com/2011/04/27/implementing-iad-in-iphone-applications/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 05:11:33 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[free app]]></category>
		<category><![CDATA[iAd]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objective-C]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=296</guid>
		<description><![CDATA[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: In the .m file you [...]]]></description>
			<content:encoded><![CDATA[<p>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. </p>
<p>For your .h file:</p>
<pre class="brush: objc; title: ; notranslate">
#import &lt;UIKit/UIKit.h&gt;;
#import &lt;iAd/iAd.h&gt;;
@interface iAdViewController : UIViewController &lt;ADBannerViewDelegate&gt; {
	ADBannerView *adView;
 	BOOL bannerIsVisible;
}
@property (nonatomic,assign) BOOL bannerIsVisible;
@end
</pre>
<p>In the .m file you need the following:</p>
<pre class="brush: objc; title: ; notranslate">
- (void) viewWillAppear:(BOOL)animated {
	// check if iAd is available
	Class classAdBannerView = NSClassFromString(@&quot;ADBannerView&quot;);
	if (classAdBannerView) {
		// create iAd
		ADBannerView *bannerView = [[classAdBannerView alloc] initWithFrame:CGRectZero];

		if (&amp;ADBannerContentSizeIdentifierPortrait != nil) {
			// NEWER
			DLog(@&quot;NEWER&quot;);
			bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
			bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
		} else {
			// OLDER
			DLog(@&quot;OLDER&quot;);
			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];
}
</pre>
<p>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 &#8211; but in newer iOS the iPad got iAds and the size no longer made sense &#8211; thus the landscape/portrait designations.</p>
<p>Finally &#8211; if your app supports multiple interface orientations &#8211; you need to let the banner know that the device rotated so it can show the right size ad.</p>
<pre class="brush: objc; title: ; notranslate">
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if (&amp;ADBannerContentSizeIdentifierPortrait != nil) {
        // NEWER
		DLog(@&quot;NEWER&quot;);
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
        else
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
    } else {
        // OLDER
		DLog(@&quot;OLDER&quot;);
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier480x32;
        else
            adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    }
}
</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F04%2F27%2Fimplementing-iad-in-iphone-applications%2F&amp;title=Implementing%20iAd%20in%20iPhone%20applications" id="wpa2a_6"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/04/27/implementing-iad-in-iphone-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook crack down on &#8220;spammy&#8221; apps</title>
		<link>http://blog.indieiphonedev.com/2011/04/13/facebook-crack-down-on-spammy-apps/</link>
		<comments>http://blog.indieiphonedev.com/2011/04/13/facebook-crack-down-on-spammy-apps/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 02:58:12 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[iPhone marketing]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=289</guid>
		<description><![CDATA[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 &#8220;spammy&#8221;.  This is a huge surprise to me and the thousands of users that use this app on a daily basis [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8220;spammy&#8221;.  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&#8217;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 &#8211; the user is fully aware that they are posting the activity.  The screenshot below shows an example of one of these spammy post:</p>
<p><a href="http://blog.indieiphonedev.com/wp-content/uploads/2011/04/examplepost.png"><img class="aligncenter size-full wp-image-290" title="examplepost" src="http://blog.indieiphonedev.com/wp-content/uploads/2011/04/examplepost.png" alt="" width="480" height="161" /></a></p>
<p>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&#8217;s Facebook page &#8211; 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.</p>
<p>I am used to developing apps on a closed system &#8211; the iPhone &#8211; 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 (<a href="http://developers.facebook.com/policy" target="_blank">http://developers.facebook.com/policy</a>).  The terms in this policy are very nebulous and include things such as &#8220;Create a great user experience&#8221; and &#8220;Be trustworthy&#8221; but does not actually define what &#8220;spammy&#8221; is &#8211; 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.</p>
<p>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 &#8211; 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.</p>
<p><a href="http://blog.indieiphonedev.com/wp-content/uploads/2011/04/facebookmessage.png"><img class="aligncenter size-full wp-image-291" title="facebookmessage" src="http://blog.indieiphonedev.com/wp-content/uploads/2011/04/facebookmessage.png" alt="" width="600" height="542" /></a></p>
<p>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 &#8211; 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.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F04%2F13%2Ffacebook-crack-down-on-spammy-apps%2F&amp;title=Facebook%20crack%20down%20on%20%E2%80%9Cspammy%E2%80%9D%20apps" id="wpa2a_8"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/04/13/facebook-crack-down-on-spammy-apps/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Please Apple, open up Text To Speech to developers</title>
		<link>http://blog.indieiphonedev.com/2011/03/30/please-apple-open-up-the-text-to-speech-to-developers/</link>
		<comments>http://blog.indieiphonedev.com/2011/03/30/please-apple-open-up-the-text-to-speech-to-developers/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 21:52:48 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[iPhone marketing]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=284</guid>
		<description><![CDATA[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 &#8211; or you have to use the Voice Control &#8211; which does [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8211; or you have to use the Voice Control &#8211; 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). </p>
<p>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 &#8211; 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 &#8211; but you need an internet connection and you will always be at the mercy of the TTS engine provider.</p>
<p>So Apple &#8211; 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.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F03%2F30%2Fplease-apple-open-up-the-text-to-speech-to-developers%2F&amp;title=Please%20Apple%2C%20open%20up%20Text%20To%20Speech%20to%20developers" id="wpa2a_10"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/03/30/please-apple-open-up-the-text-to-speech-to-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today on eBay</title>
		<link>http://blog.indieiphonedev.com/2011/03/30/today-on-ebay/</link>
		<comments>http://blog.indieiphonedev.com/2011/03/30/today-on-ebay/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 21:33:27 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[iPhone marketing]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=280</guid>
		<description><![CDATA[Apple iPhone 3G 16Gb (Launched July 2008) &#8211; $160 Apple iPhone 3GS 16Gb (Launched June 2009) &#8211; $335 Motorola Droid (Launched October 2009) &#8211; $79 Apple iPhone 4 16Gb (Launched June 2010) &#8211; $400 &#8211; with cracked glass]]></description>
			<content:encoded><![CDATA[<p>Apple iPhone 3G 16Gb (Launched July 2008) &#8211; $160<br />
Apple iPhone 3GS 16Gb (Launched June 2009) &#8211; $335<br />
Motorola Droid (Launched October 2009) &#8211; $79<br />
Apple iPhone 4 16Gb (Launched June 2010) &#8211; $400 &#8211; with cracked glass</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F03%2F30%2Ftoday-on-ebay%2F&amp;title=Today%20on%20eBay" id="wpa2a_12"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/03/30/today-on-ebay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iMovie for Editing Video on iPhone</title>
		<link>http://blog.indieiphonedev.com/2011/03/24/imovie-for-editing-video-on-iphone/</link>
		<comments>http://blog.indieiphonedev.com/2011/03/24/imovie-for-editing-video-on-iphone/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 17:42:12 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[iPhone marketing]]></category>
		<category><![CDATA[biking]]></category>
		<category><![CDATA[iMovie]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=271</guid>
		<description><![CDATA[I shot the following footage of the Great Forrest Park Bicycle Race this weekend on my iPhone. I was going to try putting the videos together on my new iPad2 using iMovie &#8211; but there is no easy way to transfer the video from the phone to the iPad without going through iTunes &#8211; so [...]]]></description>
			<content:encoded><![CDATA[<p>I shot the following footage of the Great Forrest Park Bicycle Race this weekend on my iPhone.  I was going to try putting the videos together on my new iPad2 using iMovie &#8211; but there is no easy way to transfer the video from the phone to the iPad without going through iTunes &#8211; so i decided to do the mixing on the iPhone instead.  </p>
<p>iMovie is very easy to use and after taking a couple of guesses on what the different buttons mean you can quickly get a hang of video editing using the phone &#8211; or you can use the excellent help from within the app.  The phone version of iMovie has two simple transitions as well as a straight cut to the next video segment with no transition option.  iMovie also comes with a couple of preset styles, which allow you to add text to your video clips (double tap the clip), but I did not use those for this project.  </p>
<p>After editing the video it took about 3 minutes to export the final video and another 10 minutes to upload in HD to YouTube (over WiFi).</p>
<p><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/MIhYTF9G4NM" frameborder="0" allowfullscreen></iframe></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F03%2F24%2Fimovie-for-editing-video-on-iphone%2F&amp;title=iMovie%20for%20Editing%20Video%20on%20iPhone" id="wpa2a_14"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/03/24/imovie-for-editing-video-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting meaningful device information for iPhone app support</title>
		<link>http://blog.indieiphonedev.com/2011/01/22/getting-meaningful-device-information-for-iphone-app-support/</link>
		<comments>http://blog.indieiphonedev.com/2011/01/22/getting-meaningful-device-information-for-iphone-app-support/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 04:17:31 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[iPhone marketing]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=268</guid>
		<description><![CDATA[Every developer must have had at least one email that goes something like this:  &#8220;I opened the app and it did not work&#8221;.  For emails like that there is not much you can do but be patient and try to figure out exactly what the problem was.  For other emails though it may sometimes be [...]]]></description>
			<content:encoded><![CDATA[<p>Every developer must have had at least one email that goes something like this:  &#8220;I opened the app and it did not work&#8221;.  For emails like that there is not much you can do but be patient and try to figure out exactly what the problem was.  For other emails though it may sometimes be good to know a little about the device that the person was having the problem with.  For example &#8220;The GPS says it is not working so therefore your app is junk&#8221; could be put into context by seeing that the email was sent from an iPod Touch (which does not have a GPS chip).  Also, information about the version of iOS helps with locating what the issue may be.  Finally it can be very useful to know which version of your app the person is using since they may be having a problem with an old version of the app where the problem may have been fixed in the latest version.</p>
<pre class="brush: objc; title: ; notranslate">
	MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
	mail.mailComposeDelegate = self;

	if ([MFMailComposeViewController canSendMail]) {

		//Setting up the Subject, recipients, and message body.
		[mail setToRecipients:[NSArray arrayWithObjects:@&quot;YOUREMAIL.com&quot;,nil]];
		[mail setSubject: [NSString stringWithFormat:@&quot;%@ iPhone Application Feedback&quot;, kTWApplicationName]];
		[mail setMessageBody:[NSString stringWithFormat:@&quot;\n\n\nIn order for us to better help you, please provide the following information:\nCountry: \n\nDebug info:\n%@ v %@\niOS version %@\nModel: %@&quot;,
							  kTWApplicationName,
							  [[[NSBundle mainBundle] infoDictionary] objectForKey:@&quot;CFBundleVersion&quot;],
							  [[UIDevice currentDevice] systemVersion],
							  [[UIDevice currentDevice] model]

							  ] isHTML:NO];

		//Present the mail view controller
		[self presentModalViewController:mail animated:YES];
	}

	//release the mail
	[mail release];
</pre>
<p>The  TWApplicationName is a constant that is set to the string value of the application name &#8211; this allows you to also see which application your user is asking about in case you have more than one app.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F01%2F22%2Fgetting-meaningful-device-information-for-iphone-app-support%2F&amp;title=Getting%20meaningful%20device%20information%20for%20iPhone%20app%20support" id="wpa2a_16"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/01/22/getting-meaningful-device-information-for-iphone-app-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to batch change volume of aif files</title>
		<link>http://blog.indieiphonedev.com/2011/01/15/how-to-batch-change-volume-of-aif-files/</link>
		<comments>http://blog.indieiphonedev.com/2011/01/15/how-to-batch-change-volume-of-aif-files/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 17:42:12 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[iPhone app]]></category>
		<category><![CDATA[sounds]]></category>
		<category><![CDATA[sox]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=265</guid>
		<description><![CDATA[After creating aif files that tells the distance of upto 100 miles in both miles and kilometers (around 50 individual files) I tested the distance announcement while playing music and found that the volume of all my files was too low.  Now I could go in and manually increase the volume on each file &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>After creating aif files that tells the distance of upto 100 miles in both miles and kilometers (around 50 individual files) I tested the distance announcement while playing music and found that the volume of all my files was too low.  Now I could go in and manually increase the volume on each file &#8211; but that would be a bit of a pain and possibly not very consistent.  Besides one of the things computers are good at is doing the same task over and over again.  So I looked for a software solution.  Luckily there is a great open source command line sound manipulation software called &lt;a href=&#8221;http://sox.sourceforge.net/&#8221;&gt;SOX&lt;/a&gt;.  This tool has a function for gain which lets you set the gain of any files in decibels (dB).</p>
<p>To run this program on all files in a folder run the following command from the terminal after copying the sox program to the folder:</p>
<pre class="brush: objc; title: ; notranslate">
for i in *.aif; do ./sox $i ${i%.*}.aiff gain -n 8; done;
</pre>
<p>In the instance above the original files are .aif and they were converted to have the file extension .aiff.  I tried to overwrite the original file &#8211; but that did not work well.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F01%2F15%2Fhow-to-batch-change-volume-of-aif-files%2F&amp;title=How%20to%20batch%20change%20volume%20of%20aif%20files" id="wpa2a_18"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/01/15/how-to-batch-change-volume-of-aif-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting the timezone on the device</title>
		<link>http://blog.indieiphonedev.com/2011/01/09/getting-the-timezone-on-the-device/</link>
		<comments>http://blog.indieiphonedev.com/2011/01/09/getting-the-timezone-on-the-device/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 20:02:41 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[iPhone app]]></category>
		<category><![CDATA[objective-C]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[timezone]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=258</guid>
		<description><![CDATA[Since the LogYourRun iPhone application will show you your running data in week and month views it is necessary to know the timezone of the user in order to bring up the data for the correct week/month. At first I thought I could use the NSDateFormatter to do this. The documentation says that you can [...]]]></description>
			<content:encoded><![CDATA[<p>Since the LogYourRun iPhone application will show you your running data in week and month views it is necessary to know the timezone of the user in order to bring up the data for the correct week/month.  At first I thought I could use the NSDateFormatter to do this.  The documentation says that you can get timezone informationby using %z or %Z as the format.  The %z should get you the offset in hours while the %Z should get you the name.  However when tested it turned out that the opposite is the case&#8230; </p>
<p>The following code gets you the timezone offset in hours:</p>
<pre class="brush: objc; title: ; notranslate">
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@&quot;Z&quot;]; // error in documentation - the zone in hours should be 'z' not 'Z'
timezoneoffset = (int) [[dateFormatter stringFromDate:[NSDate date]] intValue]/100;
DLog(@&quot;format %@&quot;, [dateFormatter stringFromDate:[NSDate date]]);
[dateFormatter release];
</pre>
<p>(Note the division by 100 is because the timezone is reported in military time so for 30 min offset the final timezone would be read as x.30 which is not really correct &#8211; but for getting a ballpark figure it would suffice).</p>
<p>Since the code is not behaving according to documentation it is not a good idea to use this to get the timezone because the code will break if the code ever starts behaving according to documentation.  </p>
<p>Instead it turns out that there is a very nice NSTimeZone object which will give you the timezone offset from GMT in seconds:</p>
<pre class="brush: objc; title: ; notranslate">
int timezoneoffset = ([[NSTimeZone systemTimeZone] secondsFromGMT] / 3600);
</pre>
<p>Then all you have to do to get the hour difference is divide by 3600 (seconds per hour).  If you cared about the half hour offsets you would make this a float &#8211; but this is plenty for getting a ballpark figure.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F01%2F09%2Fgetting-the-timezone-on-the-device%2F&amp;title=Getting%20the%20timezone%20on%20the%20device" id="wpa2a_20"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/01/09/getting-the-timezone-on-the-device/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

