<?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>Zac&#039;s Weblog &#187; iphone</title>
	<atom:link href="http://www.zacwhite.com/blog/category/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zacwhite.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 09 Jun 2010 23:31:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Think of the children!</title>
		<link>http://www.zacwhite.com/blog/2010/01/31/think-of-the-children/</link>
		<comments>http://www.zacwhite.com/blog/2010/01/31/think-of-the-children/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 21:12:29 +0000</pubDate>
		<dc:creator>Zac White</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[tronics]]></category>

		<guid isPermaLink="false">http://www.zacwhite.com/blog/?p=242</guid>
		<description><![CDATA[A couple of people have complained that a more consumer electronics based computing platform would be murder to the subculture that they belong to.
From al3x.net:

The thing that bothers me most about the iPad is this: if I had an iPad rather than a real computer as a kid, I’d never be a programmer today. I’d [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://diveintomark.org/archives/2010/01/29/tinkerers-sunset" onclick="pageTracker._trackPageview('/outgoing/diveintomark.org/archives/2010/01/29/tinkerers-sunset?referer=');">couple</a> of <a href="http://al3x.net/2010/01/28/ipad.html" onclick="pageTracker._trackPageview('/outgoing/al3x.net/2010/01/28/ipad.html?referer=');">people</a> have complained that a more consumer electronics based computing platform would be murder to the subculture that they belong to.</p>
<p>From al3x.net:</p>
<p>
<blockquote>The thing that bothers me most about the iPad is this: if I had an iPad rather than a real computer as a kid, I’d never be a programmer today. I’d never have had the ability to run whatever stupid, potentially harmful, hugely educational programs I could download or write. I wouldn’t have been able to fire up ResEdit and edit out the Mac startup sound so I could tinker on the computer at all hours without waking my parents. The iPad may be a boon to traditional eduction, insofar as it allows for multimedia textbooks and such, but in its current form, it’s a detriment to the sort of hacker culture that has propelled the digital economy.</p></blockquote>
<p>I&#8217;m a fairly young person, yet I realize these sentiments are shared in <strong>every</strong> generation. &#8220;My kids won&#8217;t have the same great experiences I had because of this new technology. They won&#8217;t know the joy of riding a horse on the open range because of this newfangled mechanical carriage!&#8221;</p>
<p>Your kids are going to have the wonderful experience of opening up an interactive textbook on their iPad and learning about how their cells work. Or tapping on a circuit design simulation application and dragging components into a circuit to create a ripple adder. Or posting to their virtual reality homebase that because of the new GenomeEditor 3000 (with presets!!), their kids aren&#8217;t going to have the fun of tinkering with their genome. So the &#8220;think of the children!&#8221; argument isn&#8217;t going to sway me. You can leave those up to <a href="http://www.thedailyshow.com/watch/tue-january-5-2010/even-better-than-the-real-thing" onclick="pageTracker._trackPageview('/outgoing/www.thedailyshow.com/watch/tue-january-5-2010/even-better-than-the-real-thing?referer=');">Fox News</a>.</p>
<p>The new paradigm of a simplified, consumer electronics computing experience isn&#8217;t going to catch on overnight. Look on the bright side though. By the time the only computers left are the ones abstracted away enough to where you can&#8217;t edit the startup sound, we&#8217;ll be retired or, fingers crossed, dead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zacwhite.com/blog/2010/01/31/think-of-the-children/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting User Data From a Lite to a Paid App</title>
		<link>http://www.zacwhite.com/blog/2009/10/15/getting-user-data-from-a-lite-to-a-paid-app/</link>
		<comments>http://www.zacwhite.com/blog/2009/10/15/getting-user-data-from-a-lite-to-a-paid-app/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 01:20:18 +0000</pubDate>
		<dc:creator>Zac White</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.zacwhite.com/blog/?p=182</guid>
		<description><![CDATA[It&#8217;s a common problem now on the App Store. User buys Lite version. User likes lite version. User buys the paid version and loses all of her/his data. Not a very good experience.
How can we fix this?
UIPasteboard of course!
Apple introduced an excellent and oft overlooked addition to the iPhone SDK when it gave developers the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a common problem now on the App Store. User buys Lite version. User likes lite version. User buys the paid version and loses all of her/his data. Not a very good experience.</p>
<p>How can we fix this?</p>
<p>UIPasteboard of course!</p>
<p>Apple introduced an excellent and oft overlooked addition to the iPhone SDK when it gave developers the same power that they have on the desktop for sharing large chunks of data between applications. But Zac, you say, you of all people should know you can&#8217;t <i>share</i> data between apps&#8230;they&#8217;re sandboxed! Not true! Think of UIPasteboard as those little paper airplanes you used to send notes in back in school. No sandbox can hold UIPasteboard&#8230;</p>
<h3>Method 1</h3>
<p>This first method is fairly straightforward and easy for small data sets: Keep custom pasteboard filled with data you&#8217;d want users to import into your paid app.</p>
<pre class="prettyprint">UIPasteboard *sharedPasteboard = [UIPasteboard pasteboardWithName:@"com.mydomain.myapplite.sharedpasteboard" create:YES];
sharedPasteboard.persistent = YES;</pre>
<p>By executing that on launch and keeping your sharedPasteboard up to date, you&#8217;ll always be able to request that from your paid app and auto-discover data from the lite version. The nicest thing about this method is most people <i>won&#8217;t notice</i> you did anything. Maybe you want users to notice your work&#8230;but sometimes the best features are the ones users don&#8217;t notice.</p>
<h3>Method 2</h3>
<p>This is for apps that have lots of content to put on the pasteboard and updating it all the time wouldn&#8217;t necessarily be so great. It&#8217;s a little weird but bear with me.</p>
<p>First, make sure you app can respond to the MyAppLite-export:// scheme. The parameters to this don&#8217;t really matter, but you could use them to specify some subset of data to export. You could also make this a little more generic and perhaps a little more secure by specifying a pasteboard name to the URL.</p>
<p>When MyAppLite is launched using this scheme, the users is presented with an &#8220;Exporting&#8230;&#8221; screen or something of the sort while MyAppLite puts everything requested on a special, one time use, pasteboard. After the pasteboard has been filled, MyAppLite opens MyApp-import://NAME_OF_PASTEBOARD. Now the paid app knows where to look to get all the necessary MyAppLite data off of the temporary pasteboard.</p>
<h3>Security Concerns</h3>
<p>Method 2 definitely has some security risks which possibly could be worked around. For one, if someone finds out your schemes they can read users data from a lite version and overwrite data in the paid version. With some obfuscated keys, this might not be much of an issue. Also, you wouldn&#8217;t want to send passwords or sensitive data using this method. That kind of data should be stored in the keychain anyway that is already available across your apps.</p>
<p>I hope this gives you some ideas on how to transfer data with UIPasteboard. I&#8217;ll try and post some sample code illustrating some of these concepts soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zacwhite.com/blog/2009/10/15/getting-user-data-from-a-lite-to-a-paid-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->