I ran across several of these over the last few weeks. Most posted in Austin iOS Developer Group
4 Reasons Users Uninstall Apps (Make sure your apps don’t do this…)
8 Tips for working effectively with Interface Builder
I ran across several of these over the last few weeks. Most posted in Austin iOS Developer Group
4 Reasons Users Uninstall Apps (Make sure your apps don’t do this…)
8 Tips for working effectively with Interface Builder
I’ve been working on an AR (augmented reality) application for iOS and thought I would share some of the available software libraries and devices for iOS.
Hardware
Although an iPhone is not as ‘hands free’ as a dedicated AR device (Moverio, Vuzix, or the Meta SpaceGlasses) there are interesting hardware solutions to use your iPhone or Android smart phone as a AR client…
The Durovis Dive works with any Android or iOS smartphone featuring a gyroscope and an accelerometer and a display not larger than 5 inches. You just insert your smartphone, start the application and adjust the lenses to your eyes.
You can construct your own FOV2GO Model D Viewer – for the iPhone 4/4S, the Samsung Galaxy Note, or most Android smart phones – out of foam board and a couple of plastic lenses. Just download the instructions and the appropriate template.
Software
Source for my initial research and a great resource at Augmented Reality SDK Comparison
Open Source and/or Free
Argon
iOs – augmented reality from Georgi Tech – appears to be open source but I can’t find the code available for download – based on KHARMA – a KML/HTML Augmented Reality Mobile Architecture
iPhone ARKit
iOS – iPhone ARKit is a small set of class that can give you augmented reality in any iPhone application.
iPhone Augmented Reality Toolkit
This version of the iPhone ARKit is a forked version of the ARKit started on GitHub by Zac White.
mixare – Open Source Augmented Reality Engine
iOS & Android – It works as a completely autonomous application and is available as well for the development of own implementations.
PRAugmentedReality
open source – Augmented Reality Framework for iOS
Vuforia
(from Qualcomm)
iOS, Android, and Unity 3D
Very powerful tracker based AR SDK – free for commercial development
Proprietary and/or Paid
ARPA
iOS & Android
ARToolKit
iOS & Android – a very powerful Lib with a lot of work being done with it – has an open source version (but not on mobile devices)
Catchoom
iOS & Android
Metaio
iOS & Android (includes Junaio) – lots of products, including content creation and a cloud offering
String
Comes in vanilla OpenGL and Unity flavours. Add AR to any iOS project, regardless of 3D engine.
Wikitude
iOS, Android and BlackBerry 10 – both tools for client and creation – also has an AR browser app – very popular with a lot of dev shops using it
Xloudia
cloud based AR recognition and tracking
Roll your Own
I’ve set up a blog to track what I’m doing at the SparkFun ‘Hacker-in-Residence’ project.
I am in Boulder, CO for SparkFun’s ‘Hacker-in-Residence’ program. It’s been great so far – nice steep learning curve to keep it interesting. Details are here.
This weekend I won 2nd place at the AppHack Austin with ShareMesh – an iOS based encrypted peer to peer messaging app that does not require an internet connection to operate. The app used the new iOS 7 features iBeacon and Multipeer Connectivity to handle discovery and communication between devices.
I had a great time and there were a lot of interesting projects and very talented people working on them (see a list at hackathon.io).
The Capital Factory facilities are world class and the folks from AngelHack and our sponsors were great hosts. Looking forward for the chance to go to the Spring 2014 HACKcelerator program in San Francisco.
I’m attending the AngelHack Mobile App Hackathon this weekend in Austin, TX.
It is hosted at Capital Factory – a start-up incubator with 50,000 square feet of amazing work space.
I get about 24 hours to turn an idea into an app, some of the ones I’m looking at are…
Here are some of our recent iOS projects…
* YourTeacher.com – We continue to be the iOS app development arm for yourteacher.com. They have over thirty titles in the Apple App store – majority of which have 4.5+ average ratings with literally hundreds of thousands of downloads per app.
Algebra, ASVAB, or Math are some examples of the work we’ve done for them.
* Just Picture It – created in partnership with the Mason Software Company. It evolves a mobile photo sharing into a word game with friends and family. In a turn-based game you can play in single and multiplayer mode.
Just Picture It uses the Parse.com api extensively for user authentication, push notifications, and storage of games and messages.
We needed to generate Microsoft Word .doc files from a web application based on web2py. Creating a .doc file from scratch from python is no small task, but luckily for us rtf (Rich Text Format) files can be opened natively by Word and cover everything we needed.
Web2py includes the pyrtf library. Pyrtf is a set of python classes that make it possible to produce RTF documents from python programs. The library has no external dependencies and has proven reliable and fast.
The code snippet below is in a web2py function, it imports the library, initializes it and then creates a simple rtf doc.
After adding the line ‘Certified Staff Evaluation’ the function returns the newly created doc file. It is possible to create tables and include images – documentation for the library and example rtf generation files can be found at PyRTF. (note that web2py uses a slightly older version of pyrtf – you can see docs for it here.
from gluon.contrib.pyrtf import * doc = Document() ss = doc.StyleSheet section = Section() doc.Sections.append( section ) p = Paragraph( ss.ParagraphStyles.Heading1 ) p.append( 'Certified Staff Evaluation' ) section.append( p ) return doc
I’m using parse.com to handle user authentication, either via Facebook or custom user type with email and password.
If a user signs up via Facebook we want to request access to their profile and friend list and use that information to find FB friends who are already playing our game (Just Picture It).
This example doesn’t include a lot of the prerequisite steps to get your parse app working with Facebook – see the parse.com docs for more details on that.
An example of an initial call to parse to login to Facebook with a specific set of permissions.
NSArray *permissionsArray = [NSArray arrayWithObjects:@"user_about_me", @"user_relationships",@"user_birthday",@"user_location", @"offline_access", @"email", @"publish_stream", nil]; [PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) { if (!user) { NSLog(@"Uh oh. The user cancelled the Facebook login."); [self doFacebookUserHasCanceled]; } else { [self performSelector:@selector(doFaceBookUserHasLoggedIn) withObject:nil afterDelay:0.1]; } }];
A successful login and permission request approval by the user to Facebook sends us to the function doFaceBookUserHasLoggedIn.
NSString *requestPath = @"me/?fields=name,location,gender,birthday,relationship_status,picture,email,id"; PF_FBRequest *request = [[PF_FBRequest alloc] initWithSession:[PFFacebookUtils session] graphPath:requestPath]; [request startWithCompletionHandler:^(PF_FBRequestConnection *connection, id result, NSError *error) { if (!error) { NSDictionary *userData = (NSDictionary *)result; // The result is a dictionary NSString *name = [userData objectForKey:@"name"]; NSString *email = [userData objectForKey:@"email"]; NSString *sID = [userData objectForKey:@"id"]; // get the FB user's profile image NSDictionary *dicFacebookPicture = [userData objectForKey:@"picture"]; NSDictionary *dicFacebookData = [dicFacebookPicture objectForKey:@"data"]; NSString *sUrlPic= [dicFacebookData objectForKey:@"url"]; UIImage* imgProfile = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: sUrlPic]]]; //do something interesting with this data... //... // now request FB friend list PF_FBRequest *request = [[PF_FBRequest alloc] initWithSession:[PFFacebookUtils session] graphPath:@"me/friends"]; [request startWithCompletionHandler:^(PF_FBRequestConnection *connection, id result, NSError *error) { if (!error) { NSArray *data = [result objectForKey:@"data"]; if (data) { //we now have an array of NSDictionary entries contating friend data for (NSMutableDictionary *friendData in data) { // do something interesting with the friend data... } } } }]; } }];
The social image sharing game that we developed in partnership with Mason Software Company has just been launched in the Apple App Store – it is called Just Picture It.
The iOS game uses Parse.com and Amazon AWS as the primary back-end components for storing data and sharing images.
It is free and quite a bit of fun to play with friends – please download and give it a try…