Wednesday, October 29, 2014

Metadata Rejected

Argh!

Day 15 - Rejected again.  We got the following email from iTunesConnect App Review:

Hello Benjamin,
Your app Name Shark has been reviewed, but we are unable to post this version. For details, or to directly contact the App Review team, visit the Resolution Center in iTunes Connect. Do not reply to this email.
Regards,
App Review

We logged into iTunesConnect, and found our app status was

Metadata Rejected


Upon visiting the Resolution Center, we learned the following:

    Reasons
  • 3.14: App previews may only use video screen captures of the app, voice-overs, and textual and design overlays, or the app will be rejected
  • Information Needed
----- 3.14 -----

Your App Previews include content that does not sufficiently reflect the app in use, which does not comply with the App Store Review Guidelines.

Specifically, your previews still displayed other apps. It is necessary to remove this content from your previews.

Also, your app still did not display any ads during the review. Please provide us with access to a video that demonstrates the ads shown in your app.

To provide a link to a demo video:

- Log in to iTunes Connect
- Click on “My Apps”
- Select your app
- Scroll down to “App Review Information”
- Provide demo video access details in the “Notes” section
- Click Save
- Click Submit for Review
Once this information is available, we can continue your review.
This was extremely disappointing.  We were rejected for the same two things we were rejected for the first time, and we thought we fixed the one that was actually wrong.

Issue #1 - App Preview


The only thing we can think they mean when they say, "your previews still displayed other apps," is that we show the home screen with app icons when we show our app launching.  If that is what it was, it's pretty frustrating.

The part we suspect is the first 2 seconds.  We already changed out the twirling iPhone at the end of this one:


Developers take note! No matter how much you like your icon, you can't show it in your App Preview!

We are having the guys at Mango Creative give us a new version that starts at the splash screen.

Issue #2 - Information Needed about Ads


The reviewer said, "your app still did not display any ads during the review."  We looked at our Flurry logs, and found that the reviewer logged in as the same user as last time, despite our specific instructions to create a new user if they wanted to see the ads.

They asked us to provide video that demonstrates the ads shown in our app and gave us instructions on how to do that.

I'm kind of bugged by the lack of effort shown by the reviewer to follow the instructions we submitted, but at least he/she provided an easy way for us to solve the problem.

We'll upload the new App Preview and the Video showing the ads tonight and then resubmit.  Fortunately, this state -- Metadata Rejected -- shouldn't need a new binary.  I'm hopeful that means that the next iteration of the process is quicker than 8 days.

Wednesday, October 22, 2014

Step 3 - Aesthetics

This post is part 3 of a 4 part follow-up to my post: Market, Marketing, Aesthetics, then Functionality.  Before coding features, entrepreneurial developers need to nail down three essentials. The third of these is

Aesthetics

Programmers typically do a very poor job with this one.  My former co-founder and CEO of Imagine Learning often said, "Why is it that programmers love 8 point fonts?  They need to be big enough for people like me to read!"

I think the answer is simple.  Programmers like to code features.  If the IDE provides a drag and drop way for me to add widgets to my app, then the default font faces and sizes are good enough for me.  And what was the default font for controls in Visual Studio in the days that programmers were learning to do UI?  8 pt Tahoma.

Startup programmers need to be much better at design.  If you are sure you can't be good at it, then hire someone to do it for you.  The default controls and style are just not going to cut it.

If you're going to give it a go yourself, here are some resources that we used:

Behance

Start by searching Adobe Behance for projects that you like. (Using the search term "UI/UX" will net some good app design results.) Note about what you like about each design.  I created categories for color and fonts, flat design, icons, etc.  You can see my collections here: https://www.behance.net/BJamUT/collections.

I found that several of the designs I liked were done by the same artists.  I started following several artists, and I get updates when they post new projects.  This keeps me up to date on what's trending in app design.



color.adobe.com

Formerly kuler.adobe.com, this site has been a favorite of mine for years.  With this site you can experiment with different colors to determine an attractive color palette for your app.  We explored thousands of themes before settling on a couple that we liked and then we modified them slightly.  Here are the two themes we used for Name Shark:




At the time of writing, the color palettes above look really familiar to the reader.  :)  Note how we have used the colors throughout the app:


Fonts

As is apparent above, we really liked thin sans-serif fonts.  We settled on Helvetica Neue Thin, which was installed on Mac by default:


We wanted to use a similar font for our web fonts, and if you're looking for a nice, free alternative for multi-platform use, there are two fonts that we really liked on Google Fonts:


and


One final note on fonts: Make them big!  Users like to see the text.  If you can't fit the text on the screen, you're probably trying to put too much information on one page.

Icons

If you've made it this far through the page, I'm about to give you the best gem on this page: FontAwesomeKit.  Available as a CocoaPods pod:
pod 'FontAwesomeKit', '~> 2.1'
FontAwesomeKit allows developers to use thousands of royalty-free icons that are vector format cleverly embedded into a scalable-vector format that was being used long before adoption of svg or pdf: fonts.  Developers don't have to have Adobe Illustrator skills or create multiple versions for different sized icons.  These font-based icons are added in code and they scale automatically.



We like this particular pod because, like other pods, it contains the FontAwesome icon font.  In addition, it contains several other fonts--our favorite being ionicons.

About 75% of the icons in our app are from FontAwesomeKit.  We did have to make some of our own icons to match the thin style of the iOS 7 icons in ionicons.  For those we used Adobe Illustrator, and it happens that I have had some experience using Illustrator previously.

Even if you are not familiar with Illustrator or icon design, your app can look very clean, professional, and impressive by using FontAwesomeKit.

And here's the result of our focus on aesthetics prior to developing Name Shark:


◀   Step 2 - Marketing   |   Step 4 - Functionality   ▶

Tuesday, October 21, 2014

Step 2 - Marketing

This step is where Russ and I are admittedly the weakest. We have been programmers, managers, executives, board members, but we have always left most of what would be traditionally called marketing to very talented people who have marketing skills. That said, if we are ever going to make an indie app development company work, we have to become really good at marketing.

Since we don't know much about it, we spent a few days studying what people are doing out there. I should mention at this point that our absolute favorite business book is Rework by Jason Fried and David Heinemeier Hansson.  The chapters in the PROMOTION section (pages 165-198) are a must-read, and a basis for our marketing efforts.  Here is one of my favorite quotes from this section:

Marketing is not a department
Do you have a marketing department? If not, good...Accounting is a department. Marketing isn't. Marketing is something everyone in your company is doing 24/7/365.
  • Every time you answer the phone, it's marketing.
  • Every time you send an e-mail, it's marketing.
  • Every time someone uses your product, it's marketing.
  • Every word you write on your Web site is marketing.
  • If you build software, every error message is marketing.
  • If you're in the restaurant business, the after-dinner mint is marketing.
  • If you're in the retail business, the checkout counter is marketing.
  • If you're in a service business, your invoice is marketing.
Recognize that all of these little things are more important than choosing which piece of swag to throw into a conference goodie bag.  Marketing isn't just a few individual events.  It's the sum total of everything you do.  -Rework by Jason Fried and David Heinemeier Hansson pages 193-194.
So, we figured that everything we did needed to be marketing.  We had already identified who we would be marketing to (see Step 1 - Market).  Now we needed to figure out how we would help them to individually know about the product.

Here's our preliminary list of marketing strategies we plan to chase to help our target users know about Name Shark:
  • Try to get reviewers to review our app
  • Update our website, landing page, and blog (check)
  • Contract with a search enginge optimization (SEO) guru.  Choose niches specific to our target user profiles.
  • Banner advertisements on trade sites targeted at user profiles (e.g. sales people, CEOs, event planners, sports fans, etc.)
  • Submit to Product Hunt
  • Submit to Show HN (Show Hacker News)
  • Facebook hype (to our friends)
  • Ask friends to post about it on social media
  • Reach out to companies/individuals that created services/tools/pods/APIs that we used and ask them to feature us
  • Give tips to local newspapers about "local entrepreneurs"
  • Niche magazine ads (again for the specific user profiles)
  • Adwords
  • YouTube advertising (contract Mango Creative to do some humorous and emotional videos for us)
  • 1 Million Cups - meet with others and ask them what they did.  Maybe present there.
  • T-shirts
One quick thought on t-shirts: we saw a post on Hacker News about a guy who wears a t-shirt or polo with his logo on it every day--everywhere he goes.  This fits in really well with the idea that, "Everything You Do Is Marketing."  We have been doing this, and we get asked almost every day, "What is Awesome Geekness?" or "What is Name Shark?"  Wearing logo shirts provides you with lots of opportunities to verbally sell your product everywhere you go.

◀   Step 1 - Market   |   Step 3 - Aesthetics   ▶

Saturday, October 18, 2014

Rejected!

Nine days after submission, we received an email stating

"Hello Benjamin,
Your app Name Shark has been reviewed, but we are unable to post this version. For details, or to directly contact the App Review team, visit the Resolution Center in iTunes Connect. Do not reply to this email.
Regards,
App Review"

After visiting iTunesConnect and clicking on the link to the Resolution Center, here is the text on why the app was rejected:

Reason #1 - App Preview

--------Begin---------
Reasons

3.14: App previews may only use video screen captures of the app, voice-overs, and textual and design overlays, or the app will be rejected

Program License Agreement
----- 3.14 -----

Your App Previews include content that does not sufficiently reflect the app in use, which does not comply with the App Store Review Guidelines.

Specifically, your previews:

- Included device images and/or device frames. 
- Displayed other apps.

It is necessary to remove this content from your previews.
---------End---------

Apparently Apple is pretty strict with the enforcement of this guideline.  The only place we showed devices was in the outro of the video.  See the original version of our Name Shark iOS App Preview video here:



It was just the spinning iPhone at the end of the video.  We have asked the guys over at Mango Creative to change the outro of the video so we can resubmit.

Reason #2 - Ad Identifier

--------Begin---------
PLA 3.3.12

Additionally, we found that your app uses the iOS Advertising Identifier but does not include ad functionality. This does not comply with the terms of the iOS Developer Program License Agreement, as required by the App Store Review Guidelines.

Specifically, section 3.3.12 of the iOS Developer Program License Agreement states:

"You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier."

Note: iAd does not use the AdSupport framework, ASIdentifierManager, or the Advertising Identifier. Therefore they are not required for iAd implementations and should not be included in your app for iAd support. 

If your app is serving ads, please:

- Ensure that you have tested your app on a device, not just the simulator, and that you have removed all previous versions of your app prior to testing

- Provide us the steps to locate ads in your app

If your app does not serve ads, please check your code - including any third-party libraries - to remove any instances of:

class: ASIdentifierManager
selector: advertisingIdentifier
framework: AdSupport.framework



If you are planning to incorporate ads in a future version, please remove the Advertising Identifier from your app until you have included ad functionality.

---------End---------

This one was simple.  When the reviewer reviewed the app, the first thing he/she did was purchase the pro features.  This removed the ads, so the reviewer never would have seen them.  We probably just need to give them instructions to make sure they see the ads.

We are showing Amazon Mobile Ads banner ads and iAd banner ads.  We are also showing Amazon Mobile Ads interstitial ads.  We are not using the ASIdentifierManager at all, but both frameworks use it, so we had to check the box.

I believe that with instructions on how to see the ads, this one will easily be resolved.

I will give an update as soon as we submit and hear back.

Step 1 - Market

As I explained in my post Market, Marketing, Aesthetics, then Functionality, startup developers need to resist the powerful urge to start coding features and focus on three things that are more important.  The first of those is

Market

For Name Shark we had the idea of creating an app that helped people to remember names. To figure out the Market, we had to answer the following questions:

  • Who will use the product?
  • Who will pay for the product?
  • What pain(s) are we trying to alleviate with that particular user?
  • Is it painful enough to use a new product?
  • Is it painful enough to pay for a new product?
  • Is there another product that already solves the problem.
  • If so, is the market big enough for competition?
Resist the temptation to say, "Everyone will use the product."  Even if that is true, you need to be thinking of specific use cases as you develop the product that make sense to specific user groups.

We came up with six primary users that we thought would be very likely to use and pay for a really good app that could help them to stop forgetting names.  We listed them on our Trello board, and we referred to them constantly throughout development.  As we coded, we added several more.


Here was our original list of users:
  • Sales person who wants to remember his clients' names by faces
  • Event coordinator who wants to create a list of VIPs to send to hosts
  • Club or congregation member who wants to remember members' names and faces
  • Teacher (or admin) who wants to remember children's names
  • New employee who wants to get to know the other people at the company
  • Sports fan who wants to learn team members (number, position, and stats may be more important than face.)
We felt that each of these customers felt would have a big enough desire to remember names/faces/details that they would pay for the product.  We constantly referred back to these profiles to make sure our product was on track to meet their needs.  We searched to see if there was already a product that solved this pain point.

Who are your customers?  Can you answer the questions above for them?

Remember--resist the urge to code before you know who your market is.  That way you'll know that if you hit your target, there should be a group of people willing to buy it.

◀   Overview   |   Step 2 - Marketing   ▶

Wednesday, October 15, 2014

Market, Marketing, Aesthetics, then Functionality

After reviewing our Trello board of app ideas that we've been collecting for the past several years, we settled on making an app to remember names.  After half a day of beginning to code, like all good programmers do, Russ said that we might want to take a different approach.  He read a quote from "Start Small, Stay Small: A Developer's Guide to Launching a Startup" by Rob Walling:

Market Comes First, Marketing Second, Aesthetics Third, and Functionality a Distant Fourth

The product with a sizeable market and low competition wins even with bad marketing, a bad aesthetic, and poor functionality. Think Quickbooks in the early days, or any niche product you've ever seen that looked like it was written by a six year old but sold thousands of copies.

In the same market, the product with better marketing wins. Every time.

In the same market with equal marketing, the product with the better design aesthetic wins. Sure, a few people will dig deep enough to find that the "ugly" product has better or more functionality, but the product that wins is the one that has the best looking website and user interface.

Functionality, code quality, and documentation are all a distant fourth. I know that this sounds sacrilegious to a software developer, but unless you're marketing to software developers, your order of importance is market, marketing, aesthetic, function.

This really rang true to us. Our tendency was to begin listing out features and coding. But what we recognized we needed to do was first get market, marketing, and aesthetics nailed down.  My next several posts will be dedicated to how we tackled each of these self-imposed prerequisites before starting coding features on Name Shark (www.nameshark.com).



Series Links


Here are the links to the four follow-up posts that I wrote to this article:

Step 1 - Market   ▶

Back in the Saddle

Six months ago we sold the company that I co-founded (www.imaginelearning.com).  Two months later and exactly ten years after we started at Imagine Learning, with harvest capital in hand, Russ Zimmerman (the best programmer I know) and I set out on a new adventure. We chased the entrepreneurial dream once again, and started working full-time at our app development company: Awesome Geekness (www.awesomegeekness.com).

I'm hoping to share some of the thoughts that we've found helpful in the hopes that other indie developers may find some use for them.

Since we developed Tiki Kaboom (www.tikikaboom.com) 6 years ago, we have been keeping a Trello board of all of our app and software ideas.  Some of them are crazy, some are probably ridiculous, and some of them are pretty good.  We decided to start with an app to remember people's names.

The resulting product of 4 months of hard work, Name Shark (www.nameshark.com), was submitted to itunesconnect on Wednesday.  Finding myself with some time while we wait for the app to be approved, I figured I'd share some of the things we hope might make this app successful.

I have truly appreciated the many developers and entrepreneurs who have shared their stories, challenges, solutions, tough questions, and brilliant answers through blogs, Stack Overflow, forums, and websites.  Our story is one of hundreds of thousands that are probably even more awesome.  But we're having so much fun, I thought I could share what makes our geekness truly awesome.

Here are a couple photos of our little space, complete with mini-fridge, foosball table, snack cabinet, 60" TV, 5.1 surround, sofa, and Quirky Aros smart A/C unit:



Foosball Tip: If you need a foosball table, the best table on the planet is the Tornado T-3000 Platinum Coin-op table, and the best place to get one is to get a tournament-used table from Charles at tornadofoosball.com.  You'll pay $600 less than a new table costs, and they will have only used it at one tournament.  We absolutely love our table.  We also love the Gamma Supreme wraps.

So there's the inside, and here's the view out our window: