Apple is planning an outage over Christmas, ’tis the season.
My script (aka “Show Notes”) after the fold below.
Swedish National Broadcaster SVT created a website at DearSteveJobs.com asking Steve Jobs to quickly approve they app. The video demo shows how you can watch swedish TV shows directly from within their app, possible this being the problem that Apple has with the app. I suspect that Apple might prefer if SVT put their shows on iTunes. Though this is an interesting precedent and we have seen Apple approve the Knocking video streaming app after the developer wrote an e-mail to Steve Jobs.
9TO5 Mac reports that about 3%, that’s one in 34, product searches in the UK are for iPhone or iPod Touch. While that this does not mean that all those people are actually going to GET an Apple device under their Christmas tree, it still is good news for us developers as it means that interest in our platform continues to increase. And by the way Apple continues to rake in the cash from way increased sales across all products in their forth quarter. More people getting Apple devices mean a bigger market for selling apps.
Developers report that currently reviews seem to start much faster. One developer tweeted that his app went from “waiting for review” to being “in review” within 2 hours. Clearly Apple has bulked up on their stock of reviewers for the pre-Christmas push everybody is expecting. ‘Tis the season!
Apple sent out another reminder e-mail to tell us that iTunes Connect will be closed over Christmas:
Dear iPhone Developer,
iTunes Connect, the tool you use to manage your applications and access your reports, will be unavailable December 23 through December 28, 2009.
Access to iTunes Connect will resume on Tuesday, December 29.
iPhone Developer Program
So if you are doing any kind of Christmas promotion, be sure to make your changes on December 22nd and take note that your reduced prices will have to stay in effect until December 29th. Also you should sync up your report downloader until the very latest possible day and ignore messages of unavailability until it starts to work again. You also won’t be able to submit updates to your apps during this period. And if you want to give away copies for your apps, then stock up on promo codes as well.
Some well known developers report of problems with the update process. One tells us that he decided to have his update have a higher minimum iPhone OS version. But the iTunes servers got out of sync. So they served and permitted installation of the new OS 3 binary on iPhone OS 2 causing crashing upon app start. We can easily imagine that the formerly pristince ranking went straight down to 1 due to thousands of complaints. This unlucky guy has an installed base of around 70,000 users, a quarter of which is still on iPhone OS 2. Apple has still to officially respond or take ownership of the damage done.
So currently it might be smarter anyway to delay major updates until the new year or as of such time that Apple manages to get the iTunes servers back in synch. Maybe the coming downtime will be used for this as well. We are keeping our fingers crossed.
If you ever get feedback from a BETA tester that your ad-hoc build does not work, then you might be facing a jailbroken iPhone. If the device was jailbroken with blackra1n we found the following problem: you cannot use the “-o kill” extra flag for code signing. This optional setting causes launchd to kill the app if the signature is invalid. For an unknown reason blackra1n aparently prevents ad-hoc signatures for being correctly verified causing this kill to be occuring. To prevent the problem from happening, simply don’t do a -o kill for ad-hoc builds. App Store builds don’t have this problem as our tests have shown.
Speaking of jailbroken device troubles. If one of your customers reports that InAppPurchases don’t work and that he is getting a message about his account not being a sandbox account then you know two things: a) it’s a jailbroken device and b) the user has installed an app by the name of AppSync. AppSync allows for synching pirated apps by patching the installation files to be installable without iTunes. And to do that it seems to lock the device into sandbox mode if there where no previous purchases. To get InAppPurchases to work tell your user to remove your app, remove AppSync, re-install the app and then do the purchase.
According to a post on a cracker forum the reason for InAppPurchases not working is that in order to install unsigned IPAs they need to patch installd which in turn causes the described problem. That’s good for us developers because it causes an extra hurdle for people willing to put cracked software on their iPhone. As more and more apps feature InAppPurchases users will have to decide whether they want to be able to use AppSync for easy installation of pirated copies or if they instead want to have the possibility of purchasing additional content and features for their favorite apps.
Don’t forget to open todays window on appventcalendar.com. There you get one free game every day until Christmas. Because of this I don’t give you an app tip today for an external app, but instead like to highlight the Nike+ app which is to be found on every iPhone 3GS. For the past 2 weeks I’ve been doing a short run every weekday and I always had the Nike+ app running so that I can record the running stats for my Nike+ online profile.
If you are running and using an iPod to listen to music or podcast while doing so, I definitely recommend getting a Nike+ receiver for your shoe. It’s like $20 or so and as a technophile I can vouch for the motivational effect this has on me doing sports. I was using Nike+ on my iPod Nano previously, and I was excited to learn that they finally built the receiver into the iPhone 3GS.
To enable the whole thing all you need to do is stick the chip to your shoe in some way. No need to get extra Nike Shoes which have the space to put the sender under the sole. You can carve out the space yourself with a sharp knife or you can use some duct tape to mount it. Because the sender has nearly no weight it is easy to mount it on the shoe.
Then you can enable the Nike+ app in the general settings of your iPhone 3GS and you are good to go running. Next time you plug in the phone the training data gets sent to Nike+ online where you can view stats on how you are improving and you can take part in events where your distance is counted either as part of a group effort or for yourself in a race.
You can also directly challenge other Nike+ runners. So if you are running and use Nike+ then let me know, we’ll either go head to head or maybe we can do a race against Android developers.
A few days ago I reverse-engineered Apple’s Calendar View for use in my own apps.There one month basically consists of up to 31 views which I was alloc-initing for every day. And when a day rectangle moved off screen then I would evaporate them individually. This worked fine on my MacBook Pro iPhone Simulator, but it turns out, that this is a bad idea on device, because it would noticably slow down going quickly from one month to the next.
Generally if you can avoid this, then do so. Alloc-init for views takes relatively long. So what I did for my CalendarView was to create a NSMutableSet and before I would call removeFromSuperview on my views I would first addObject them to the set. Next time I needed a day view, I would check the set if there was anyObject and if yes I would reuse this, making sure to retain it before popping it from the set.
A simple trick like this is quite similar to what you are used to doing with tableview cells. But my performance tip of the week is that you can do the same for every kind of view that you like. Just throw them into an unordered and mutable set. In my case this made my calendar smooth as butter.
I found my way of distributing MyAppSales and AntiCrack very rewarding and so I will be making available the source code for my Calendar implementation under the same terms. You donate any amount of dollars you feel appropriate to my PayPal account email@example.com, note that it is meant for CalendarView and I will send you access details for the svn repo where I am continuing to develop it. So you get the benefit of getting production grade code with appropriately defined interfaces and at the same time you are able to ask for specific features or customization capabilities that you might need for your work. This way I myself benefit from your ideas and by learning how to make my interfaces such that they will work for everybody. Clean, reusable code is my goal.
CalendarView will be the first of many things in my “Dr. Touch Parts Store” where you can obtain high quality components to use in your own projects for a small donation. The concept is that this small amount of money pays for the time I need to continue to improve those, support them and help you with implementing them.