Crossfit Total Just added to Appstore

crosfitTotal120x120 Quickly calculate your crossfit total. Just follow the rules of lifting a total where you are allowed 3 attempts:

SQUAT
PRESS
DEADLIFT

After each lift enter your weight into the calculator and when you finish, simply hit the calculate button and find out your CF Total.

GitHub-Mark-120px-plus

Sunset Utility Open Source Code

A little while ago I wrote a simple utility that can be added to your iOS project that allows you to notify users that you are shutting down this app. It is available on github and free to use.

You can refer users to a different app if you like. You can also stage the rollout with a cancel button that allows users to keep using the app. Then you can set a switch to only allow download of the new app.

MMWormhole is great.

I have not posted anything in a while, but wanted to just link out to a really cool open source tool for working with Watchkit.  It is called MMWormhole and it let’s you send data from your watchkit extension over to the parent app and back again.  The really cool thing is it is setup for notifications.  Your app is listening for the data and can act upon it when the data is received.  This is really helpful with iOS7.  Great work Mutual Mobile.

WatchKit – Day One

WatchKit was made avaliable today by Apple.  I have had just a quick read but this is a key to categorizing the different types of interactions.

  • Your Watch app contains your app’s full user interface. The user launches your app from the home screen and uses the app to view or manipulate data.

  • glance is an optional read-only interface that you use to display the most timely and relevant information from your app. Not all apps need a glance, but having one gives the user a convenient way to access your app’s data.

  • Custom notification interfaces let you alter the default interface displayed for recently received local and remote notifications and add custom graphics, content, and formatting. Custom notification interfaces are optional.

We know that Watch Apps require an iPhone to run third party apps.  That is an interesting wrinkle.  What does that mean for fitness apps?  At least non-Apple fitness apps.  I hope to know more in the coming days.  I will put together some kind of proof of concept app to learn a bit more.

Also, we know that based on a recent press release from Apple that third party developers will have to wait until later in 2015 until they can ship full watch apps.  This means our apps are going to fall into the category of either glances or notifications.  It is not exactly what I was hoping for, but interesting none the less.

I will post something more after I get a little more time with WatchKit.

 

refs.

https://developer.apple.com/watchkit/

http://www.apple.com/pr/library/2014/09/09Apple-Unveils-Apple-Watch-Apples-Most-Personal-Device-Ever.html

Note to self: In-App Purchases

Every time I go to add an in-app purchase to one of my apps, I forget the pattern that was set up for my Product Id.  I like to use the reverse domain and the product name tagged on the end like Apple suggests.

 

A product identifier is a string used to uniquely identify every product you wish to sell from your application. The App Store uses it to retrieve information about a product. It is a string identifier that can only contain alphanumeric (A-Z,a-z,0-9), underscore (_), and period (.) characters. You can use any sequence of these characters for your identifier. However, we recommend that you use the reverse domain name style (for example, com.companyname.application.productid) when creating your identifier

 

Hopefully by writing this post it will help me remember that I have this set up this way.  Burned a couple of hours trying to figure it out and it was right there all along.

Here is the link to the Apple Documentation.

Xcode 6 fixed archive functionality

I just noticed that in Xcode 6, you no longer have to disconnect your device to build an archive.  In the past I always forget to disconnect and it would drive me crazy.  I see that now, it does not matter if the device is connected or not.  Very nice.

This week I ran across an interesting problem. I was taking an older version of one of my company’s apps and making some minor feature adjustments and redeploying. I spent about 5 hours updating the code, debugging and testing. I then spent about 16 hours trying to get the changes to deploy on my device.

What was strange is, this had never happened before with this app and I had other apps that I made changes to where there was no problem.

Here are the scenarios:

Created a debug build and deployed to my iPad and iPhone directly from Xcode.

Specs:

Macbook Pro 2011 - OSx Yosemite 10.10
iPhone 5 - iOS 8.1
iPad 3 - iOS 8.0.2

This build worked as expected. Nothing really to report. I was working in this method for the entire development cycle.

Created an enterprise build and deployed via the classic Testflight service.

When I tried this method, a few unusual things happened.

1. The app loaded as expected, but the icon was in a disabled state where you could not launch the app and it was semi-transparent.

2. I also received the error message: “Unable to Download App – ‘Appname’ could not be installed at this time.”

download error

No matter how many times I selected retry I received the same message. I figured that I set up the certificates incorrectly. But after revoking the certificate and recreating everything I was convinced that this was not the problem. I also used iTunes and tried to drag and drop the app right on the device with the same results.

Next up was scouring stack overflow, I found a few helpful tips, but I did not really find anything that solved the problem.

At this point, I started looking at some of the core files that are used to load the app. I started
comparing some of the core app files to the app that I had that was working. I quickly identified that that info.plist was different between the two apps.

I renamed the non-working app plist and copied the working plist over. I did and enterprise build and it worked just as expected. At this point, I took the working plst and added all of the custom settings from the backup and everything still worked as expected.

I can’t say for sure but it looks like there is some difference in the legacy plist that does not agree with the new way of doing things.

Problem solved, I don’t plan on breaking this down any further, but I am going to submit a Radar to Apple, they may want more information, if so, I will update this post.

 

 

edit: added Radar.  Issue ID: 18784520

Configuration Web Services

There are several excellent open source projects out there that allow developers the ability to add excellent utility to their apps.  There are apps to help your app store rating, force users to update their app, provide users with release notes and tons of other cool things.  One of the things we have found really useful with Crushmedia.net apps are controlling all of those great utilities from a webservice config call.

 

We have started working on our own open source project to create an SDK that wraps up all of those utilities and supports them with a web service.  We have a demo of the web application that gives you control over the web services and we are following that with an open source version of the SDK.

We still need to do a little clean up to let the SDK out in the wild, but so far it is working really well for us.  Can’t wait to share.