BuySellAds.com

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

Category Archive for ‘Updates’ rss

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

GeoCorder 1.0.5

Seems there is an ever-growing community about my little tool GeoCorder which I originally made to get GPS data for testing. It evolved into a light-weight utility many people use for geotagging DSLR photos.

A user informed me that I messed up with the 1.0.4 version of the free variant. Seems both versions got out of sync. The only difference should be that the regular version costs $1 and the free versions has a banner ad. So I went in and fixed a couple of things.

CHANGES

  • Fixed some memory leaks
  • Updated AdMob framework in free version
  • replaced a deprecated function
  • fixed the free/paid inconsistency

Now all the new features from 1.0.4 are also in the free version as it was intended.

UPDATE April 16th: I had to self-reject my binary because it appears that there was a bug in the ZIP routine. I also added an extra switch to not record events when you are not moving. I removed the 1 Meter setting for the distance Filter because it looks like CLLocationManager ignores that. This gets replaced by the switch.

UPDATE April 17th: Self-Rejected another time. User asked me to change the XML Version to 1.0 for compatibility.

SpeakerClock 1.0

I like to watch the TED Talks, it’s always something novel and instructive and makes me believe that the world is generally moving towards a brighter future led by a handful of rather bright fellows.

Now one thing these guys do extremely well is to give a TALK. Through experimentation it was found that at that length the speaker is forced to condense his message and be as clear as possible to get his point across. This constraint is enforced by the famous TED speaker LED clock. (It’s actually a countdown and not a clock, but people seem to prefer using the word “clock” over “countdown”)

This is a countdown at the edge of the stage which at a glance shows you what your remaining speaking time is. Also there is a traffic light of sorts. Shortly before the end of the time a green light switches to yellow to signal that you have to start wrapping up your message. Red means that it’s time for the closing remarks.

Obviously there are dedicated devices out there which aim to fill exactly the same need of visualizing a speakers time constraint. And of course there are a couple of iPhone apps providing this functionality. My second choice of the name of my app was taken by Talk Timer. Yet another is Speech Timer Free which provides the traffic light and the Premium version of it even allows for exporting of your speaking log.

I might continue to wish I were a great and inspirational speaker, but in the meantime one thing that I CAN do is make such a countdown clock for iPhone. I just had to do it, because the thought of the clock kept popping up in my head and kept distracting me from other projects.

My goal for SpeakerClock was this:

  • emulate the famous TED clock as closely as possible
  • use big red LED numbers (for which I had invented DTLEDNumberView)
  • allow for all customization and setting via touch gestures, all on the main screen
  • use the second page solely to showcase DTAboutViewController

Version 1 uses the maximum size possible of the digits that is available in landscape mode. Because of this you can see the digits from several meters away which is necessary if you want to position it so that you can move freely while giving your speech. To maximize the size of the clock I had to move minutes and seconds closer together and wrap the traffic lights underneath.

I made it a special point to finish the app within a single day and so I left out several things which I can put it if there is any interest in this app at all. The art of 1.0 is to concentrate on the required core features and leave some of your brilliant ideas for future versions. Here are some ideas still on my mental drawing board:

  • German localization (and other major languages) – language is not critical to understand usage of the clock all texts are on the instructions and about pages
  • Multiple Presets – might be an idea for a freemium upgrade
  • Recording of speaking logs, summing up your total speaking time, exporting, sharing …

I made a YouTube video to demonstrate the app:

I sent the app to Apple yesterday. SpeakerClock will be available on the app store initially for free to get user feedback.

UPDATE: 2 days after submission SpeakerClock is now available on the app store.

GeoCorder 1.0.4

It’s been almost a year since my last update to GeoCorder, which is a handy little tool to quickly record GPS tracks and mail them to yourself for viewing in Google Earth or geotagging photos. It’s a very simple tool which I wrote to get GPX tracks for my own testing. If you believe the reviewers it serves it’s purpose very well

Since then SDK 3.0 was released and with it the possibility of sending attachments in E-Mails. Before that time I had to resort to sending the files via my own web server, but with this update this is now no longer necessary. And lately some reviewers started to complain about this old mode so I finally found a day to sit down and polish it up, fulfilling all the reviewer’s requests.

Changes

  • NEW: Set a distance filter to conserve battery life
  • NEW: Export via E-Mail now uses InApp E-Mail (if available)
  • InApp E-Mail: optional compression of sent GPX files
  • InApp E-Mail: GPX file now named with timestamp
  • German localization
  • Minor UI tweaks

The update covers GeoCorder and GeoCorder [FREE] and has been submitted to Apple for approval.

UPDATE: 29 hours later the update(s) are through the review process. That’s new record for me.

MyAppSales 1.0.15 – "Holiday Fix"

The latest version of MyAppSales contains a fix for times when iTunes Connect is offline, but the ITTS reporting site is still running.

This way you still get your daily sales reports throughout the downtime for ITC which was announced to go from December 23rd until December 29th.

Another minor change is that review scraping no longer is requires for the app totals to be loaded because all reviews for all apps are scraped at the same time anyway. This is a minor startup speed benefit.

Merry Christmas and Happy Holidays!

UPDATE Dec 26th: Apple caught up on using the ITTS url for report downloading and shut this down as well, giving this message.

So, there now really IS no way to get to your daily reports anymore. We all have to wait until Dec 29th.

MyAppSales 1.0.14 "Go Faster Strips"

There are a couple of users of MyAppSales who have been collecting daily reports since the first feeble beginnings. Turns out that if you have upwards of 300 reports in your apps.db then the previous method of loading everything at program start has a major drawback. There is a watchdog timer which kills any app that takes more than 20 seconds to start which caused a couple of users grief because that’s how long it took to load on iPhone 2G or 3G if you had that many reports.

This release is all about startup speed. On my own iPhone 3GS I managed to get from 12 seconds down to about 2. Also I was intrigued by the request to add a Tweetie-2-like Pull-To-Refresh mechanism, so that’s in there as well.

Changes:

  • Pull To RefreshADDED: Added Pull-to-Refresh on all review table views. Just like in Tweetie 2.
  • CHANGED: If a review text or rating changes then the review will now be updated and marked as changed.
  • FIXED: Country assignments for some report regions where incorrect causing financial reports to be incorrectly rejected as duplicate. Fixed translation language for China.
  • FIXED: Changed from GET to POST for Google Translations to support extra long review texts.
  • FIXED: Bug would cause link between InAppPurchase and App to disappear upon restart
  • CHANGED: Rewrote totalling to cache and replace averaging
  • CHANGED: Numerous performance improvements
  • ADDED: Lazy loading for reviews for additional speed improvement on startup
  • ADDED: Transparent 2-stage loading of reviews to speed up opening of review page for an app
  • CHANGED: Made more UI elements opaque to speed up table view drawing
  • ADDED: Financial and Monthly Free download on Import/Export homepage

Generally if you have any issues after applying this update then please go to the settings page and tap “Empty Caches”. This removes all the cached .dat files keeping information for faster access.

Now that I am coding full time I can spend hours and hours on lots of things. I have to literally force myself not to take on too much before releasing a new version. I’ll have to start updating all my other apps, create some new ones and then there are some looming contracts.

MyAppSales 1.0.13 "Mo' Money"

This new release is about fully integrating In App Purchases (IAP) into MyAppSales. Until now I did not need for IAPs to be displayed correctly because none of my apps have them. But my friends over at Crowded Road kept insisting that this is a key feature, so I invested some time to give IAP the special treatment.

Changes:

  • FIXED: Prevent app from saving incomplete reports without a date. This would cause a crash on subsequent starts of the app. There are also additional measures to prevent loading such a report should it be present in the database.
  • FIXED: Added missing country FI as identifier for Europe region of financial reports.
  • FIXED: Added missing country CO as identifier for USA region.
  • FIXED: Correct spelling of country Vietnam. This would cause a financial report with this country in the first line to be detected as “rest of world”.
  • CHANGED: If you have reports from more than one app grouping (aka Apple account) then reports for those no longer show the apps of other groupings.
  • CHANGED: Apps and IAPs are now child classes of Product to allow for polymorphism.
  • ADDED: IAP Products are now kept in a separate table from apps
  • ADDED: IAP support on the overview and country detail report views
  • ADDED: IAP support for export via built-in web server

The other reporting apps I had a look at tread IAPs just like regular apps, because at first glance they look the same in Apple’s reports. They have an apple identifier, but it’s not valid to open iTunes with it. To tell IAPs apart from apps you have to look for the IA1 transaction code and the filled in parent code. In the table the transaction is represented as 101 because it needs to be numeric.

Personally I am opposed to showing IAPs at the same level as apps and therefore MyAppSales shows you IAPs as part of the total royalties and average daily sales on the app page and also integrates it into the report views. If you don’t have IAPs you will not notice any difference in the UI.

Still you are encouraged to update your working copy to the latest version in the repo’s trunk or the release-1.0.13 tag because of the multitude of small fixes contained and for IAPs to be handled correctly should you ever have any on any report.

Bug reports or feature requests please add to my bug tracker.