I spent some time testing the "live" version of iAds today. (iAds are now present in JourneyTag 1.0.7.)
First off, Apple is adamant that you not only hide the banner view when the ads can't load--but that you animate this hide action so it looks nice. I didn't think to much about this until now.
I noticed that viewing the same advertisement repeatedly without clicking, causes the the banner to hide itself off screen. I have theory: because the ads were already loaded, the normal "hide on error" behavior has more than one purpose. I think Apple will hide "loaded" banners if they think you've seen enough of them.
Second: As promised, you can view the ads without leaving the application. And you can even buy AppStore apps without leaving the advertisement or quitting your original app. Pretty cool!
Not only do the ads look great, but these little tidbits add up to a nice way to present advertising.
What do Wal-mart, Walgreens, Safeway and the App Store have in common?
They are all locked-down, closed, curated markets that that are difficult to get into into. Once inside, if you have a decent product you can make a lot of money.
Each of these chain stores is exactly like the App Store. You may never get approved and you may get kicked out at any time.
But I would argue that chain stores make the App Store look like a playground.
I worked for a company that attempted to enter the national chain-store market--it was a nightmare:
No one complains because a lot of successful companies make a lot of money. Strong competition and the difficulty of getting into a store only strengthens the companies that are there.
None of this stops people from shopping at these places. In fact, more people buy from them because they are curated marketplaces.
Open markets like Android Marketplace are not bad, but they may never be as profitable as the App Store. As a user, you're more likely to get garbage apps and viruses--which is why Apple's store is the way it is.
In the end, the App Store is good for the user. For now, it's a little rough on developers, but it could always be worse. Most likely it will only get better.
This is why I stay on the iOS platform, knowing what I know about the App Store approval process.
"We've completed the review of your application; however, we cannot post this version to the App Store because it displays an empty iAd banner when ad content is not available. The banner within the app should be hidden whenever ad content is not being served by iAd"
If you plan on putting iAds into your iPhone app, you must set the delegate and respond to
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error;to hide your iAds view if they are not able to load.
JourneyTag has been on hiatus for a few months. Back in June, I submitted a casual update to fix a compatibility bug in iOS 4 and also added support for iAds.
Around the time I submitted my app, Apple started requiring developers to use the Application Loader for all app submissions, but I actually uploaded my app using the deprecated way--directly in iTunes connect.
Two Months later, JourneyTag was still "waiting for review". I had no idea if I was stuck in a very long queue of low priority apps, or I was in "App Store Limbo" due to the way I uploaded the binary.
At this point, I had two choices: 1) reject the binary and go to the back of the line or 2) keep waiting.
I finally rejected the binary and re-uploaded it using the Application Loader and 7 days later I got rejected!
This is great news as the rejection came with a specific bug and related fix. I am a simple resubmit away from being back in business.
This was very frustrating process and it really does give me doubts on wether I want to depend on the App Store approval process for any future projects.
If Apple would provide a better communication channel for us developers, perhaps mixups like this would not happen. I really wish Apple would treat it's developers half as good as it treats its customers.
Over the past few months I've been secretly working on the graphics and design for an iPhone game I want to build. This week, I decided to plunge into cocos2d a little bit.
It's been quite challenging so far. I spent more than a few hours practicing basic trigonometry on the white board and it's been amazingly helpful digging through the cocos2d source-code.
I'm pretty excited about the project, but as always, I'm going to keep it under-wraps until it's ready to beta test.
In other news, I'm working on adding comments to my blog engine and finishing the HTML for the new design. Busy busy!!
In C#, converting a char to an int produces it's unicode value. Converting a string to an int, produces it's integer value. This can be confusing! For example, pretend you want the first digit of a number:
The wrong way:
int number = 10;
int firstDigit = Convert.ToInt32(number.ToString()[0]);
Assert.AreEqual(1,firstDigit) //fails: firstDigit == 49
The right way:
int number = 10;
int firstDigit = Convert.ToInt32(number.ToString()[0].ToString()); //add an extra ToString()
Assert.AreEqual(1,firstDigit) //passes
for person in list:
print person
#if statments in python go like this
if age >=65:
print 'You are now a senior citizen'
else:
print "You're young still"