Category Archives: iOS

So, you want an app?

A wonderful boquet of flowers.Elia Freedman: “Developing an application and making money at it is very very hard to do. Maybe your idea is the right one, maybe it isn’t. No matter the case, though, there are likely faster ways to validate the idea then writing an app.”

Another great piece on the cost of app development. If you’re thinking about writing an iOS, Android, or other mobile application make sure you do a bit of research before you start. I find most people are absolutely stunned by the cost of app development. Elia’s piece points to some other great articles that point out the how-to’s and the why-for’s of apps development, including a classic Craig Hockenberry Stack Overflow post on the true cost of developing their Twitter client, Twitterrific.

Elia later goes on to say:

Want to proceed anyway? Good for you. Just don’t go forward with blinders on.

Great advice.

Introducing Arrgly

We’ve added a new, silly, little application to the mix. It’s called Arrgly. A few years back we’d created a project to explore REST URL shortening services from Objective-C and Cocoa. The code could shorten a URL using a number of services, like bit.ly, ping.fm(gone), tr.im(gone), and a little white label shortener called YOURLS, as well as a few others.

We have a URL shortening service called f67 that uses YOURLS. It became obvious, after a few years, of starting the browser, logging in, pasting the link, pressing the shorten button, and copying the link back to the paste board on iOS that there had to be a much better way. We resurrected the URL shortening code, ARC‘ified it, and created a project. That project became Arrgly.

Yeah, it’s not attractive, and has a funny name, but it does exactly what we needed. It makes shortening a URL using our YOURLS based shortener as easy as copying a URL, starting Arrgly, and pasting the resulting short link that was placed back on the paste board for us.

It’s available in the App Store and, yes, it’s FREE.

If you decide to use it and would like a new feature or would like to report a bug, get in touch.

P.S. Yes, if you’re a designer and feel like improving Arrgly in exchange for our undying love and credit for the app design, we’re listening. Contact us: support@applecorelabs.com

Help Wanted: RxCalc 1.3 Beta Testers

We Want You

We’re working on an update to RxCalc to address some minor UI issues on the iPhone 5 and iPod Touch. If you’re interested in helping us, please click this link and follow the instructions.

What’s changing? Good question, it’s very minor:

  • Requires iOS 5
  • Now using the numeric keypad for data entry
  • BUG FIX: Some views clipping on the iPhone 5

We’re also working on a feature update, we’ll share more on that later.

App Store Reviews

Matthew Panzarino: “But the important thing is that there is a serious discussion now being had about this topic, which I feel is an extremely important one, both for Apple as the App Store continues to grow, and to the developers in its ecosystem. I don’t think anyone has the right answers yet, but I think that there are some very smart folks at Apple working hard on the problem, including the ex-Chompites. So I’m cautiously optimistic that we might see some results later this year.”

The entire app store review process has been a huge source of frustration for many iOS developers. I wrote about this problem in early 2011. RxCalc isn’t a huge seller, and we almost never get direct feedback from users. When we get a one star review on the App Store it’s often impossible to figure out what the user is really after. That’s where an Apple supplied method of contacting the user would be fantastic. We’d be more than willing to fill out a form at apple.com, have that reviewed by Apple employees, and have them forward that information to the end user. We’re not in the business of attacking our users, but we’d sure love to know how to improve our products. When we get a one star rating, we want to fix it.

It’s safe to say, we’re glad it’s getting some attention.

Detecting Conencted Devices in iOS

RibbitWe’ve been working with a client on a nifty little application that compliments their desktop workhorse. There are a couple cool things about this application. One it makes use of RESTful services to connect with their legacy system to collect and manipulate data, but that isn’t the coolest aspect of the project. The coolest part is how we collect user input.

Barcodes

Our client makes heavy use of barcodes in their application. To that end they decided to make use of KoamTac 300i and LineaPro Bluetooth barcode scanners. These two scanners include SDK’s so you can get tighter integration with the hardware. It makes total sense to get tighter integration because we don’t have any UITextView’s to collect input from a standard HID device. If you’re using a bluetooth barcode scanner and have a UITextView to collect input it’s fairly easy to use any scanner. It works just like a keyboard, but what about apps like this that don’t have a place to collect data? That’s where the SDK’s come in handy.

Detecting External Hardware

Since we have to integrate with multiple scanners we have to decide at runtime which scanner is being used. Using the SDK’s we could take a stab in the dark at initializing each one in turn and the one that succeeds to initialize is the winner. Not such a great way determine the one to use, but it would work.

What if there was a way to determine you had connected external devices without using a third party SDK? There is.

Using the External Accessory Framework you can do just that.

Here’s a little snippet of code you can use to get back a list of external devices connected to your iOS device. That’s all there is to it. The output produced from that small bit of code appears below.

Make sure you #import <ExternalAccessory/ExternalAccessory.h>

[code lang=”objc”]
– (void)_getAttachedDevices;
{
EAAccessoryManager* accessoryManager = [
EAAccessoryManager sharedAccessoryManager];
if (accessoryManager)
{
NSArray* connectedAccessories =
[accessoryManager connectedAccessories];
NSLog(@"ConnectedAccessories = %@", connectedAccessories);
}
}
[/code]

All this little piece of code does is get the shared Accessory Manager, EAAccessoryManager (man, I hate that name), and asks for connected accessories. Simple! The NSLog() call simply dumps out an instance of EAAccessory which describes the connected accessory. In this case we’re connected to a LINEA Pro scanner.

ConnectedAccessories = (
"<EAAccessory: 0x1f7810>
{\n connected:YES\n
connectionID:0xd0ff600\n
name: LINEA Pro\n
manufacturer: DATECS\n
modelNumber: XBAMBL\n
serialNumber: MSC140045UN11\n
firmwareRevision: 2.45.0\n
hardwareRevision: 1.0.0\n
protocols: (\n \"com.datecs.linea.pro.msr\",\n \"com.datecs.linea.pro.bar\"\n)\n
delegate: (null)\n}"
)

Need an iOS Developer to help turn your vision into reality? Get in touch, we’re here to help.