BuySellAds.com

My book Barcodes with iOS 7 is nearing completion. Buy it now to get early access!
Our DNA is written in Objective-C
Jump

Category Archive for ‘Updates’ rss

GeoCorder 1.2.1

The last major update/polish of GeoCorder just got approved only for me to find that I had forgotten to update the iTunes icon as well. Unfortunately you cannot do so any more once the app is published.

Oh well, I also still had my old twitter name dr_touch in the about dialog. So I submitted a quick update to fix these two things. Just maybe users will notice that I update my apps as often as I can and download more copies.

GeoCorder and GeoCorder [FREE] are available on the app store.

GeoCorder 1.2.0

On my recent trip to the USA I put the finishing touches on the next big update to GeoCorder. And today (while recuperating from a bit of a cold) I finished up with some 3.x compatibility issues and integration with the latest versions of DTShop and DTBannerManager.

This version became necessary because I wanted to fix a slight problem one special customer was having with the new tracking function. The tracker would disable if you didn’t have internet connectivity, say during a phone call. Another user who is into ballooning asked for a method to better filter the path to prevent the jumping around that occurs when CoreLocation switches to cell-tower locating due to signal degradation.

Updates

  • NEW: Fully redesigned artwork for Retina display
  • NEW: Map View now displays path of currently recording track
  • NEW: KML supported for exporting
  • NEW: new filter option to eliminiate implausible track points
  • NEW in free version: Option to remove ads via In-App purchase
  • FIXED: Default Recording Settings not showing on Settings View
  • FIXED: speed would not be inserted in called tracking URL
  • FIXED: tracking ping would be disabled if Internet connection was lost

While at it, I needed a testbed for the new option of DTBannerManager to allow the user to purchase removal of the Ads, which can now come from iAd, MobFox or AdMob.

Finally, I added KML as export option because this can be readily used by FTLocationSimulator to simulate movement in iPhone simulator.

KML uses so-called line strings which contain way less information than GPX tracks. They only have coordinates and altitude, no timestamps. KML was designed to represent a recorded movement through space but rather static three-dimensional lines in Google Earth.

There IS a way to represent movement through time in KML as well, but it is extremely verbose as you can see from the whale example in Google’s KML documentation. It works by creating a place mark for each track point which is very ugly. I’m only going to implement that if it turns out to be “absolutely necessary” for a specific use case.

Therefore this version of GeoCorder has one “known issue”: KML cannot be used for GeoTagging because of the missing time information. For geotagging you have to stick with the GPX format.

The update is now with Apple and should be approved in a week or so.

MyAppSales 1.0.17

With Apple totally revamping the “Sales & Trends” and “Financial Reports” they gave a shiny and wonderful AJAX Interface. But at the same time, because of the lack of a public API, this meant that we tool vendors had to burn some midnight oil to get our downloaders fixed up again.

This version of MyAppSales is a maintenance release with these goals:

  • navigate the AJAX pages to retrieve Daily, Weekly and Financial reports
  • adapt to the changes in the financial reports format (reports would be empty)
  • Minor tweaks, like use the smaller financial report description when displaying report sums

I am still working on migrating the database into CoreData to be able to make it 4.x compatible. Currently there are lots of caching mechanism that cannot handle when the app is being killed, like when you remove it from the recent apps list. Another problem is that settings will not be saved. So until further notice you have to keep building it against SDK 3.2, it will still run fine on your iPhone with iOS 4.x.

The update is in the trunk of the subversion repository.

MyAppSales for Partners

A user of MyAppSales approached me and asked for the possibility to pre-configure the app such that he could give it to a partner of his. The goal was twofold:

  1. Pre-configure the account for iTunes Connect such that you don’t have to give your credentials to your partner
  2. Filter sales reports such that only the apps come through that the partner is receiving a share of sales for

… and all of this without impacting the other features like review downloading.

Since I have such a partner myself for which I’m now publishing 3 apps, I sat down and – after fighting with Xcode over a second target – added a couple of lines to the MyAppSales trunk to enable the “Partner Version”.

In the PCH file you enable and configure this special version by removing the // in front of the first define. Then you need to specifying your ITC credentials and an NSSet of Apple App Identifiers.

// to enable the partner version, re-enable the following define and fill in the three values below
//#define PARTNERVERSION
 
#define PARTNERVERSION_ITC_LOGIN @"account@server.com"
#define PARTNERVERSION_ITC_PASSWORD @"SECRETPASSWORD"
#define PARTNERVERSION_FILTER_APPS_SET [NSSet setWithObjects:@"335519920", @"329678407", @"374457741", nil]

I’ve added a filter for the specified PARTNERVERSION_FILTER_APPS_SET in two places to ignore all lines on sales report where neither the Apple Identifier nor the Parent ID is in this list. Since the app never sees any apps outside of this filter those also won’t pop up on the apps page.

For the preconfigured account, the app adds this ITC account if there are no accounts defined. So if your partner were to remove this account accidentally it would be configured once more on next app start.

All you need to do after configuring and building a release version is to zip and ship the app and provisioning profile to your partner. Easy enough?

GeoCorder 1.1.0

Some time ago I got approached by a corporate customer who was looking for a solution to have his vehicles report their location to his server. Previously he had been using Nokia phones and now he was looking to switch to iPhones. So I built a quick app for him, but due to lack of multitasking in iOS 3 it had limited use. But then Apple surprised us with backgrounding for location apps and suddenly make apps like GeoCorder all the more useful.

But I did not think that this mini tracking app by itself would make a good addition to the app store, so I insisted of merging this functionality into GeoCorder. So now GeoCorder can record GPX tracks for photo tagging or viewing in Google Earth and can also ping your server with a customizable HTTP GET.

  • Background Recording on iOS 4
  • UI improvements
  • Completely rewritten backend with CoreData engine
  • FREE Version: iAds on iOS 4 Devices with AdMob fallback
  • User Guide and Support
  • Map View centering on current Location
  • Tracker Mode to ping corporate server with location updates

For the UI you might notice that I moved the recording controls into the navigation bar. Also this is now using a tab bar controller to switch between multiple views with differing functionality. I switched the tracks view and the recording view because for a recording app the recording screen obviously is the more important view.

Once I started to think about the functionality of this app I suddenly had my head fill will lots of additional things, most of which did not make the cut for what is supposed to be a minor upgrade that turned into a 4 day project. For example I had considered adding Google Latitude updating as a Tracking choice. But 1.1.0 is meant to give my customer (and other people with similar logistics use cases) a tool which he can easily install through the app store.

The problem with those many ideas is that nobody is paying for their implementation. On both the full and the free version (ads) I’m making like 10 Dollars a week. Only if I see a dramatic uptake in downloads I will be able to afford implementing more features. But I’m still interested to hear your thoughts should you be amongst those few people who have a use for this uncomplicated app.

Maybe it helps a bit that I am also targeting iOS 3.x which still is the OS of choice for iPhone 3G. Where I previously had only AdMob ads, I have now also iAds on iOS 4 devices with AdMob being the fallback. I’ll report on how that goes.

I just submitted the app to Apple for approval. I tested orders of magnitude more than before and eliminated all bugs that I could find to make this a really high quality release.

Update Aug 6th: The update has been approved. What’s a first is that the review team approved the update first and later wrote a mail to me asking to add a battery disclaimer to the iTunes description. Apparently all apps using background GPS are required to have this in the description:

“Continued use of GPS running in the background can dramatically decrease battery life.”

So I added it. Much obliged!

Update: I found two bugs in the free version for which I just submitted update 1.1.1: Ads could not be tapped on and I had forgotten to include background location support.

MyAppSales 1.0.16

Apple changed two column headings on the financial reports because apparently the June reports are the first ones which will also show eBook publishers their revenues.

  • “Artist/Show/Developer” became “Artist/Show/Developer/Author”
  • “Label/Studio/Network/Developer” became “Label/Studio/Network/Developer/Publisher”

There where quite a few hot fixes that I had to put into MyAppSales and also if you look at the code you’ll see that it’s in the middle of being migrated to CoreData. The latter is necessary because the current method of caching everything is really ugly code whereas CoreData will permit me to make the app perform way better and it only fetches data I truly need.

Unfortunately (or fortunately depending on how you look at it) I’m very busy with a major project for the last few months, so I cannot really muster the time right now to carry through this migration. But because this is a point of stability in MyAppSale’s live that I can publish it as a new version. Lots of people where continuing to use the previous “released” version because for some reason they feared that the “2.0 BETA” in the Subversion trunk might be unstable. When in reality it aways was the code I’ve been using on my iPhone.

Speaking of iPhone 4, you still need to build it with SDK 3.2 until further notice for exactly the reason I mentioned above: ugly caching. It works fine on my iPhone 4.

Here are some goodies that I also hacked into 1.0.16:

  • Ability to remove individual reports. For example if something goes wrong during download.
  • You can opt to show a report sum on the overview pages. This is slower because for it the app needs to fetch the sales data, so it will impact scrolling. But if you don’t scroll much then its a useful number to see at a glance.
  • I’m now using the standard currency formatter for all amounts

Please update your copy from the repository as usual.

How to make your Hybrid-App crash for sure

I was quite happy finally getting the new polished 1.1 version of SpeakerClock approved. But there was one problem: people who tried to run it on iPhones with iOS 3.1.3 started tweeting me that it crashes. I was astonished, I was not aware of using anything from 4.0, I just had to set the base SDK to 3.2 to support hybrid mode.

Then I tried out the update on my wife’s iPhone which I kept at the latest released iOS version, 3.1.3. And it crashed. So I hooked it up and had a look at the crash report. There’s something about “doesNotRecognizeSelector”. This means I am calling a method that the receiving object does not recognize. Uh Oh.

Read more

Newly published: iOdometer

Previously I explained how I am approaching iPhone development in a broad spectrum. The vehicle for my business is a company called Drobnik KG, or as I refer to it in IT context: drobnik.com.

We have a publishing contract with young Laurens whose apps are already making up a major portion of our daily sales. The agreement works like this: I’m taking care of the stresses with dealing with Apple, submitting the app and maintaining the SVN-server where the apps are being developed. For this convenience Laurens is sharing part of the profits with us.

And profits they are! Over the last half year this arrangement netted Laurens sufficient funds to buy a Mac. Thus invigorated he sat down and developed a distance measuring app: iOdometer. This, too, is selling far better than I might have guessed. So I refrain from making any future predictions concerning Laurens’ success. For some strange reason he seems to exactly hit the nerve of what people are willing to pay for.

Maybe that’s because of the high quality components from Dr. Touch’s Parts Store he implemented: DTLEDNumberView and DTMenuController. Being able to rely on their sturdiness and ease of implementation he was able to focus on the app’s main feature set and bring it to market in record time.

iOdometer is available on the app store. Version 1.1 has been submitted to Apple, it features better accuracy and a new icon. Other successful apps by Laurens are Frequency Annoyer and Full Screen Browser.

SpeakerClock 1.1

My previous article covering an iPhone-to-Universal migration inspired me so much that I spent two days on getting the HD-upgrade for SpeakerClock ready to ship.

Changes

  • Universal app, runs on iPhone and on iPad in native resolution
  • Portrait Mode, now all orientations are supported
  • Now screen flashes in the appropriate color when threshold to yellow or red is passed
  • In-App Purchase for 5 presets instead of one
  • Lot’s of minor usability improvements

I didn’t know if Apple would approve an iPad-ready app if it did not support all orientations. So I implemented a mode for portrait orientations for iPad and retrofitted it for iPhone as well.

A big thank you goes to Erica Sadun who inspired me to take on these changes. When I met her on the Voices That Matter Conference in Seattle she played around with SpeakerClock as if it where the coolest of all toys, making me really proud of it. But I cringed seeing the iPhone-app on her iPad so I definitely had to make a HD-version. I dedicate this one to Erica.

I also added the information on how to start and stop the timer to the instructions. Some people did not understand that you can do so by simply tapping the screen.

Also this version marks the end of the “free trial” for SpeakerClock 1.0. As soon as it goes live I will raise the price. So if you want to get it for free, then better get it now. If you liked 1.0 then the new + button is your chance to show your appreciation, it will give you 5 instead of 1 preset. A preset saves the timer starting value, the yellow and the red threshold values.

Personally I use SpeakerClock whenever I’m recording YouTube videos. A couple of times I went over the maximum of 10 minutes and my handy timer prevents this for good. Here’s a demo of the old and new features.

SpeakerClock 1.1. has been submitted to Apple for approval.

UPDATE: … has been approved.

UPDATE 2: … has a nasty bug where it would crash on all iPhones with an OS Version less than 4.0. So I already submitted an 1.1.1 update.

UPDATE 3: The 1.1.1 hotfix is now available on the app store.

World Cup Pools App

In case you where wondering … I was busy with an app I did in cooperation with Andreas Heck of der.heckser. According to my time tracker I spent 87 hours on it to get it to version 1.0 and yesterday, after twoandahalf intense weeks we sent version 1.0 to Apple for approval.

Let me give you a VIP tour of the app, first showing off the prettiness and functionality of the app itself:

After that, the second part shows you how my Xcode project looks like and I’m explaining some of the hurdles we had to overcome. This is for you beginning developers out there, but I’m hoping – if you are a seasoned pro – you still might find it interesting.

For an app like this it is essential that you spread the work amongst several people if you want to be able to finish it in about two weeks. When I get asked by new customers I am always responding “I’m a programmer, not a designer”. That’s actually bending the truth. I could probably design a decent app if I wanted to. Although my personal method of designing apps is to: build it, try it, improve it, rinse and repeat. That’s the kind of approach which is hard to get paid for, especially if the typical customer is not willing to pay more than a thousand dollars a pop.

The second thing I generally try to avoid is server-side work. I have done a bit of VB.NET programming on my server and I could do most of the things I would need, but I just hate it. Cannot tell you why, I’m in love with objective-C and anything else feels wrong to me. And any app that is social or needs the cloud to work needs a server to run off of.

Often customers are not aware of these two factors, and the different skillsets necessary.

I was glad that Andreas Heck approached me for a partnership where I could do what I do best. And he did that with sufficient funds to get the project flying. I mention currency as one of the essential ingredients because generally funding is what makes or breaks an app. Sure, you can write apps in your spare time, but then they are ripening in months, not weeks. Not a chance getting it done before this year’s soccer world cup.

Also if you’re a full time iPhone developer like me, then two weeks of non-stop work mean that you have to make have of what you need to sustain yourself financially in that time. Otherwise you have to divide your attention between a project like this and a well paying one.

It’s as simple as that: there there are some areas where you are way better than others. Money buys you the difference in time. This project has again proven to me that great apps need a team, even if it’s just two people.

UPDATE: The regular version of the app was approved by Apple on June 2nd after requesting that we remove “FIFA” from the list of keywords. We used this as an opportunity to fix a couple of minor bugs and raise the version to 1.0.1:

  • FIXED: Potential crash after user creation
  • FIXED: Inconsistent use of … and > on tableview cells
  • FIXED: Invitations to Pools would show with a %20 instead of a space
  • FIXED: Issue with animation going straight to entering an e-mail
  • FIXED: Some too long German expressions

The pro version is still under review, but you get the same functionality if you purchase the normal version and then use In-App-Upgrade to Pro.

Available on the iPhone App Store