Thursday, March 11, 2010

Verizon vs. AT&T – Red States vs. Blue States

December 14th, 2009 by s

I’m continuously amazed at how many people are using the Prayer apps I wrote (Prayers to Share for Android and Christian Prayer Journal for the iPhone). The Android app now has over 11,000 active installs. I thought the rate of downloads and usage would taper off, but things are still growing at a rate where I’m starting to worry about my server. One of the best things about this app is how people continue to use it every day while most of my other apps get downloaded and removed shortly after when people get bored.

One thing I’ve been tracking is that while these two apps are essentially the same app, it’s MUCH more popular on Android than on the iPhone.

Android Market vs. iPhone App Store
Here’s a quick screenshot of the current Android Market stats:
Android Market
Androids Praying
Prayers to Share is getting between 250-500 downloads per day in the Android Market. But the same iPhone app gets 25-50 downloads per day through the App Store.

The 10x difference is no doubt due to ease of discoverability on the Android Market vs. the App Store. It’s a Top 20 Most Popular App in the Social Category of the Android Market and is easy for new users to find while it’s buried in the iPhone App store listings.

Red States vs. Blue States
But I had a funny conversation the other day about Verizon Red States and AT&T Blue States. It was probably a result of being hammered over the head by too many Verizon commercials, but more likely due to too much caffeine.

Verizon-AT&T Map

Here’s the gist of it:

“Those Verizon commercials with the Red and Blue maps remind me of Republican Red states and Democratic blue states.”

“If you actually look at the AT&T blue map in the commercial, it’s pretty sad. It looks like it’s just the coasts and major metropolitan areas.

There’s some truth to those commercials. People I know in NYC and the West Coast love their iPhones, but my friends in the midwest won’t even consider an iPhone because AT&T coverage is so poor near them. Not just 3G coverage, they have a bad perception of any AT&T coverage in their area.

Maybe that’s why Prayers to Share does better in devout Verizon Red States than wicked AT&T Blue States.

Well, there have been several prayers for God to end abortion from Android phones and one person even prayed for Obama to be shot.

Hmm, maybe I should just focus on pious Android apps for Red States since the amoral iPhone app market is pretty crowded.”

OK, maybe I should cut back on the caffeine.

Posted in Android, iphone | No Comments »

Most Popular iPhone and Android Bucket List Items

November 23rd, 2009 by s

Android Bucket ListSo my Bucket List apps have been doing well on both the iPhone and Android.  We surpassed 22,000 bucket list items shared this past weekend.

It’s a little tricky finding the most popular “things to do before you die” because people phrase things differently, but here’s the Top 20 Most Popular Bucket List Items shared so far on both apps.

Most Popular iPhone and Android Bucket List Items
1. Skydiving (#1 by far)
2. Get married
3. Swim with dolphins
4. Get a tattoo
5. Go on a cruise
6. Write a book
7. Go to Hawaii
8. Scuba Dive
9. Run a marathon
10. Buy a house
11. See the pyramids
12. Have kids
13. Go to Italy
14. Go to Vegas
15. Fall in love
16. See the northern lights
17. Visit Australia
18. Go to Ireland
19. Bungee Jump
20. Hot Air Balloon

Posted in Android, iphone | No Comments »

iPhone AppStore Rejection – Personal User Data

October 22nd, 2009 by s

Aargh, I got my first iPhone app rejection!

My first 6 submissions and updates all went smoothly, but this time I got dinged by the dreaded “device data collection”/”personal user data” notice for uploading info to my webserver.

Your application cannot be posted to the App Store because it violates section 3.3.6 of the iPhone Developer Program License Agreement:

“Any form of user or device data collection, or image, picture or voice capture or recording performed by the Application (collectively “Recordings”), and any form of user data, content or information processing, maintenance, uploading, syncing, or transmission performed by the Application (collectively “Transmissions”) must comply with all applicable privacy laws and regulations as well as any Apple program requirements related to such aspects, including but not limited to any notice or consent requirements. In particular, a reasonably conspicuous audio, visual, or other indicator must be displayed to the user as part of the Application to indicate that a Recording is taking place.”

Please refer to the attached images.

Please make it clear to the user that their personal user data is being uploaded to your server, and obtain their consent before submission.

I think I screwed up with my fix, though.  In the new version, I now throw up an alert each time someone shares info with my server which is sure to annoy users.

After googling a bit for this type of rejection, it looks like they’ve changed the verbage of this rejection, and they used to suggest a solution with this type of rejection:

Your application cannot be posted to the App Store because it violates section 3.3.6 of the iPhone SDK Agreement:

“Any form of user or device data collection, or image, picture or voice capture or recording performed by the Application (collectively “Recordings”), and any form of user data, content or information uploading, syncing, or transmission performed by the Application (collectively “Transmissions”) must comply with all applicable privacy laws and regulations as well as any Apple program requirements related to such aspects, including but not limited to any notice or consent requirements. In particular, a reasonably conspicuous visual indicator must be displayed to the user as part of the Application to indicate that a Recording is taking place.”

Please make it clear to the user that their personal user data is being uploaded to your server by way of an alert upon first launch or a text label before the score submission.

I’m tempted to reject the current binary and make the warning less obtrusive, but I don’t want to reset my place in the approval queue.

Posted in iphone | No Comments »

iPhone Tech Talks Filling Up

October 22nd, 2009 by s

We are pleased to confirm your registration for the iPhone Tech Talk in San Jose on 29 October 2009.

Woohoo! I was worried I wouldn’t get in this because I was slow in applying, but I managed to get in. Four of them are already full, so don’t procrastinate!

The agenda looks great, except there are so many good sessions it’s tough to choose which one to attend.

iPhone Tech Walk World Tour

October 29—San Jose FULL
November 2—Seattle
December 1—New York FULL
December 3—Toronto
November 9—Paris
November 11—London FULL
November 13—Hamburg
December 2—Beijing
December 15—Tokyo FULL

Posted in events, iphone | No Comments »

July and August Mobile Events

July 15th, 2009 by s

I missed these the last time I posted about events.  Here are a few more mobile/geo events around Silicon Valley this summer.

July 21
Web Map Social Mountain View, 7pm
NASA WorldWind, Brightkite, WeoGeo + networking

July 22
Silicon Valley Android Developers Palo Alto, 6:30pm
App demos and how to program in Android

July 27
iPhone Business Meetup Santa Clara, 6pm
Challenges and Opportunities for iPhone in Enterprises

July 28
Verizon Developer Conference San Jose, CA

July 28
Palm Pre, Mojo, and webOS Meetup Sunnyvale, 7pm

August 7
GTUG Campout Mountain View
Weekend Hackathon on Google Technologies

Posted in Android, Mobile, Palm Pre, events, iphone | No Comments »

Clang for iPhone – syntax error before ‘AT_NAME’ token

July 6th, 2009 by s

So I finally got tired of struggling with Instruments trying to find memory leaks. I first read about Clang a while ago , but just filed it away to check out later.

But Instruments proved too frustrating, so I downloaded Clang from here. It was a little tricky to install, but after a few hurdles, I found 20 memory leaks in my app. If you’re developing iPhone apps, you really need to check out Clang if you haven’t already.

Two things tripped me up in the installation process.

1. Could not find clang-cc line

The solution for this was at cramfighter.com. Basically I need to change some projects settings.

2. syntax error before ‘AT_NAME’ token

This was tricker to figure out because there errors weren’t in my files and looks like the problem started with the 3.0 SDK. I ended up going with this solution as a temporary workaround. This involved commenting out the UILocalizedIndexedCollation.h import in UIKit.h.

As is often the case, after I got things up and running, I found a great page with an intro to Clang at fruitstandsoftware.com.

Posted in iphone | No Comments »

iPhone File Upload Progress Bar

July 3rd, 2009 by s

So I’ve been working on an iPhone app that uploads a file to a website through a POST request. At first I just used a standard Activity Indicator during the upload, but every time I would test out the app out around town, it made for a terrible user experience because uploading an image can take a while.

I’d tried a few times to get a nice Progress Bar showing how many bytes have been uploaded, but gave up because I could never get it to work. Then today I noticed the didSendBodyData delegate method for NSURLConnection. I don’t know how I missed this before, but I feel like an idiot.

NSURLConnection Class Reference

connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
Sent as the body (message data) of a request is transmitted (such as in an http POST request).

- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSINteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
Parameters

connection
The connection sending the message.
bytesWritten
The number of bytes written in the latest write.
totalBytesWritten
The total number of bytes written for this connection.
totalBytesExpectedToWrite
The number of bytes the connection expects to write.

Discussion

This method provides an estimate of the progress of a URL upload.

The value of totalBytesExpectedToWrite may change during the upload if the request needs to be retransmitted due to a lost connection or an authentication challenge from the server.

Posted in iphone | 1 Comment »

Upcoming Events

July 2nd, 2009 by s

May and June has a lot of great events. These look promising for July and August.

July 14 San Francisco Android Users Group, San Francisco

July 20-24 OSCON 2009, San Jose

July 31-Aug 2 iPhone Dev Camp 3, Sunnyvale

[Probably Delayed] Pre Dev Camp, San Francisco

Aug 12-13 Open Source World/Foss Dev Camp, San Francisco

Posted in Android, events, iphone | No Comments »

iPhone Location Browser with Latitude and Longitude

August 20th, 2008 by s

I’ve been working on a native iPhone version of Metosphere for a while, but after talking to several people I’ve decided to go in a slightly different direction. I’m about to submit this to the AppStore, but I wanted to bounce it off a larger audience first.

I’ve run into several web developers who want to make cool webapps for the iPhone using its location information.  Unfortunately, even though they’re killer web devs, there are several hurdles to overcome such as not having a Mac, needing to learn Objective C, obtaining a certificate, etc.

So I proposed we just create a generic, skeleton, native iPhone app that would access our websites using UIWebView and do all the heavy lifting on the web side.  A generic browser with a URL bar at the top but providing CoreLocation information to the website.  Essentially, like Safari but allowing the website access to location information.

This solved several of the issues we’d been thinking of:

  • We don’t all have to pay the SDK fee and spend weeks/months learning it.  Web developers can focus on web development.
  • Each of us doesn’t have to go through the hassle of creating an app, getting it approved, and maintaining it over time.  We can just share the generic browser/client.
  • The App Store is just going to get more crowded, I’m already getting tired of installing apps and uninstalling them right away.  A general location browser allows someone to quickly try out a site without having to find and download an app.

I’d like to see this project open-sourced, although there’s been a lot of confusion recently if that’s allowed with the current SDK agreement.

There are some folks working on similar concepts like PhoneGap and WebToNative, but I think there’s room for a completely simple solution like this.

Ideally, location information would be an option to expose within Safari, but I’m not convinced that will ever happen.  There are serious privacy issues if something like that were built into Safari, and it’s definitely not for most people. But there’s a subset of folks out there that have a use for something like Metosphere.  Kind of like the location info provided in Google Gears or  the Skyhook Firefox extension.

I was hoping to provide Lat/Long information to websites through HTTP headers, but that’s not available in UIWebView, so webpages that want location information from the Metosphere browser will need to include a simple Javascript function.

Here’s a summary of how this works:

  1. Install Metosphere on your iPhone (hope it gets approved!)
  2. Create a webpage with a Javascript function called updateLocation that looks something like this:
    <html><head>
    <script language=”javascript”>
    var latitude=0;    //these will be set when the Metosphere browser calls updateLocation()
    var longitude=0;function updateLocation(metoLat, metoLng){
    latitude=metoLat;
    longitude=metoLng;
    document.getElementById(“message”).innerHTML = “Your latitude=”+latitude + ” and longitude=” + longitude;
    //now do something cool with latitude and longitude set
    }
    </script></head>
    <body>
    <div id=”message”>Location not available</div>
    </body>
    </html>
  3. Enter your webpage’s URL in Metosphere’s location bar and your page should have access to the latitude and longitude.
    iphone latitudeiphone longitude
  4. Create a webpage/webapp that does something cool with this location information.

iphone native

Anyway, that’s the current direction for this project.  Some cool features to add down the road would be:

  • integration with Yahoo’s FireEagle
  • a setting to allow the browser to periodically update location info at set intervals
  • the ability to create extensions like Firefox

Posted in Location, Mobile, iphone | 6 Comments »

iPhone Location Browser

April 10th, 2008 by s

I often run into difficulty explaining the concept of Metosphere since I don’t always have my laptop with Android emulator at hand. So I whipped up an iPhone webapp that has similar functionality to the Android version.

I decided to focus on an iPhone webapp for now, since most people I know have unJailbroken iPhones. Thankfully, FireEagle handles the location info nicely. The backend is the same, so any geospatial information created in either the iPhone or Android version shows up in the same, um, metosphere.

Features:
- Create geotagged objects at your location (messages, alerts, events, reviews, etc.)
- View geotagged objects created by others in your proximity (list or map)
- List nearby events from Upcoming and Eventful
- List nearby geotagged Wikipedia pages
- I left out the GeoBlog functionality for now since that’s still in flux while I’m finalizing the forthcoming Android release.
- I used the CiUI iPhone UI instead of IUI because it seems faster.

Click here for Metosphere for iPhone

Some Screenshots:

iphoneiphone

iphone iphone

iphoneiphone

iphoneiphone

Posted in Location, iphone | 7 Comments »

« Previous Entries