Showing posts with label iOS. Show all posts
Showing posts with label iOS. Show all posts

Sunday, March 17, 2013

Promotion ideas

As I mentioned, we had 21 players when iOS launched two weeks ago (we decided not to hide anyone on leader board based on activity, yet).  Kent and I sent out some emails and Matt has been telling people, and now we're up to 36.  Still not growing as fast as I'd hoped, so now we're talking about some other promotional ideas.  So far,

  • I ordered 1500 color business cards from Vistaprint to hand out to people at Planet Comicon, or anytime.  They always have great deals on business cards.  We uploaded our own design, full color, front and back.  1500 was around $50 with shipping using one of their coupons.  Here it is:


  • Matt has this week of for Spring Break, so he wants to put up some fliers at some game stores and other places.  So I made a basic black and white flier that I think looks okay.
  • We looked into printing 8x10 card stocks pictures of monsters to sell at Planet Comicon.  They were about 50 cents each online, but it seems scary to order online without seeing finished product. And that was for a batch of 100 of same picture. Kathleen found we could get 5x7s at Kinkos for about the same price, but in smaller batches of 25 per picture, and we can see before we order.  So we'll do that and get 100 to try to sell for $5 each at show
  • Also going to get a banner to hang on table at show for around $50.
  • Kathleen still hasn't sent her email out to people, so that will definitely help too.
  • Eventually, I will run a Google AdSense ad too.
It will be very interesting to see how each of these things does and what the # users / dollar spent will be for each one.

Saturday, March 2, 2013

In App Purchase product sequencing

One last minute change I had to make right before submitting Monster Cache for review was that the In-App Purchasing products on iPhone were displaying in what seemed like a random sequence.  For iOS, you send a request to the App Store for your available products, then it returns you a list of your products.  I iterated through the list in the order it was sent, and the order was not the sequence I wanted.

What was really happening is they were sorting based on their hidden product ID.  Well, I put numbers in those representing numbers of coins, like coins50, coins100, coins500, coins1000, etc.  As many people know from sorting music tracks with numbers, they don't sort numerically, they sort alphabetically, so 100 comes before 50 because it starts with 1 which is less than 5.

Once I figured that out, I considered trying to sort the array that they returned before I iterated through it, but it wasn't just the product ID's, it was an array of objects.  That seemed like too much hassle, so I just deleted and recreated half of my in app purchasing products to give the product ID's leading 0's, like coins0050. (You can't change a product ID once it has been set, which is why I had to delete and recreate).

Monday, January 21, 2013

iOS 6 caching Ajax data

Wow, it's been a crazy 24 hours for MonsterCache development.  Kent and Joshua had found a few bugs once they got their iOS versions of the app.  Sunday morning I got a chance to work on them and fixed most of them!  So I sent Kent a new version with:
  • sound for caught monster fixed in iOS
  • restyled popup windows
  • splash screens
  • badge images now showing up
  • "Recenter Map" button
I was very excited about the progress!  But there was one issue I couldn't figure out.  He said that each time he logged in, it was resetting his nets and coins back to their original values, even after he had used some nets and coins.  This was a new account for him, so every time he logged in, it just said 100 coins and 5 nets.  I asked him to make sure he did a Force Quit and try once more and he said it does same thing after many Force Quits.  So then I was depressed because this sounded like a major problem.

All that data is stored in window.sessionstorage, so I thought something was wrong with that, and that the values wouldn't overwrite. I've never heard of an issue like that. I just kept searching and couldn't find anything. I *thought* I had not seen this in the ios simulator in XCode.  But I think I didn't see it before because I occasionally have to do a "Reset content and settings" which must clear the cache. Or I just didn't notice.  Luckily I tried one more time to duplicate in the simulator before sending a version with some little storage tests to Kent and I was able to duplicate it.  I bought a net, logged out, logged in, and it showed the old numbers.

From there, I just had to put in a couple of alert() boxes to discover that the data coming back from the Ajax login call was incorrect.  The storage wasn't the problem, the data coming back from the login call was cached data! iOS was caching those results, which is terrible because the result changes all the time.

Turns out over 630 people had the same frustration, as evidenced on stackoverflow:

Now I'm back to excited!  I think I introduced a small bug yesterday with the "Show Found / Hide Found" monsters, and I still have some JavaScript confirm() boxes to restyle, so I need to make a few more fixes.

In the meantime, Kathleen spent a couple hours MonsterCaching yesterday and has blown by Reed on the leader board.  She now has 33!

Saturday, January 5, 2013

Phonegap In App Billing plugin for Android - v2 API

Yesterday I got motivated to make my first PhoneGap contribution.  I planned to add some calls to a couple of API functions that weren't implemented in the plugin.  I don't know Java, but I hoped that I could just copy some parts that were making other API calls and just make the changes for the calls that I needed.

As I started looking at the Java code in the plugin, I noticed that there was basically just one API call being made with a different command message being sent as a parameter.  That wasn't what I was expecting to see.  So I started looking back at the Android API documentation and found that the calls being used in the plugin were from the version 2 (v2) API.  The v3 API is the latest, but just came out in last month or so.  But its quite a bit different.  So essentially the plugin would need a major upgrade to support the v2 API.  Not knowing Java, that seemed to be too much for me, so I had to give up on helping with the plugin :-(

And MonsterCache will just have to get by with the v2 API features for now.  The two v3 features I was trying to implement were:

  • Getting the list of available products and prices from the store.  I can store those myself, but getting them from the Play store may send you a converted currency in other countries, I'm not sure.
  • Consuming items.  In v3 all items in the store are "Managed", meaning Google keeps track of whether a user has bought them so that they don't have to be bought again.  But if your item should able to be bought again -- like in-game currency -- then you have to "consume" the item so that the user can buy it again.  In v2 though, they have "Unmanaged" items, and you can still make those in the Play store, so v2 still works
So once I coded for v2, it looks like Android In App Purchasing is working.  I'll have to have my test user (my wife) run a test tomorrow to be sure.  Google doesn't let you buy your own product.

I also got a JQuery popup dialog working today.  That was very good because I have lots of basic ugly alert() boxes that I could replace now with something that would look better.

Tomorrow I'm going to take a shot at the iOS In App Billing plugin.

Monday, December 31, 2012

First iOS users

I didn't get to work on MonsterCache much over the last week and a half because of Christmas week.  My parents came to visit on the 23rd and stayed until the 30th.  For Christmas, my brother, Matt, got me a Weregoose shirt, I got Kathleen a monster group shot shirt, and Matt got MonsterCache shirts for his kids too.

But one thing I did get done while my parents were here is I got the game loaded on their iPhones!  Once I finally completed my Apple Developer signup, the process of getting the app on the phones wasn't too bad using XCode.  I found 2 issues on iOS though.


  1. Once again, just like Android, I had trouble getting the launch icons working.  My mom had iOS 6.x and my dad iOS 5.x, but I couldn't get the launch icons or splash page to work on either :-(
  2. No sound for catching the monster.  That's something I added recently and definitely not essential, so no real big deal there.
They had a little trouble with registration too, so I'll make some tweaks.  But Mom is off and running, 8 monsters this week, in second place behind Kathleen!

Sunday, December 16, 2012

iOS progress

Let's start with the good news.  Last week I built the MonsterCache app on the Mac with PhoneGap and it went quite well!  The only thing that didn't go smoothly was installing the Google Analytics plugin for iOS.  Eventually I remembered that I'd already downloaded it in a .zip file with plugins for different phone OS's.  And eventually, I found the instructions for installing the iOS version of the Analytics plugin.  It was exciting to see the first page in the simulator:


This weekend was the first test to load it on someone's actual iPhone.  That didn't go well.  

The first problem was my Apple Developer account.  I thought that I could load the app onto a phone connected to my computer without doing anything with the Developer account. For that reason, I hadn't even signed up for the Developer account yet.  Once I found out we needed to, I went to sign up and found that the approval process can take 24 hours.  So that killed our hopes for trying it that day.  Incidentally, I signed up yesterday afternoon, a Saturday, and haven't heard anything back as of Sunday night.  So I guess maybe they mean 1 business day for approval???

The second problem was that my friend's iPhone was an older one, a 3GS.  That would have been fine if the OS had been kept up to date, but it was still on 4.0.x.  Turns out the version of the iOS SDK that I'm building with in XCode only supports 4.3 or higher.  We hoped we could upgrade, but its not easy to upgrade to any iOS version that isn't the latest.  The latest is 6.0.x and apparently 3GS iPhone's don't run that very well.  So besides the Developer account issue, the particular phone we had wouldn't have worked anyway.

My parents are coming in to town for Christmas and they have iPhones, so looks like they will be my first iOS beta testers.  In the meantime, I changed the "Forgot Password?" handler to send a password reset link instead of the password itself in clear text. I've been needing to do that for a while, so glad to have that off the list!