<?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>Tutorials &#8211; Fluid Pixel</title>
	<atom:link href="/category/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>App &#38; Game Developers for iPhone, iPad &#38; Android</description>
	<lastBuildDate>Sat, 02 Dec 2017 09:59:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.1</generator>
	<item>
		<title>Next Metro Nexus Timetable for iOS and Apple Watch Features</title>
		<link>/2016/02/next-metro-nexus-timetable-for-ios-and-apple-watch-features/</link>
		<pubDate>Thu, 11 Feb 2016 11:53:09 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[3dtouch]]></category>
		<category><![CDATA[complications]]></category>
		<category><![CDATA[CSSearchableIndex]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[metro]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[watch]]></category>

		<guid isPermaLink="false">/?p=650</guid>
		<description><![CDATA[Apart from actually wanting to have a Timetable App (download) that looked good and worked well for the Nexus Metro system in Newcastle, it was also a good excuse to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Apart from actually wanting to have a <a href="https://itunes.apple.com/ar/app/next-metro/id1027721895?l=en&#038;mt=8" target="_blank">Timetable App (download)</a> that looked good and worked well for the <a href="http://nexus.org.uk/metro" target="_blank">Nexus Metro system</a> in Newcastle, it was also a good excuse to try out some new technologies and test out features added to iOS9 and the Apple Watch. Here&#8217;s a breakdown of the some of those features and how they&#8217;ve been implemented.</p>
<h2>Next Metro Main Features</h2>
<h3>Complications</h3>
<p>Complications get their name from the <a href="https://en.wikipedia.org/wiki/Complication_(horology)" target="_blank">traditional watch industry</a> and mean anything on the face that isn&#8217;t the (main) time. I like to think of them as glances as you glance down at your watch to see them. Now Apple also has <a href="https://support.apple.com/en-gb/HT205548" target="_blank">Glances</a>, but they&#8217;re a forgotten, (at least miss-named) feature of the watch. It&#8217;s not a glance if you have to swipe through 5 screens to get to it. We do have a glance for Next Metro, but it&#8217;s not something that gets used much.</p>
<p>Despite their name, Apple watch Complications are supposed to be easy. In fact, they&#8217;re not. Well they are, but they aren&#8217;t at the same time. There&#8217;s a bit to understand to get them working in the way you intend and a fair few methods that need to implemented correctly to get them working. It would be a <a href="http://www.sneakycrab.com/blog/2015/6/10/writing-your-own-watchkit-complications" target="_blank">whole blog post in itself</a> to explain, but the important stuff is:</p>
<ul>
<li>The start time for the next complication is at the end time of the previous event, not the start time for the event, important to counting down to the Next Metro.</li>
<li>Implement every callback and request (there&#8217;s a lot) otherwise your complications will stop working after a period, like when the initial returned events run out</li>
<li>Complications can be updated based on users location and external events, so keep them current</li>
<li>There is a limit as to how often you can update a complication, although its undocumented, so update only when you have to. It&#8217;s also expensive, battery wise so think about the user too.  We update the Next Metro complication when a location update triggers a jump to a new journey. It&#8217;s not as responsive as it should be, but works most of the time.</li>
<li>There&#8217;s nothing saying that each complication type has to show the same information, you can customise the amount and even what you show per complication style. That way two complications can be shown simultaneously on a watch face from your app showing different information</li>
<li>Use NSDate.distantFuture() for getTimelineEndDateForComplication if you have events that never end (like a Metro Timetable).</li>
<li>It&#8217;s not possible to combine TextProviders using Swift (as of writing). Use this <a href="https://gist.github.com/SlaunchaMan/815b3e7214ceb2000e64" target="_blank">Obj-C workaround for now</a> if you want say a CLKRelativeDateTextProvider combined with CLKSimpleTextProvider.</li>
</ul>
<h3>3D Touch Shortcuts</h3>
<p>The ability to jump to a place in an App <a href="https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/3DTouch.html">from a shortcut on its icon</a> is one of the best new features of the iPhone6S + iPhone6SPlus devices (just behind <a href="https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LivePhotos.html#//apple_ref/doc/uid/TP40006556-CH74-SW1">Live Photos</a>). It can really speed up your access, from making a quick phone call to diving right into writing a new email. Next Metro has this feature implemented but takes it further. We order your journeys based on the distance from the start station and use this information to update the 3D Touch shortcuts to link you directly to your nearest journey. This feature is not something we&#8217;ve seen being used very often, or well, but used correctly it takes the shortcuts to the next level of immediacy and relevance. To do so, simply update <code>UIApplication.sharedApplication().shortcutItems</code> when you get an update (location or information). Here&#8217;s a <a href="https://littlebitesofcocoa.com/88-dynamic-shortcut-items" target="_blank">full guide</a> to how to get this working.</p>
<h3>Searchable</h3>
<p>The final &#8216;cool&#8217; feature of Next Metro is the ability to search for your journeys as they&#8217;ve all been indexed (<code>CSSearchableIndex.defaultSearchableIndex().indexSearchableItems</code>) and <code>NSUserActivity</code> when you are navigating the App so terms like &#8216;metro monument&#8217; or &#8216;next central&#8217; will show up in your search results and allow you to deep link directly to the journey within the Next Metro App. The next stage for this is to update the content with the next metro information in real time to make it even more useful.</p>
]]></content:encoded>
			</item>
		<item>
		<title>SpriteKit iOS7: An Introduction</title>
		<link>/2014/03/spritekit-ios7-introduction/</link>
		<pubDate>Fri, 14 Mar 2014 12:40:04 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">/?p=588</guid>
		<description><![CDATA[We&#8217;ve been using SpriteKit for some projects recently and wanted to document it&#8217;s use as a retrospective. SpriteKit is a 2D &#8220;game engine&#8221; that is very simple to use, but [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve been using SpriteKit for some projects recently and wanted to document it&#8217;s use as a retrospective. SpriteKit is a 2D &#8220;game engine&#8221; that is very simple to use, but at the same time complex creations can be crafted.</p>
<p>When it was first announced we used it for an initial App for kids, <a href="https://itunes.apple.com/us/app/peek-a-boo-farm-yard/id760485894?mt=8" title="Peek a Boo Farm Yard" target="_blank">Peek-A-Boo</a> so when we had an idea for a new game we turned straight to SpriteKit.</p>
<p>Some of the drawbacks to using SpriteKit mean you are limited to targeting devices running ios 7+ and you can&#8217;t (easily) port your product to Android, but for ease of use and speed these compromises are worth it.</p>
<p><strong>SpriteKit for Prototyping</strong><br />
If you have an idea for a 2D game then SpriteKit is a great tool for getting something up and running very quickly. You can use its easy to use animation and sprite systems and combine them with the input control provided by gesture recognisers.</p>
<p><strong>Audio</strong><br />
Sound in SpriteKit is also very easy and slots nicely into the Action engine. Sounds are added to nodes and run as an action just like any other. It means they can be combined into an action sequence, or played independently. Importantly, sounds can be flagged as instantly completed, or following actions can be forced to wait until the sound has completed, meaning you don’t need to worry about the length of the sound.</p>
<p><strong>Art Style</strong><br />
For Monster Tower we wanted to create a hand drawn style to give it some character. Initially Gareth, our talented artist turned to his Wacom and did what he does best. The results looked interesting, but lacked soul. So Gareth whipped out some old school Crayons and paper instead. The results were great, suddenly the game came to life. We wanted to try and push the style further so tried using SpriteKits inbuilt sprite sheet animation action to give the characters some movement. Gareth redrew the same sprite a few times and we animated between them. Initially the difference between the frames was too much and it look jarring, but with some trial and error with both the assets and the frame rate we got a result we are really happy with.</p>
<p><strong>Fonts</strong><br />
A problem created with the animated texture approach for the style was that suddenly anything that wasn&#8217;t dynamic looked out of place. Although we ignored the text for a while, for lack of a good solution, eventually it stood out too much and needed to be tackled. We explored creating our own font, but found some good free hand drawn fonts we were able to use. Some of the things we tried to blend the fonts in included changing the colours of the SKLabel, randomly adjusting sizes and positions of the text along with changing the strings from capitals to lowercase on a timer. Changing the case of the text worked best, but still looked odd as everything was changing at the same time just didn&#8217;t look &#8220;right&#8221;. Eventually we had to bite the bullet and do away with straight SKLabel nodes as they weren&#8217;t flexible enough and we created our own variation. These consisted of an skspritenode that had many sklabelnodes, one for each character of the string. This meant we can loop through and adjust the individual characters position, size and case independently to create movement that is more fluid and fitting for the style of the rest of the game.</p>
<p>To finish the effect off we did go in and adjust some of the font characters to polish the effect off.  We ended up with a flexible system that could replace any text throughout the game. </p>
]]></content:encoded>
			</item>
		<item>
		<title>Custom fonts in XCode and iOS</title>
		<link>/2013/02/custom-fonts-in-xcode-and-ios/</link>
		<pubDate>Tue, 26 Feb 2013 11:26:07 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">/?p=542</guid>
		<description><![CDATA[If you are having problems adding custom fonts to XCode for use in iOS projects, ensuring that you&#8217;ve added them to the projects resources, have correctly referenced their filename in [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you are having problems adding custom fonts to XCode for use in iOS projects, ensuring that you&#8217;ve added them to the projects resources, have correctly referenced their filename in the project&#8217;s .plist file and setup your custom font with:</p>
<p><code> UIFont *customfont = [UIFont fontWithName:@"font name" size:16] </code></p>
<p>If it&#8217;s still not working then check the string you&#8217;re using for the font. It has to match what font name XCode has for the font, not the font&#8217;s name or even what Font Book says the name is for the font. Here&#8217;s an easy way to log all of the fonts included in your project and therefore use the correct reference:</p>
<p><code> for ( NSString *familyName in [UIFont familyNames] ) { NSLog(@"Family %@", familyName); NSLog(@"Names = %@", [UIFont fontNamesForFamilyName:familyName]); }</code></p>
<p>Easy.</p>
<p>Here&#8217;s <a href="http://stackoverflow.com/questions/360751/can-i-embed-a-custom-font-in-an-iphone-application/809307#809307">some more discussions on Stack Overflow</a> with various other problems and solutions.</p>
]]></content:encoded>
			</item>
		<item>
		<title>Looping background colours of UIView</title>
		<link>/2013/02/looping-background-colours-of-uiview/</link>
		<pubDate>Fri, 22 Feb 2013 10:34:33 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">/?p=531</guid>
		<description><![CDATA[An app we&#8217;re working on required the background of a UIView to animate through a number of colours in a loop and we wanted to share the solution with you. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>An app we&#8217;re working on required the background of a UIView to animate through a number of colours in a loop and we wanted to share the solution with you.</p>
<p>Create an array of as many colours as you want and set-up your array index in your view (we did it in viewDidLoad but it could be anywhere)</p>
<pre class="brush: objc; title: ; notranslate">
self.backgroundColours = [NSArray arrayWithObjects:
[UIColor colorWithRed:64/255.0 green:70/255.0 blue:69/255.0 alpha:1],
[UIColor colorWithRed:221/255.0 green:71/255.0 blue:77/255.0 alpha:1],
[UIColor colorWithRed:221/255.0 green:77/255.0 blue:117/255.0 alpha:1],
[UIColor colorWithRed:227/255.0 green:124/255.0 blue:168/255.0 alpha:1],
[UIColor colorWithRed:228/255.0 green:136/255.0 blue:115/255.0 alpha:1], nil];

self.backgroundLoop = 0;
</pre>
<p>Then create an animateWithDuration function that calls itself:</p>
<pre class="brush: objc; title: ; notranslate">
- (void) animateBackgroundColour
{

	if (self.backgroundLoop &lt; self.backgroundColours.count - 1)
	{
		self.backgroundLoop ++;
	}
	else
	{
		self.backgroundLoop = 0;
	}

	[UIView animateWithDuration:4 delay:0.5 options:UIViewAnimationOptionAllowUserInteraction
					 animations:^(void)
					{
						self.backgroundView.backgroundColor = [self.backgroundColours objectAtIndex:self.backgroundLoop];
					}
					 completion:^(BOOL finished) {
						 if(finished)
						 {
							[self animateBackgroundColour];
						 }
	}];
}
</pre>
<p>And that&#8217;s it. The UIViewAnimationOptionAllowUserInteraction is important so that input can be used for the rest of the interface as by default when an animation is playing interaction is disabled. You can include as many colours as you require. If you need to stop the animation then either call:</p>
<pre class="brush: objc; title: ; notranslate">
[myView.layer removeAllAnimations];
</pre>
<p>Which will remove all of the animations currently playing, which is fine if this is the only one. Alternatively you can start a new , very short, animation on the background colour that returns it to its original (or new) state. This will override the looping animation nicely. Here&#8217;s <a href="http://stackoverflow.com/questions/554997/cancel-a-uiview-animation" target="_blank">a few tricks</a> people have used to do this very thing, you may find one or more works for your situation.</p>
]]></content:encoded>
			</item>
		<item>
		<title>Closed Captioning</title>
		<link>/2012/03/closed-captioning/</link>
		<pubDate>Fri, 23 Mar 2012 10:46:54 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">/?p=413</guid>
		<description><![CDATA[We recently had a mobile project with lots of video content, all of which needed to be subtitled and work on the iPhone and iPad. Many hours of research, hair [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>We recently had a mobile project with lots of video content, all of which needed to be subtitled and work on the iPhone and iPad.</p>
<p>Many hours of research, hair pulling and frustration later it became clear that the Closed Captioning world is a broken, horrible place to be. We had the videos, we had the transcript but there seemed no way of putting them together in a timely and cost effective fashion. The business model in the closed captioning world (like many others) is make it really complicated so that you either have to pay someone to do it (at a cost of around £10 per minute of video) or buy software with a price tag on multiple thousands that although sounds like the saviour, is actually just makes things even more complex.</p>
<p>The problem? Multiple incompatible formats of subtitles, multiple broadcast formats, all requiring their own solution and no-one place to find out reliable, up-to-date information from. Eventually we got it figured out, a nice in-expense (but not free) way to get your own closed caption service up and running.</p>
<p><span id="more-413"></span></p>
<h2>Setup</h2>
<p>Things you will need:</p>
<p><a title="Apple Store" href="http://apple.com/store" target="_blank">A Mac</a><br />
<a title="Quicktime 7 Download links" href="http://support.apple.com/downloads/#quicktime" target="_blank"> Quicktime Pro 7</a> (with the <a title="Closed Caption Importer for Quicktime" href="http://www.synchrimedia.com/ClosedCaptionImporter.zip" target="_blank">SCC Plugin</a>)<br />
<a title="Movie Captioner Download" href="http://www.synchrimedia.com/downloads.html" target="_blank"> Movie Captioner</a> (comes with 14 day free trial, or it&#8217;s $99)</p>
<p>And that&#8217;s it. There will be other ways and other tools that can do this, but after all our research, this was the best setup. It helped that we had a Mac, and a Quicktime Pro 7 license. If you&#8217;ve upgraded to Lion, like we have then you&#8217;ll still need to install Quicktime 7 (as well as the installed Quicktime X) as there is no Pro version of X yet and the pre-installed version doesn&#8217;t allow you to add closed captions.</p>
<p>Once you&#8217;ve got all the above, that&#8217;s the hard bit done.</p>
<h2>Captioning</h2>
<p>We&#8217;re going to assume that you&#8217;ve got your videos in a Quicktime format (mov works best) if not you&#8217;ll need to convert them first (Quicktime can export these and does a great job. It even has inbuilt iPhone settings)</p>
<p>Launch Movie Captioner and create a new project. Import your video in the top left pane and check that it plays back ok. Now time to create the captions.</p>
<p>If you don&#8217;t have the captions already, then the tools within the software allow you type them out to the audio as you go, which is a really easy process to do, but we won&#8217;t go into that here, check out their <a title="Tutorial Videos for Movie Captioner" href="http://www.synchrimedia.com/tutorials.html" target="_blank">tutorial videos</a> for a full run through. However ff you&#8217;ve already got the captions in a document then great, firstly copy them into a .txt file, with each caption separated onto a new line eg.</p>
<blockquote><p>Hello and welcome to my tutorial</p>
<p>In this video I&#8217;m going to show you how to create a video with,</p>
<p>closed captions that works on an iPhone.</p></blockquote>
<p>A couple of things to note here. Keep the captions as short as you can, longer ones can cause problems later. As a general rule, each Caption line can only have 32 characters on and there can be 4 lines per caption. So if you have particulary long captions, then you might find it easier to split them here than within Movie Captioner later.<br />
Also the txt file has to be formated as UTF-8 encoding (from the format menu in TextEdit and if you&#8217;ve copied the text in from a word processing document then they&#8217;re might be some funny characters in there that aren&#8217;t recognised by Movie Captioner. If this happens you&#8217;ll end up with odd question marks within the captions or missing captions all together. Then you&#8217;ll need to go though the txt file and replace errant characters (usually quotation marks, speech marks and apostrophes) and do a find and replace, and simply replace them with a character typed from your keyboard directly into the txt file and this will fix things up.</p>
<p>Once you have your captions in a txt file, then import it into your MC project as a &#8216;text in line form&#8217; file. Of course, if you have your captions in another compatible format then feel free to use those, but we can&#8217;t vouch for how well they will work with this technique.</p>
<p>At this point it will lay out your captions down the right had side, but all with a time code of 00:00:00.00. Before we time out the captions, click on each one, where it will show you a preview of the caption below the video and make sure that all the text has been imported correctly and none of the captions are too long. It&#8217;s best to be on the safe side, so if any are getting close to being over 4 lines, then put your cursor where you want it to goto the next caption and split them using the &#8216;split to next caption&#8217; button under the editing section.</p>
<p>If you&#8217;re happy that the captions are correct, then we can start timing them out.</p>
<p>Make yourself comfortable, this bit can go quickly. Select the first caption, put the movie to where the first caption should start, then click &#8216;Set Timecode&#8217; at the top. This will start the video playing and set the first caption to the current time in the video. It will also select the next caption in the list, so you need to keep up with the audio and keep clicking &#8216;Set Timecode&#8217; when the caption should come in. Don&#8217;t worry if you miss it, just pause the video, set the time to where you want the particular caption to come in and  se the timecode to continue captioning.</p>
<p>Once you get to the last caption, the video will stop playing and you can go back and adjust any captions that aren&#8217;t quite right. Either by manually setting the time or by lining up the video and setting the timecode. Be careful if you&#8217;re doing things manually as the timecodes need to be sequential. If things get out of order, this can cause problems later.</p>
<p>The only other thing to note here is that Movie Captioner will automatically add in blank captions after the set amount of time you place in the top box so that captions aren&#8217;t on screen after they&#8217;re necessary. If you need to remove these you can &#8216;Remove Caption&#8217; from the editing toolbar. You might need to add more in if have lots of gaps in the audio, which you can also do using &#8216;insert caption&#8217;.</p>
<h2>Exporting</h2>
<p>Check over the timings to make sure you&#8217;re happy with them, now we come to exporting. Under the Export menu, choose the Sonic Scenarist (SCC Embed in QT). This will do a few things, run through the captions to make sure they&#8217;re are no errors, so if there are any problems you will need to fix them now (usually captions are too long and will need manually splitting further). It will also run through a sequence that involves adding the captions to the movie automatically, using Quicktime.   The result will be a movie with captions. Playback the movie to make sure everything is ok. If you can&#8217;t see the captions, make sure &#8216;Show Closed Captioning&#8217; is turned on under the view menu. If all is good, then save out the movie into a new folder and repeat the process for new movies.</p>
<p>The common things that can go wrong at this point are, the captions appear on a full black screen as garbled text, starting with Scenarist_SCC V1.0. If this is the case, then go back and check the caption timings, making sure there are in order, is at least 1 second between them and also there aren&#8217;t two long captions too close together. There&#8217;s more on this problem <a title="Problems with SCC" href="http://www.synchrimedia.com/help.html#11" target="_blank">here</a>. Another problem could be that the captions aren&#8217;t in the right place on screen. You can adjust this manually by going into the &#8216;show movie properties&#8217; dialog, and adjusting the Visual Settings of the Closed Caption layer to scale and move as you wish. The only other problem we had, is during testing, if you save the Mov file in it&#8217;s original location, you can end up with multiple Closed Caption layers on the same video, which just doesn&#8217;t work. If this happens, again return to the Movie Properties and delete all of the Closed Caption and Timecode Track layers, save the movie and then re-export the video from Movie Captioner. You might need to close down both Quicktime and MC before re-exporting just to make sure everything is reset fully.</p>
<h2>Testing</h2>
<p>That should be that. It&#8217;s a bit long winded, but once you get the hang of it, a 2 minute video can be captioned in less than 10 minutes. To test the captions on a device, then send the video across (email, through iTunes, <a title="Dropbox for File Sharing" href="http://db.tt/LmtqROl" target="_blank">Dropbox</a>) or any other means. Be sure that Closed Captions are turned on in the settings-&gt;video menu, otherwise you won&#8217;t see anything!</p>
<p>If you&#8217;re having problems with Movie Captioner then here are some <a title="Movie Captioner Tutorials" href="http://www.synchrimedia.com/tutorials.html" target="_blank">great tutorials in video format</a> and also their <a title="Movie Captioner FAQs" href="http://www.synchrimedia.com/help.html" target="_blank">FAQ section</a> of their site.</p>
]]></content:encoded>
			</item>
		<item>
		<title>iBooks Author</title>
		<link>/2012/01/ibooks-author/</link>
		<comments>/2012/01/ibooks-author/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 13:21:34 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[ibooks]]></category>
		<category><![CDATA[ipad]]></category>

		<guid isPermaLink="false">/?p=361</guid>
		<description><![CDATA[As soon as iBooks Author was introduced our minds boggled at what the possibilities were, outside of the textbooks that Apple expect you to use it for obviously. So we [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As soon as iBooks Author was introduced our minds boggled at what the possibilities were, outside of the textbooks that Apple expect you to use it for obviously.</p>
<p>So we set about creating some content and the result is an interactive version of our portfolio, that includes images, 3D models, Google Maps, Twitter feeds and a whole host of other cool functionality, that makes our work look pretty good!</p>
<p><span id="more-361"></span></p>
<p>Here&#8217;s some of the things that we found when using the tool that might be helpful for others.</p>
<ul>
<li>If you want to lock the book to landscape, which is useful if you have lots of images and interactive content and not much text, then there&#8217;s the option in the document inspector.</li>
<li>It&#8217;s possible to add alpha to images, but the button is hidden from default view so you&#8217;ll need to &#8216;customize&#8217; the toolbar first.</li>
<li>You can&#8217;t add hyperlinks to images, only to text. Although you can link from text to another image in the book, but only if you&#8217;ve added a title to the image.</li>
<li>HTML elements are easy to add (such as Google Maps) just grab the embed code, save to a .wdgt folder along with a .plist and a Default.png screenshot. However they only become active once made full screen in the book, until then they only show the static image that you include.</li>
<li>3D models exported from 3DSMax only show textures is the .DAE file is placed in the images folder created on export.</li>
<li>Interactive 3D models can be locked to only interact horizontally or vertically, but the &#8216;auto-rotate object when idle&#8217; doesn&#8217;t comply to this setting and rotates on its own axis.</li>
<li>Uploading to the iBook Store is easy using the iTunes Producer tool, but there is no indication of approval time&#8230;</li>
<li>To edit an existing book you need to export your book from iBooks, then re-open the itmsp file that has been published using iTunes Producer and point exported version rather than re-publishing the book, which will create another submission.</li>
<li>You will need to sign up to a new iTunes account to publish books, even if you are already a registered developer.</li>
</ul>
<p>If you&#8217;re thinking about making a portfolio, catalog, design guide, game manual/guide, recipe book, interactive scrapbook, photo book, city guide, newsletter, personal study guide, wedding book, comic book then let us know if we can help!</p>
]]></content:encoded>
			<wfw:commentRss>/2012/01/ibooks-author/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Enterprise Builds</title>
		<link>/2011/08/flash-enterprise-builds/</link>
		<comments>/2011/08/flash-enterprise-builds/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 16:37:29 +0000</pubDate>
		<dc:creator><![CDATA[svarrall]]></dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[jamie stewart]]></category>

		<guid isPermaLink="false">http://wp.fpstudios.com/?p=293</guid>
		<description><![CDATA[We work with a lot of different clients here at Fluid Pixel, when we aren’t developing our own stuff, and sometimes that could mean a whole lot of different UDID’s [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>We work with a lot of different clients here at Fluid Pixel, when we aren’t developing our own stuff, and sometimes that could mean a whole lot of different UDID’s getting sent to us so that our clients can have a look at the Work In Progress (WIP) and test out what we’re developing for them. This can be a bit of a problem as Apple only allows 100 Devices to be registered per year per developer account, and these tend to run out pretty quickly.</p>
<p>The solution for us was to get an Enterprise Developers account as this allows us to do an enterprise distribution build that lets us avoid having to register any UDID’s also we can distribute the WIP build to clients wirelessly through our own Development website, all through the browser on their iOS device. </p>
<p><span id="more-293"></span></p>
<p>There’s already a great guide to setting this up posted over at <a title="Jeffery Sambells" href="http://jeffreysambells.com/posts/2010/06/22/ios-wireless-app-distribution/" target="_self">Jeffrey Sambells</a> website, however we also do flash development and have been looking at getting a few Flash projects moved across to iOS by making use of the Adobe Air 2.6 SDK, there are enough guides out there for getting this set up to build an app for testing and for App Store submission, but we needed to do a testing build for some clients. So we had to find a way to get this done, in the end it turns out to be a relatively painless operation.</p>
<p>We made a distribution build of our app using the Air 2.6 SDK with our enterprise distribution certificate, making sure that the bundle ID was the same as the one used in our distribution provisioning profile.</p>
<p>Now the ‘hacky’ part seeing as the Air SDK wont let us build for archive, but will let us do distribution and ad-hoc, we built for distribution, as that’s what we intend to package this up as.  Now ensure that you already have an Archive build for any other app already in XCode (we’re using XCode 4, but I imagine this will work just as well in earlier versions) by having a look through the organiser, if you don’t then open up one of your XCode projects and ‘Archive’ it.</p>
<p>If you bring up the organiser you can ‘Show in Finder’ on this Archive (Right/Command click the Archive) or have a look in “User”/Library/Developer/Xcode/Archive/”AnyDate”. You want to locate the “.xarchive” file for one of your archived apps.</p>
<p>Duplicate this, then rename the duplicate Archive to suit the name of the project you’re wanting to distribute. In our case “Revolve”, but keep the date and time part of the file name. Now on the xarchive file “show package contents”.</p>
<p>You’ll be presented with two folders ‘dSYMs’ and Products and an Info.plist file.  We’re going to need to edit the plist, so fire up the property list editor. You’ll want to change Name to the name of the app, or whatever the .app file is called that the Air SDK generated, as well as the SchemaName to the same thing.</p>
<p>Expand the ApplicationProperties Dictionary, and look at the ApplicationPath property, you’re going to edit this one to be “Applications/&lt;name&gt;.app” where &lt;name&gt; is the name of the .app file that the Air SDK generated.</p>
<p>Also the bundle identifier may need to be edited to math the bundleID that the App was built with, and check that your icon names match up (they shouldn’t need changing if you follow Apple’s standard naming conventions). Now Save this pList.</p>
<p>Navigate through the “Products” directory you’ll get to the Applications folder, remove anything that’s already in this folder, and replace it with the .app that the Air SDK generated ( this should then make what was entered in the Applications Path valid, ie copy revolve.app into ‘Products/Applications’ so that  ”Applications/revolve.app” is now the correct applications path.</p>
<p>We can safely ignore the ‘dSYMs’ folder for this.</p>
<p>Right now back into XCode if we now bring up the Organiser and look at the Archives tab we should see the Archive in there for our recently stitched up app, in our case we now have an Archive for Revolve. Now we can share this using the same technique as described on <a href="http://jeffreysambells.com/posts/2010/06/22/ios-wireless-app-distribution/">Jeffery Sambells</a> website, and we now have an Enterprise Distribution of our Flash App that runs on iOS devices.</p>
]]></content:encoded>
			<wfw:commentRss>/2011/08/flash-enterprise-builds/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
