tag:blogger.com,1999:blog-83936579716243360932024-03-05T07:51:36.767-08:00Stormy Productions BlogProduct news and iPhone programming tips from Stormy ProductionsUnknownnoreply@blogger.comBlogger132125tag:blogger.com,1999:blog-8393657971624336093.post-48549917737635200722016-10-02T08:01:00.001-07:002016-10-02T08:01:15.447-07:00RadioKit with iOS 10 / XCode 8 supportThe current version of RadioKit (version 2.15.4) is compatible with iOS 10 and XCode 8. If you already have an existing license, the current lib file can be retrieved here:<br />
<a href="http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip">http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip</a><br />
<br />
The demos have been updated to XCode 8 and are available here:<br />
<ul style="font-family: Helvetica, Arial, Times; font-size: small;">
<li><a href="http://www.stormyprods.com/Demos/ios10/RadioKitDemo.zip" style="color: #1e7ec0; outline: none;">A simple utility app - http://www.stormyprods.com/Demos/ios10/RadioKitDemo.zip</a></li>
<li><a href="http://www.stormyprods.com/Demos/ios10/RadioKitListPlayer.zip" style="color: #1e7ec0; outline: none;">A simple list of stations player example using a table view - http://www.stormyprods.com/Demos/ios10/RadioKitListPlayer.zip</a></li>
<li><a href="http://www.stormyprods.com/Demos/ios10/RadioKitListPlayerUniversal.zip" style="color: #1e7ec0; outline: none;">A universal iPhone/iPad example using a list of stations in a table view - http://www.stormyprods.com/Demos/ios10/RadioKitListPlayerUniversal.zip</a></li>
</ul>
<div>
<span style="font-family: Helvetica, Arial, Times; font-size: x-small;"><br /></span></div>
Also, the Swift demo project has been updated to XCode 8 and Swift 3.0. It is available here:<br />
<a href="https://github.com/MostTornBrain/Swift-Radio-Pro/tree/RadioKit">https://github.com/MostTornBrain/Swift-Radio-Pro/tree/RadioKit</a><br />
<br />
If you notice any issues with iOS 10, please let me know.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-26568978409925832172016-09-17T19:44:00.000-07:002016-09-17T19:45:10.209-07:00Tunemark Radio - now free for the foreseeable futureTunemark Radio is now available for free on iTunes. Due to time constraints with other work, I do not see myself having the time to make a significant update release for this app, so I've decided to make it available for free.<br />
<div>
<br /></div>
<div>
It is still fully functional on iOS 10, however it hasn't been updated since the release of iOS 7.</div>
<div>
<br /></div>
<div>
If you've never used the app before, I still think it is a great option for accessing the SHOUTcast database of stations. And, it has NO banner ads.</div>
<div>
<br /></div>
<div>
You can get it here: <a href="https://itunes.apple.com/us/app/tunemark-radio/id325681153?mt=8&at=11l4Cd&ct=BLOG" style="background: url("https://linkmaker.itunes.apple.com/images/badges/en-us/badge_appstore-lrg.svg") no-repeat; display: inline-block; height: 40px; overflow: hidden; width: 165px;"></a></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-64597971383282494162015-10-11T07:52:00.005-07:002015-10-11T07:52:58.804-07:00Bitcode error when trying to archive a project using Xcode 7.0.1RadioKit has been updated to version 2.15.4. This is a simple rebuild of the library to correct an error Xcode 7.0.1 introduced when trying to "archive" a project that is linked with RadioKit:<br />
<br />
"libRadioKit.a(AudioStreamEngine.o) was built without full bitcode. All
object files and libraries for bitcode must be generated from Xcode
Archive or Install build for architecture armv7"<br />
<br />
Latest version can be downloaded here: <a href="http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip">http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip</a><br />
<br />
<br />
Sorry for the inconvenience.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-25537604058573722682015-10-10T22:23:00.002-07:002015-10-10T22:25:12.002-07:00RadioKit and SwiftGood news for those that are looking for an example of using <a href="http://stormyprods.com/products/radiokit.php">RadioKit</a> with Swift. <a href="http://matthewfecher.com/">Matthew Fecher</a> was kind enough to create a very nice Radio App using Swift 2.0 and he released it on GitHub. He was also kind enough to give me permission to use it for demonstrating RadioKit usage with Swift.<br />
<br />
Here is a link to the project: <a href="https://github.com/MostTornBrain/Swift-Radio-Pro/tree/RadioKit">https://github.com/MostTornBrain/Swift-Radio-Pro/tree/RadioKit</a><br />
<br />
This project demonstrates:<br />
<ul>
<li>Playing stations from a JSON list </li>
<li>Parsing the meta data of a live stream</li>
<li>Connecting to Live.FM to get album artwork for the currently playing song</li>
<li>Using the RadioKit rewind and fast forward features</li>
<li>Using the RadioKit buffer view to visualize where in the live stream playback is currently occurring</li>
</ul>
<div>
The sample project is a very good starting point for creating a professional radio app using Swift and RadioKit.</div>
<div>
<br /></div>
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-74117803803306509792015-10-10T16:07:00.004-07:002015-10-10T16:07:38.601-07:00RadioKit linker warnings related to precompiled headersIf you are seeing a lot of warnings with Xcode 7 related to linking with RadioKit, please downloaded an updated version of RadioKit (2.15.3). It corrects the issue. Xcode 7 apparently handles precompiled headers differently now in libraries and the way I was building the library was causing these warnings.<br />
<br />
Sorry for the confusion.<br />
<br />
Latest version of the RadioKit SDK can be found here:<br />
<br />
<a href="http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip">http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-49218575063926143002015-09-21T22:07:00.001-07:002015-09-21T22:10:17.053-07:00RadioKit and Apple TVFor anyone interested in making radio apps for the new Apple TV, I've created a beta version of RadioKit that is compatible with the current Apple TV beta (tvOS 9.0). Apple TV uses different library images than iOS, so I needed to create a separate RadioKit library specifically for Apple TV. You can't just use the existing iOS version of RadioKit - it is not binary compatible with Apple TV.<br />
<br />
If you want to try it out, the library is here:<br />
<br />
<a href="http://www.stormyprods.com/Libs/RadioKitAppleTv.zip">http://www.stormyprods.com/Libs/RadioKitAppleTv.zip</a><br />
<br />
It uses the same API methods and names as the version of RadioKit for iOS.<br />
<br />
I am currently working on putting together a sample Xcode project for Apple TV which demonstrates using the SDK. I'll followup once I have it complete.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-49651678478172170082015-09-16T18:57:00.002-07:002015-09-16T18:57:59.863-07:00RadioKit and Xcode 7 and iOS 9Good news! The latest version of RadioKit (2.15.2) is compatible with Xcode 7 and iOS 9. Previously built apps that use an older version of RadioKit do NOT need to be updated (they should continue to work just fine), however if you are building a new app,or creating an update to an existing app, it is recommended that you download the latest version of RadioKit: <br />
<br />
<a href="http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip">http://www.stormyprods.com/Libs/RadioKitLib-XCode7.zip</a><br />
<br />
This version of the SDK is compiled with ENABLE_BITCODE support for iOS 9 app trimming.<br />
<br />
Also, as of iOS 9, any new app or app update compiled for iOS 9 that makes an HTTP or HTTPS connection needs to explicitly allow the destination address via settings in the app's info.plist. If you do not edit your info.plist with the necessary information, your app will not be able to play any remote audio streams.<br />
<br />
For more details, refer to this Apple tech note:<br />
<br />
<a href="https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/">https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/</a><br />
<br />
If you are creating a generic radio player that will connect to arbitrary streams, you will need to set NSAllowsArbitraryLoads to YES in your NSAppTransportSecurity dictionary in your app's info.plist.<br />
If you are connecting to just one stream, you can instead enable access to just that URL.<br />
<br />
The RadioKit demos have been updated with this information as well. For more information see:<br />
<br />
<a href="http://www.stormyprods.com/products/radiokit.php">http://www.stormyprods.com/products/radiokit.php</a><br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-76617237186783900812015-06-12T05:05:00.001-07:002015-06-12T05:05:16.365-07:00RadioKit and 64-bit supportAs of February of 2015, Apple now requires all apps submitted for review (including updates to old apps) provide support for 64-bit.<br />
<br />
If you are using an older version of RadioKit, you may receive the following error when building your app:<br />
<br />
<div class="">
<div class="" style="font-family: Menlo; font-size: 11px; margin: 0px 0px 0px 12px; text-indent: -12px;">
Undefined symbols for architecture x86_64:</div>
<div class="" style="font-family: Menlo; font-size: 11px; margin: 0px 0px 0px 12px; text-indent: -12px;">
"_OBJC_CLASS_$_RadioKit", referenced from:</div>
<div class="" style="font-family: Menlo; font-size: 11px; margin: 0px 0px 0px 12px; text-indent: -12px;">
objc-class-ref in AraRadioAppDelegate.o</div>
<div class="" style="font-family: Menlo; font-size: 11px; margin: 0px 0px 0px 12px; text-indent: -12px;">
ld: symbol(s) not found for architecture x86_64</div>
<div class="" style="font-family: Menlo; font-size: 11px; margin: 0px 0px 0px 12px; text-indent: -12px;">
<br /></div>
</div>
If you are receiving this error, all you need to do if update your app project to use the latest version of the RadioKit library. It can be found here free of charge:<br />
<br />
<a class="moz-txt-link-freetext" href="http://www.stormyprods.com/Libs/RadioKitLib-XCode5.zip">http://www.stormyprods.com/Libs/RadioKitLib-XCode5.zip</a><br />
<br />
Simply replace the RadioKitLib in your project with these new files and your project should build without any issues.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-83884784098477534512015-05-15T17:07:00.002-07:002015-05-15T17:07:09.693-07:00RadioKit and iOS 8Just a quick update: the existing version of RadioKit continues to work fine with iOS 8. All the sample projects have been updated to work with the latest version of Xcode.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-12120935687083079372013-09-25T05:23:00.001-07:002013-09-25T05:26:26.395-07:00RadioKit and iOS 7 supportGood news for all existing <a href="http://stormyprods.com/products/radiokit.php">RadioKit SDK</a> license holders: the current version of the RadioKit SDK works fine with iOS 7 as-is, so unless you want to make other iOS 7-related changes due to other features of your app, your existing apps should continue to work just fine.<br />
<br />
For anyone just getting started with RadioKit, I have put together a simple iOS 7 / Xcode 5 demo project which can be found here: <a href="http://www.stormyprods.com/Demos/ios7/RadioKitDemo.zip">An XCode 5 (iOS 7) utility app - http://www.stormyprods.com/Demos/ios7/RadioKitDemo.zip</a><br />
<br />
If you just want to grab the most up-to-date RadioKit SDK (version 2.6.2), you can get it here: <a href="http://www.stormyprods.com/Libs/RadioKitLib-XCode4.5.zip">http://www.stormyprods.com/Libs/RadioKitLib-XCode4.5.zip</a><br />
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-13867980800655868562012-11-21T21:18:00.000-08:002012-11-21T22:30:18.151-08:00Tunemark Radio with Improved VisualizationThanks to a new feature of iOS 6, I will be adding significantly improved audio visualization features to <span style="text-decoration: underline;"><a href="http://www.stormyprods.com/products/tunemark_radio.php">Tunemark Radio</a></span>. Specifically, I am referring to Audio Queue taps, which Apple mentions in their iOS 6 SDK release note, but provide no documentation at all, other than comments in the AudioQueue.h file. If you are looking for the technical details, search for <span style="font-size: 15pt; color: rgb(36,112,141);">AudioQueueProcessingTapCallback </span>in the AudioQueue.h file. I’ll write up a more detailed description of how it can all be used, along with the hooks I added to RadioKit to support it, in a future post.<br /><br />Anyhow, once you get over the hurdle of the lack of documentation, you can do some pretty nice things with an Audio Queue Tap. It provides a way to get the raw PCM audio right before it is played, perform adjustments to the audio (apply echo effects, etc.) or just monitor the audio for visualizations.<br /><br />In my case, I’m interested in using it for adding better visualizations to Tunemark Radio. Since Tunemark Radio is playing Internet radio station streams, it is generally dealing with MP3 or AAC audio, which is in a compressed format and short of implementing your own MP3 or AAC decoder, there’s no easy non-CPU intensive method to get actual waveforms. Instead, in the past I had to resort to just querying the audio queue gain (i.e volume) information and do some rudimentary visualizations with that.<br /><br />Now that I have real-time access to the raw audio waveforms thanks to the Audio Queue tap, I can do more more dynamic and responsive visualizations. The first one I’ll be adding (which will be available in the next upcoming Tunemark Radio update) is a waveform visualizer. It will look something like this, although it’s a lot more engaging when it’s actually moving:<br /><br /><p style="text-align: left"><img src="http://stormyprods.com/blog/ScreenShot2012-11-22at1.25.12AM-2012-11-22-00-18.png" alt="ScreenShot2012-11-22at1.25.12AM-2012-11-22-00-18.png" width="370" height="217" /></p><br /><br />Basically, the waveform will move in time to the music.<br /><br />Future updates will include more dynamic visualizers that have various visual effects based on different frequency changes (such as part of an image changing based on bass notes and another part changing based on high frequency notes).<br /><br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-32773588387314023362012-09-15T17:08:00.000-07:002012-09-15T17:35:47.796-07:00RadioKit for iOS 6A version of the RadioKit SDK is now available with support for XCode 4.5 and iOS 6. If you already have an app using RadioKit and are just looking for the library so you can target the new iPhone 5, the library can be found here:<br>
<br>
<a href="http://stormyprods.com/Libs/RadioKitLib-XCode4.5.zip">http://stormyprods.com/Libs/RadioKitLib-XCode4.5.zip</a>
<br><br>
If you would like a full XCode 4.5, iOS 6 demo project, it can be found here:
<br><br>
<a href="http://stormyprods.com/Demos/RadioKitARC-4.5-Demo.zip">http://stormyprods.com/Demos/RadioKitARC-4.5-Demo.zip</a>
<br><br>
Full details about the RadioKit SDK can be found here:
<br><br>
<a href="http://stormyprods.com/products/radiokit.php">http://www.stormyprods.com/products/radiokit.php</a>
<br><br>
<b>Please note:</b> with XCode 4.5, Apple has removed support for armv6 and will only allow builds targeting iOS 4.3 and higher. So, if you still have projects targeting armv6, or want to use XCode 4.4 or lower, you will want to use the older RadioKit library.
<br><br>
Also note that existing apps already using an earlier version of RadioKit will work just fine under iOS 6 as-is. You only need to get this new update if you specifically want to build an app using RadioKit and XCode 4.5.
<br><br>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-55052591022582075322012-07-27T22:48:00.000-07:002012-07-27T23:11:48.884-07:00RadioKit SDK, now with Recording!<div style="text-align: left;">
I'm happy to announce the RadioKit™ SDK for iOS now includes an API for recording the audio from a stream.</div>
<div style="text-align: left;">
Here's a simple example demonstrating the API’s syntax:</div>
<div style="text-align: left;">
<span style="color: #5c2699; font-size: 11pt;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #5c2699; font-size: 11pt;">NSString</span> <span style="font-size: 11pt;">*filename = [</span><span style="color: #2e0d6e; font-size: 11pt;">NSHomeDirectory</span><span style="font-size: 11pt;">() </span><span style="color: #2e0d6e; font-size: 11pt;">stringByAppendingPathComponent</span><span style="font-size: 11pt;">:</span><span style="color: #c41a16; font-size: 11pt;">@"tmp/test.audio"</span><span style="font-size: 11pt;">];</span></div>
<div style="text-align: left;">
<span style="font-size: 11pt;">[</span><span style="color: #3f6e74; font-size: 11pt;">radioKit</span> <span style="font-size: 11pt;"></span><span style="color: #26474b; font-size: 11pt;">startRecording</span><span style="font-size: 11pt;">:filename </span><span style="color: #26474b; font-size: 11pt;">appendToFile</span><span style="font-size: 11pt;">:</span><span style="color: #aa0d91; font-size: 11pt;">NO</span><span style="font-size: 11pt;">];</span></div>
<span style="font-size: 11pt;">[</span><span style="color: #3f6e74; font-size: 11pt;">radioKit</span> <span style="font-size: 11pt;"></span><span style="color: #26474b; font-size: 11pt;">setStreamUrl</span><span style="font-size: 11pt;">:</span><span style="color: #c41a16; font-size: 11pt;">@“http://enteryourstreamhere.pls”</span> <span style="font-size: 11pt;"></span><span style="color: #26474b; font-size: 11pt;">isFile</span><span style="font-size: 11pt;">:</span><span style="color: #aa0d91; font-size: 11pt;">NO</span><span style="font-size: 11pt;">];</span>
<br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">And when you want to stop recording:</div>
<div style="text-align: left;">
<span style="font-size: 11pt;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: 11pt;">[</span><span style="color: #3f6e74; font-size: 11pt;">radioKit</span> <span style="font-size: 11pt;"></span><span style="color: #26474b; font-size: 11pt;">stopRecording</span><span style="font-size: 11pt;">];</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Then, you can simply play back the saved file at a later time via the RadioKit local-file playback support:</div>
<br />
<div style="text-align: left;">
<span style="font-size: 11pt;">[</span><span style="color: #3f6e74; font-size: 11pt;">radioKit</span> <span style="font-size: 11pt;"></span><span style="color: #26474b; font-size: 11pt;">playLocalFile</span><span style="font-size: 11pt;">:filename];</span></div>
<br />
<div style="text-align: left;">
It’s that simple.</div>
<br />
<div style="text-align: left;">
To read more about all the features of the RadioKit SDK and how it greatly simplifies the process of creating a full-featured iOS radio app, check out <a href="http://www.stormyprods.com/products/radiokit.php">http://www.stormyprods.com/products/radiokit.php</a></div>
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-56972666594888628362012-03-12T19:02:00.000-07:002012-03-12T19:02:16.373-07:00The <a href="http://stormyprods.com/alife">2.2.1 Artificial Life</a> update for iPhone/iPod Touch that was recently released contains a bug which causes the screen to flicker terribly when you have a protozoa selected and you are using a non-retina display device, such as iPhone 3GS or older.
I've located the cause of the problem and it is now pending review with Apple. Hopefully it will be available for download about a week from today.
NOTE: this problem does not occur on the Artificial Life HD (i.e. iPad) version.
Sorry for the inconvenience.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-34998826378740612892011-03-13T12:24:00.000-07:002011-03-21T19:30:33.297-07:00Japan Disaster Relief<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqWEHTxWNKEltVknOSOg0whV0rjpSISod0cHcnrxdgo3XYOTQvDp9cDT5uU-Gko_t22sfR0Ti-frCKPFOdQlNebaQv_pnohBY48MVCPvTirIQcvQIR3P7VFTJWd32FiwznuPeZCv0LaUc/s1600/512x512-round.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqWEHTxWNKEltVknOSOg0whV0rjpSISod0cHcnrxdgo3XYOTQvDp9cDT5uU-Gko_t22sfR0Ti-frCKPFOdQlNebaQv_pnohBY48MVCPvTirIQcvQIR3P7VFTJWd32FiwznuPeZCv0LaUc/s200/512x512-round.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5583649707506489058" /></a><br />All proceeds from the sales of the <a href="http://itunes.apple.com/us/app/tunemark-radio/id325681153?mt=8">Tunemark Radio app</a> between March 12th and March 20th will be donated to the <a href="http://www.redcross.org/portal/site/en/menuitem.94aae335470e233f6cf911df43181aa0/?vgnextoid=bfc13a56d35ae210VgnVCM10000089f0870aRCRD">Red Cross</a> and <a href="https://donate.salvationarmyusa.org/site/c.tvI3IeNUJsE/b.5760419/k.2CB3/Donate_Now/apps/ka/sd/donor.asp?c=tvI3IeNUJsE&b=5760419&en=5oIzGIMjG4LIKSOmH3KFKPMxEoKRLXOxEdKFLRNAIkLRK1NIG">Salvation Army</a> for the disaster relief efforts in Japan.<br /><br />If you prefer to make a direct donation to the relief efforts, Apple has set up a way for you to do it via iTunes <a href="https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/buyCharityGiftWizard">here</a>.<br /><br /><b>3/21/2011 UPDATE:</b> Thanks for all the support! Over $620 was donated to the Japanese Red Cross Society and The Salvation Army from Tunemark Radio app sales.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-60400985944972085832011-03-08T18:50:00.000-08:002011-03-08T19:04:56.019-08:00Tunemark Radio 2.1 - the iPad updateMuch to my disappointment, I accidentally introduced a bug into the 2.0 version of Tunemark Radio, causing the app to crash on launch on devices running iOS 3.x. Thankfully, Apple let me put through a rush update to fix the problem, so the new 2.0.1 version now available on iTunes fixes the problem for those people with an iPhone or iPod Touch running iOS 3.x.<br /><br />Unfortunately, I hadn't realized the same bug also existed on any iPad that is still running iOS 3.x. and the 2.0.1 update does not fix that bug. <br /><br />I had been in the process of creating an improved version of Tunemark for the iPad, and had it nearly complete this weekend when I started receiving reports of the iPad 3.x problem, so I decided to roll the new iPad look for the app into this bug fix update.<br /><br />So, yet another update is now pending review with Apple, this time addressing the problem for those with an iPad running iOS 3.x., but also with the bonus of (in my opinion) a much better UI for iPad. Here's a screenshot showing how it will look on iPad:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsSqUFHo1GM8pj1aBLnEFp-raWb3oIpIjnXKBN6hT8oZI6FQGjLPUdGTT_aWrBhXl9r_YVRP_SzJAt53cIqZXrmjhl138Dwla3O4Gd8a8llg45NTNGhcNlTE56xcslpRJX-h4-v95T8hc/s1600/IMG_0092.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsSqUFHo1GM8pj1aBLnEFp-raWb3oIpIjnXKBN6hT8oZI6FQGjLPUdGTT_aWrBhXl9r_YVRP_SzJAt53cIqZXrmjhl138Dwla3O4Gd8a8llg45NTNGhcNlTE56xcslpRJX-h4-v95T8hc/s400/IMG_0092.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5581909259287049922" /></a><br /><br />Hopefully you will agree this is a much better look than what is currently Tunemark Radio on the iPad. <br /><br />And in case anyone was curious what country-western music looks like in Japanese, here's another screenshot:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9lE-_HsGf6UgtOSymJgv8DevD7vJ3HJ-JPJiD6pVjZQxp2h1Fmih2kgMFe033_CI3KameJLWuPW_V4nc2qvDM-QUpnMwP_WQhU5cWdxXPy4o5ceKV29nlhtAtiy80HXGFrfLLjPy8L2c/s1600/IMG_0100.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9lE-_HsGf6UgtOSymJgv8DevD7vJ3HJ-JPJiD6pVjZQxp2h1Fmih2kgMFe033_CI3KameJLWuPW_V4nc2qvDM-QUpnMwP_WQhU5cWdxXPy4o5ceKV29nlhtAtiy80HXGFrfLLjPy8L2c/s400/IMG_0100.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5581909928985734242" /></a><br /><br /><i>You can tap on either image for an iPad-sized version of the screenshot.</i>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-40047478219836849592011-03-01T19:26:00.000-08:002011-03-01T19:37:53.272-08:00Tunemark Radio 2.0 now available!<br /><a href="http://tunemark.com">Tunemark Radio</a> 2.0 is now available on iTunes for 99 cents. This latest updated adds a few new features:<br /><br />1) Album artwork and artist information is now available via <a href="http://last.fm">last.fm</a>. If last.fm has any information about the current playing song, a “last.fm” button will appear allowing you to view the content provided by last.fm. Also the album artwork (if available) will automatically be displayed on the “Now Playing” screen.<br /><br /><br /><img src="http://stormyprods.com/blog/IMG_0621-2011-03-1-22-26.PNG" alt="IMG_0621-2011-03-1-22-26.PNG" width="250" height="375" /><br /><br />If you prefer to only have your own custom background image displayed, don’t worry. There is an option in the settings to disable album artwork.<br /><br />2) The switching of stations should be noticeably faster. I discovered I had a minor inefficiency in the transition which caused a noticeable lag when starting playback of a new station.<br /><br />3) If you are a Japanese user of the app and were disappointed that you lost all the “cool” English text when I recently added Japanese language support, I listened to your complaints. Via the settings, you now have an option to force the app to use English only. Please note, this will require that you either force-quit the app or reboot your device after choosing this setting.<br /><br /><img src="http://stormyprods.com/blog/IMG_0628-2011-03-1-22-26.PNG" alt="IMG_0628-2011-03-1-22-26.PNG" width="232" height="348" />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-86565584668219890522011-01-12T18:46:00.001-08:002011-01-12T19:34:08.211-08:00Apple's New Policy on Single-Station iPhone Radio AppsBack in November there was a a bit of stir in the radio community regarding one developer's claim that Apple was no longer allowing single-station radio apps. The article found <a href="http://www.theregister.co.uk/2010/11/24/apple_rejects_single_station_iphone_radio_apps/">here</a> gives a decent summary of the story. The final conclusion was Apple hadn't changed their policy, but instead it was just this one developer's approach to making "template-based apps" that was the problem. Apple was even quoted as saying: "There are many unique radio apps on the App Store and we look forward to approving many more. One developer has attempted to spam the app store with hundreds of variations of essentially the same radio app and that is against our guidelines."<br /><br />So, at the time of the article, the general thought was if you develop custom radio apps, and don't have them with little content other than playing an audio stream, then you should be OK. It turns out, this answer is true, but with one important caveat: <b>Apple is now requiring any new single-station radio apps be hosted under the radio station's own developer account.</b><br /><br />I ran into this new policy two days ago when I received a rejection for a new single-station app. The text of the rejection was a bit alarming to me when I first read it:<br /><br /><blockquote>"We've completed the review of your apps[sic], however, we are unable to post them[sic] to the App Store because they provide the same feature set as your existing radios apps and simply vary the content. Apps that replicate functionality with different content create clutter in the App Store, hindering users' ability to find apps. They are therefore not appropriate for the App Store, as noted in the App Store Review Guidelines <https://developer.apple.com/appstore/resources/approval/guidelines.html>: <br /><br /> 2.20 Developers 'spamming' the App Store with many versions of similar apps will be removed from the iOS Developer Program"</blockquote><br /><br />First, I only submitted one app, but the text implied I had submitted several. Also, the claim I was "spamming" the app store seemed extreme - every radio station app I've developed is commissioned (i.e. paid for) by the radio station and is completely customized per the radio station instructions. Granted, some of the apps are similar to others, but this is because it is common for one radio station to say something along the lines of, "I want an app just like the one you did for station X." From the radio station's point of view, it's all about getting their brand onto the iPhone - they want their listeners to be able to have easy access to their station, and having an app in the iTunes App Store is one way to do that.<br /><br />Based on the text of Apple's rejection email, it seemed a bit doom and gloom for the single-station radio app. I quickly sent off an email to Apple requesting some clarification about the rejection, outlining the reasons why I thought single-station radio apps are not "spam" and asking Apple for some clarification. <br /><br />Today I spoke with someone from Apple on the phone and got the needed clarification. Apple is no longer allowing developers to host large numbers of single-station radio apps under their own account. Instead, they are requiring the station to apply for their own developer account and host the app themselves under their account.<br /><br />I can see why this makes sense for Apple. Most single-station radio apps are free. Apple makes zero money on them. Best case, they get a bit of free advertising for the iPhone platform from the radio stations when the station says, "Download our free iPhone app" on-air. Now, Apple will instead be making $100/year on each new single-station radio app.<br /><br />Financially, from Apple's point of view, this change of policy makes sense. For us developers, it's not too big a deal - we'll just have to do a bit more hand-holding with the stations to help them set up their developer account and upload their apps. For a radio station, there's now going to be an increased cost for an app ($100/year), but really that's a not a huge amount of money.<br /><br />The only part that doesn't make sense to me, is this goes directly against Apple's original explanation for why the app was rejected in the first place. They said single station apps "create clutter in the App Store, hindering users' ability to find apps", but this change in policy is not going to reduce the number of single-station apps. They're just going to be hosted under different developer names. But, since Apple reserves the right to reject an app for any reason, I suppose it's a moot point. Their reasoning doesn't have to make sense - we developers just have to do what they say. <br /><br />The good news for radio stations is they will still be allowed to have their own custom apps.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-58950294180700639212010-12-14T19:47:00.000-08:002010-12-15T07:23:43.206-08:00Switching an iPhone app from Free to Paid - postmortumA little more than a year ago, I created a free iPhone app called <a href="http://tunemark.com">Tunemark Radio</a>. After more than a year of being a free download (with no banner ads), I decided to see how the app would fare if I switched it to a 99 cent app. It has now spent 2 months as a paid app and I detail the results in this post. <br /><br /><strong>Background</strong><br /><br />Tunemark Radio is, as the name implies, and Internet radio stream playing app. It includes support for browsing and playing all the stations in the SHOUTcast database (over 30,000 of them!) as well as the entry of custom URLs for any mp3 or AAC stream you might happen to have which isn’t in the SHOUTcast database. The “tunemark” part of the name was intended as a play-on-words for bookmark, but applied to music. The app supports the concept of “tunemarking” songs that are playing - you can save the artist/title info to a list for later reference, look for it to purchase on iTunes, send the song info via email, share it on Facebook, Twitter, or Last.fm.<br /><br />When I originally released the app, it did not included all of the features it includes today. The initial release was pretty barebones. I figured I’d release the app for free, hoping it would be good publicity for my iPhone app development business. I had a focus on developing iPhone apps for radio stations and thought this app might be a decent demonstration vehicle for future clients. They could see whether they liked the performance of the audio streaming code I wrote, and even would be able to enter the URL for their own station to test how their audio stream would behave in their own custom app.<br /><br />Over time, I added more and more features (a music visualizer, iPad support, the social sharing aspects for Facebook/Twitter, and Last.fm scrobbling support are some examples). Even though the app was free, I also vowed to never have any ad banners. As the app matured, I began to get occasional email messages and app reviews on iTunes where someone would say something like “I can’t believe this app is free!”. But still, since the app had evolved over time, I still thought of it not having enough features to justify a paid price.<br /><br />Even though the app was free, the download numbers were fairly modest - for the first 3 months, the average download was about 150 copies per day. Then, after the Christmas bonanza of new iDevice owners, average downloads increased to about 250 copies per day for the next several months. Slowly, the app was gaining in downloads, perhaps as a result of the iPhone user base itself growing. After the first 6 months, average downloads had climbed to 500 per day and were still climbing. <br /><br />Then, in late July 2010, Tunemark Radio was <a href="http://blog.stormyprods.com/2010/07/apple-currently-featuring-radio-apps.html">featured in a special Radio Apps category on iTunes</a>. This initially caused daily download numbers to more than double. The Radio Apps category was on the iTunes desktop app, on the iPhone, as well as on the iPad. After about a month, Apple revised the iPhone Radio Apps category and cut the number of apps featured down from 30+ to 17, and unfortunately Tunemark was dropped from the iPhone special feature. It was, however, still featured in the shortlist of 11 Radio Apps for the iPad.<br /><br />Tunemark continued to be available for free, and after a couple of months of the Radio Apps category hanging around in iTunes special features for iPad, the average downloads for Tunemark had appeared to be fairly steady at 700 copies per day. About a month later, as the special Radio Apps category migrated to the end of the list of special features, the downloads were slowly falling. By mid-October, the download average was closer to 500 copies per day and was still falling.<br /><br /><strong>The Switch to a Paid App<br /></strong><br />It is at this point in time, after getting a few more “I can’t believe this app is free” messages, I decided to switch Tunemark to a paid 99 cent app. I was mainly curious what would happen. Daily downloads as a free app were falling anyhow. How much would daily sales drop as a paid app? Surprisingly, for an app which had been free already for a year, the numbers weren’t too bad, as can be seen by the following graph. <br /><br /><br /><img src="http://stormyprods.com/blog/PastedGraphic-2010-12-14-22-47.tiff" alt="PastedGraphic-2010-12-14-22-47.tiff" width="352" height="347" /><br />Initially after the switch from free to paid, the daily downloads dropped from about 500 to 100. I found this number surprisingly good. The day after setting the 99 cent price, I had feared I’d be seeing a number more like 10 downloads on the following day. Seeing the numbers drop to 20% of the free numbers was OK with me. Sure, an 80% reduction in sales is significant, but 100 paid sales per day is still pretty good.<br /><br />Granted, the app did still have an artificial boost of being featured in the Radio Apps feature which appeared on iTunes for the iPad. That feature was finally rotated out of iTunes by Apple in mid-November as can be seen by the drop in numbers in the graph. But still, the drop was not as dramatic as I had feared and for an app now with absolutely no advertising, averaging more than 60 downloads per day, after having been available for free for a year, they seem like good numbers to me. <br /><br /><strong>The Paid Effect on Ranking</strong><br /><br />What I found especially interesting was as a paid app, Tunemark Radio ranked far higher in the Music category than it ever did as a free app. You can see this with the following graph from <a href="http://AppAnnie.com">AppAnnie.com</a>: <br /><img src="http://stormyprods.com/blog/Safari1-2010-12-14-22-47.png" alt="Safari1-2010-12-14-22-47.png" width="784" height="396" /><br /><br />As a free app, it was ranked around 200 in the music category. When it switched to a paid app, there were a few days initially where the app had no rank, since you do not carry over your sales or ranking info when switching from free to paid. After 2 days of sales at 99 cents, it began to appear in the paid rankings and quickly climbed within the top 100 paid music apps.<br /><br />Best I can tell, the <em>free</em> music app category is much more competitive than the <em>paid</em> app music category. Is this true for all app categories in iTunes? Unfortunately, I have no definitive answer. I suspect that would be the case, but it could be a unique situation with the music category. Perhaps someone else can shed some light on this.<br /><br />Another interesting data point in the above graph is in late November, a day after I posted a new update of Tunemark on iTunes, the app was cracked and posted to various app pirate sites and there were several tweets made with a link to the cracked ipa. As far as sales go, app downloads dropped 36% that day. While sales recovered the following day, the app had the most dramatic ranking drop ever. I can’t really tell for sure if this is a direct cause of the app piracy, but it is suspicious. It was also the day before Thanksgiving here in the US, but this graph is showing app ranking, not sales, so if app downloads in general on iTunes were reduced around Thanksgiving, I would have suspected all apps would maintain their relative rankings.<br /><br /><strong>The Paid Effect on App Ratings</strong><br /><br />One other benefit of switching from free to paid is the quality of app reviews. For the prior year, as was the case with most free apps, Tunemark Radio had an average rating of 3 stars. The vast majority of written reviews were 4 or 5 stars, however there were plenty of ratings that were 1 star, mainly due to the pre-iOS 4 feature of “rate-on-delete”. After switching to a paid app, the app’s average rating is now 4.5 stars with its most recent update from a few weeks ago. It has 17 five star reviews, 2 four star reviews, and only 1 one star review. <br /><br /><strong>Conclusion</strong><br /><br />Overall, I can’t really think of any negative from switching from a free to paid app. When the app was free and was bringing in no income (other than a few iTunes referral commissions), it was not practical to be spending money on the development of the app. I was happy to spend some of my own free time, but I couldn’t justify the cost of paying “real” money to make other improvements to an app that was essentially a hobby. <br /><br />Now that the app is earning decent daily income it will help justify spending more time on future feature enhancements. There are a lot of new features I have on the wish list and these features will require some significant code writing in the coming months. I also hope to at some point hire a graphic artist to improve the look of the app. I am not a designer, and the user interface for the app could be greatly improved. And finally, even though the app is only available in English, it has been surprisingly popular Japan. I hope to pay someone to assist with a Japanese language localization of the app, and perhaps some other languages.<br /><br />I’ll be sure to follow up this post with more analysis of how the app does in the coming year.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-13533898509198315382010-08-23T10:20:00.000-07:002010-08-23T11:26:10.508-07:00iPhone App Piracy - a direct noticeable affect on niche market app salesI've had a niche market app, called <a href="http://stormyprods.com/alife">Artificial Life</a>, for sale in the iTunes app store for over a year now. As the name implies, it's a simulation of <a href="http://en.wikipedia.org/wiki/Artificial_life">artificial life</a>. Given the subject matter of the app, I never expected to make a lot of money from it. There's a limited audience of the type of people who find the topic interesting (mainly tech people), and a smaller number who own iPhones and would enjoy watching such a sim on their phone.<br /><br />But, there was a small niche market, and those who used the app tended to use it on average for about 45 minutes per day! The app had been slowly gaining sales over the past year increasing from single digit daily sales to over 20 sales per day. Then, back on April 18th, the app was cracked by pirates and was posted on a web site for jailbreak users to download for free. <br /><br />I discovered this piracy when a saw a huge spike in app usage (via Google Analytics stats). The stats showed an increase in app usage by about 13 times the normal usage in just one day (over 3200 daily users vs. the previous days average of about 250).<br /><br />At first, I assumed this would have a negligible effect on my daily apps sales - I was only selling 20+ copies a day and general wisdom say says the piracy numbers are people who would never buy your app in the first place anyhow. Well, sad to say, several months later I can say this general wisdom appears to be wrong, at least for my market.<br /><br />Here's the graph of daily sales for the past year (you can click on the image for a larger view):<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPTC-wn_svszQYnaV3Xs1R_cy4ANtTk_Lg08XqgTClGFiLptdaNYWco2ZAFXQZ16VRn5At18rPVLtdUUJVeJ1MPaOcL08d6GFzYkDj83iWH27aP7c_Hhde8fgDW594ifxU_c1n7o1w1zI/s1600/LittleSnapper1.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 97px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPTC-wn_svszQYnaV3Xs1R_cy4ANtTk_Lg08XqgTClGFiLptdaNYWco2ZAFXQZ16VRn5At18rPVLtdUUJVeJ1MPaOcL08d6GFzYkDj83iWH27aP7c_Hhde8fgDW594ifxU_c1n7o1w1zI/s400/LittleSnapper1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5508661744719459890" /></a><br /><br />The red line denotes when the app was first cracked and posted on a pirate website. As can be seen, app sales had been steadily climbing, however shortly after the app was cracked app sales began to decline and now are back to single digits for daily sales. It could be coincidence, but it does seem fairly compelling that a couple weeks after the app was pirated, the sales for the app were more than cut in half. <br /><br />One other interesting point that can be observed from the graph: Up until early April, the app included anti-piracy code to try to make the app a bit more difficult to crack. When I published an app update in early April, I discovered I had introduced a critical bug which was causing a false positive for the piracy detection on some devices. I immediately pulled the app from the store to prevent any existing customers from getting the new update and I was able to get Apple to push through an emergency bug fix the next day. This can be seen in the graph when there was one day in early April with zero sales. Because I wanted to get the bug fix out as quickly as possible, I simply disabled the piracy detection. <br /><br />Much to my dismay, it only took a week for someone to then pirate this new app update since it no longer included any anti-piracy measures. And then a few more weeks and daily sales were cut in half. And the rest is history.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-20917185718007565672010-07-24T08:16:00.000-07:002010-07-24T08:56:03.190-07:00Apple currently featuring "radio apps" and Stormy Productions has a strong presence on the listI was pleasantly surprised this morning to discover Apple currently has a list of featured radio apps on the iTunes store, and Stormy Productions was involved in the creation of 10% of those apps.<br /><br />There are two lists, one for iPhone apps and one for iPad apps.<br /><br />The <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewRoom?fcId=383917288&id=25204&mt=8">iPhone list</a> contains 30 apps, and I've had a hand in the creation of 4 of those apps. Specifically, I wrote all the code for both the Tunemark Radio and JAZZ.FM apps. I also wrote all the radio streaming code and the "now playing" portion of the user interface code for the Public Radio App. And finally, I wrote the radio streaming code used by the PRI app. (<a href="http://photoaperture.com/blog/">A good friend of mine</a> wrote the rest of the code for the PRI app - congrats Rob!).<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHJyjwRtLJiTJjnghJGv4fnn4JUSZNMivHSh4-YoGaAaCNSobJWJTrqeRSzgbGe_GsHaF2OQmFaNuCSe8xv1OcVCUtY8FUEPnUi2fE_aqyE76e7baeSWjvVmJNNfaoyyN7vFCU8S7m9-Q/s1600/iTunesRadioApps-iPhone.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 392px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHJyjwRtLJiTJjnghJGv4fnn4JUSZNMivHSh4-YoGaAaCNSobJWJTrqeRSzgbGe_GsHaF2OQmFaNuCSe8xv1OcVCUtY8FUEPnUi2fE_aqyE76e7baeSWjvVmJNNfaoyyN7vFCU8S7m9-Q/s400/iTunesRadioApps-iPhone.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5497496109210776706" /></a><br /><br />For the <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewRoom?fcId=383917570&id=25204&mt=8">iPad list of featured radio apps</a> there are only 11 apps listed, and Tunemark Radio is one of them!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzqF7N2Zrzz3tR9eVIf_4D3Db64C0-wYINQ45FhXpH0uL3RxQUUVk2VYc-pjQs8qKR9ej37z6bgJLbtv1f26H1Nt2lvaxUqSfMSHDpbErB-qJHEagP21Gfx8FvozYs9wwyqkQ2Lzxh6Ec/s1600/iTunesRadioApps-iPad.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzqF7N2Zrzz3tR9eVIf_4D3Db64C0-wYINQ45FhXpH0uL3RxQUUVk2VYc-pjQs8qKR9ej37z6bgJLbtv1f26H1Nt2lvaxUqSfMSHDpbErB-qJHEagP21Gfx8FvozYs9wwyqkQ2Lzxh6Ec/s400/iTunesRadioApps-iPad.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5497496104838223490" /></a><br /><br />As an iPhone developer, one always hopes to some day have an app make Apple's "featured" lists on the front page of iTunes, so I am unbelievably happy today to have several make one of Apple's lists.<br /><br />As for what effect this exposure has on app downloads, I only have access to the stats for the Tunemark Radio app (the rest of the apps are under other developer accounts), but I can say, for my Tunemark Radio app, after one day being on this featured radio app list, the number of downloads have more than doubled. The average daily download count jumped from 500 to over 1100.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-76921132811966278752010-07-02T13:43:00.000-07:002010-07-07T19:06:15.899-07:00Tunemark Radio iPhone app visualizer demoI put together a video demo of what the Tunemark Radio app music visualizer looks like. I've gotten a few queries from people who didn't realize the app included a visualizer, so hopefully this will give a little more visibility to the feature:<br /><br /><object width="320" height="320"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13041713&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13041713&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="320" height="320"></embed></object><p><a href="http://vimeo.com/13041713">Tunemark Radio visualizer demo</a> from <a href="http://vimeo.com/user1721378">Brian Stormont</a> on <a href="http://vimeo.com">Vimeo</a>.<br><font size=1>Music in the demo is "Not Hip Hoppie" by <a href="http://digitube.us">Digitube (http://digitube.us)</font></a></p><br /><br />I'd like to stress this this visualizer will work with any audio stream being played in Tunemark Radio. It looks best when the stereo channels have distinct volume levels. <br /><br />Also, it should be pointed out that the visualization is not using the local microphone to pick up the audio signal, so will also work if you are using headphones or a dock connector. It's not a responsive as a full desktop-based music visualizer, but this is because the iPhone SDK does not provide access to the decoded data packets of MP3 or AAC audio as they are being played. So, instead, I have to only use the audio chaneel gain status words returned by the SDK.<br /><br />You can download the app <a href="http://itunes.apple.com/us/app/tunemark-radio/id325681153?mt=8">for free from iTunes</a>.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-64373139582614694802010-06-24T13:16:00.001-07:002010-06-24T14:22:34.431-07:00RadioKit SDK demo project now includes support for iOS 4 background audio playI've update the <a href="http://stormyprods.com/products/radiokit.php">RadioKit SDK</a> demo XCode project so it now also demonstrates how to perform background audio play and audio control under iOS 4.<br /><br />Source code for the sample project can be found here:<br /><br /><a href="http://stormyprods.com/products/radiokit.php">http://stormyprods.com/products/radiokit.php</a><br /><br />The key point to adding support for background audio play under iOS 4 is to add a new entry to your app's info.plist file. You must add a new key called <b>UIBackgroundModes</b> and add the value <b>audio</b>.<br /><br />If you want you app to also support remote control of the background audio (either via headphone controls or the audio controls on the background app taskbar) you must also add support for <b>remoteControlReceivedWithEvent:</b>. You can see how this was done in the sample MainViewController.m file in the RadioKitDemo XCode project.<br /><br />Please note: background play is not supported under the simulator. This is a limitation with the simulator, not the sample XCode project. <br /><br />If you are unfamiliar with the RadioKit SDK, you can read more about it <a href="http://stormyprods.com/products/radiokit.php">here</a>. It is a static library which greatly simplifies the process of handling streaming audio on the iPhone and iPad including support for pause, rewind and fast forward of the live audio stream. It is licensed on a per-project basis with single project licenses priced at $100 (US dollars). There are no royalty fees. Volume discount pricing is also available.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-78532133188789831832010-06-09T20:19:00.000-07:002010-06-09T20:37:03.927-07:00Steve Jobs opinion on Analytics on iPhoneI just watched an interview from D8 in which Steve Jobs answers a question regarding the use of analytics within iPhone apps. You can watch the video yourself <a href="http://mediamemo.allthingsd.com/20100608/apple-makes-good-on-steve-jobs-promise-invites-other-advertisers/">here</a>, but the short of it is Steve Jobs said Apple is banning some analytics companies because they are collecting user data without notifying the user first and this is in violation of the developer agreement.<br /><br />I was very surprised to hear him say this, because I don't believe it to be true. Unless an iPhone developer posts their own EULA for their app, an app is distributed under Apple's default EULA, the terms of which (in the US store) can be read here:<br /><br /><a href="http://www.apple.com/legal/itunes/us/terms.html#APPS">http://www.apple.com/legal/itunes/us/terms.html#APPS</a><br /><br />And a link to this text appears on the bottom of EVERY iPhone app page (in fine print) within the iTunes app store.<br /><br />Now, take a close look at this agreement, specifically clause b.<br /><blockquote><br />b. Consent to Use of Data: You agree that Licensor may collect and use technical data and related information, including but not limited to technical information about your device, system and application software, and peripherals, that is gathered periodically to facilitate the provision of software updates, product support and other services to you (if any) related to the Licensed Application. Licensor may use this information, as long as it is in a form that does not personally identify you, to improve its products or to provide services or technologies to you.<br /></blockquote><br />This seems pretty clear to me that according to this default license agreement for every iPhone app, the potential an app is collecting user data is disclosed and is permitted.<br /><br />Of course, I'm not a lawyer, and I'm sure Steve Jobs must have a reason for feeling this clause does not permit analytics within apps. But, at least to a layman such as myself, it seems pretty clear that the standard agreement for an app does in fact allow such capturing of user data and is disclosing to the user (via this license agreement) that such data collection may occur (which in turn meets the conditions of the developer license agreement).Unknownnoreply@blogger.comtag:blogger.com,1999:blog-8393657971624336093.post-40853996144576410212010-05-03T14:23:00.000-07:002010-05-03T15:34:19.921-07:00Photo albums on the iPad<span style="font-size: 12pt; color: rgb(0,0,0);">One the </span><span style="font-size: 12pt;"><a href="http://www.apple.com/ipad/features/photos.html">advertised aspects of the iPad</a></span> <span style="font-size: 12pt; color: rgb(0,0,0);">is how easy it is to view your photo albums. On Apple’s web site, they say, “</span>Your photo albums appear as tidy little stacks you can pinch to preview.” <br /><br />While viewing photos on the iPad is a natural and fluid experience, one thing that wasn’t obvious to me is how to get my photo albums on the iPad. If you use two of Apple’s products, iPhoto or Aperture, then when you sync your iPad via iTunes you have the option to select specific photo albums to transfer.<br /><br />But what if you don’t use those two products? In my case, I have over 13,000 photos and I manage them with a competing product from Adobe called <a href="http://www.adobe.com/products/photoshoplightroom/">Lightroom</a>. I’m not going to switch to using Aperture just because it has a convenient method for putting selective photo albums on the iPad. Surely there must be an answer. And, there is. <br /><br />In iTunes, when you choose to sync photos to iPad, you have a third option, which is to sync photos from a specific folder. Now this might not seem as useful as what you get from syncing from iPhoto or Aperture where you can pick and choose albums, but it does have one additional nicety. Any subfolders created within this folder appear on iPad as albums!<br /><br /><span style="font-size: 12pt; color: rgb(0,0,0);"><img src="http://stormyprods.com/blog/PastedGraphic1.tiff" alt="PastedGraphic1.tiff" width="379" height="168" /></span><br /><br />So, in my case, I have a folder set aside called “iPad” and when I want to sync over several albums from Lightroom, simply create a different subfolder for each album within this “iPad” folder. These albums are then available to be selected for the built-in Picture Frame feature of the iPad’s lock screen. (You can choose the albums to be displayed in the Picture Frame via the Settings app on iPad.)<br /><br />One important note: if you don’t create a subfolder and instead simply put the photos in the main sync folder, they don’t end up appearing in <strong>any</strong> album on the iPad after you sync. They just appear in “Saved Photos” along with all your screenshots and other miscellaneous images.Unknownnoreply@blogger.com