Skip to main content

Posts

Showing posts from May, 2011

Google AdMob Ads SDK

The Google AdMob Ads SDK is the next generation in Google mobile advertising featuring refined ad formats and streamlined APIs for access to Google's AdMob mobile advertising network. This state-of-the-art SDK enables mobile app developers to maximize their monetization on Android, iOS, and Windows Phone 7 by tapping into Google and AdMob’s vast combined pool of advertisers.

Google AdMob Ads SDK

Huffington Post for iPad

The totally redesigned Huffington Post iPad app gives you up-to-the-minute news and opinion delivered in a lively easy-to-read format. It’s fast, fun, informative… and seriously addictive.

Navigate at breakneck speed through all of HuffPost’s stories, blog posts, photos, and breaking news from the site’s wide array of sections, including politics, entertainment, comedy, tech, business, sports, books, health, and more.

The world is literally at your fingertips – glide between stories with a flick of your hand, and swipe through vibrant slideshows optimized for the iPad.

iTunes

Push Pop Press

The Next Generation of Digital Books

Our Choice will change the way we read books. And quite possibly change the world. In this interactive app, Al Gore surveys the causes of global warming and presents groundbreaking insights and solutions already under study and underway that can help stop the unfolding disaster of global warming. Our Choice melds the vice president's narrative with photography, interactive graphics, animations, and more than an hour of engrossing documentary footage. A new, groundbreaking multi-touch interface allows you to experience that content seamlessly. Pick up and explore anything you see in the book; zoom out to the visual table of contents and quickly browse though the chapters; reach in and explore data-rich interactive graphics.

Push Pop Press

aside mag

aside. the world's first magazine only made with HTML5.

Open http://asidemag.com/ on your iPad to see the preview.

iPad HTTP Debugging with Charles

After noticing that the caching in iPad Safari seemed a little funky, I made an effort to decipher some of the logic used by the browser cache. I didn’t get very far, but in the process I figured out how to route my iPad HTTP traffic through a web debugger on my laptop. It turns out it was very easy to do (although I’m sure there is a more complicated way to go about it).

What follows is a simple step-by-step for connecting your iPad to an HTTP debugging proxy. The main requirement is that your desktop/laptop and iPad be on the same wireless network. Then it’s just a matter of telling your iPad to use your desktop as an HTTP proxy.

iPad HTTP Debugging with Charles

App Store statistics

App Cloud | Brightcove

Use HTML5 to build amazing iOS and Android apps and touch web experiences. Connect your app to powerful cloud services that help your business grow. It's a complete content app platform you won't outgrow.

Pure HTML5
No new programming languages or inflexible frameworks. No quirky IDEs. Just clean HTML5, CSS3, and JavaScript plus the tools and workflow you already know and love. No joke.

Native != Proprietary
Access native APIs for geo-location, camera control, or in-app purchases from JavaScript. And if you do have native code you love, just bundle it in. No questions asked.

Brightcove

UIWebView no bounce

You can switch off the bounce effect of a UIWebView using this script:


for (id subview in webView.subviews)
   if ([[subview class] isSubclassOfClass: [UIScrollView class]])
      ((UIScrollView *)subview).bounces = NO;


Considering the Apple Review process it may be problematic that we make assumption of the inner structure of the UIWebView - but some apps have made it through...

ShareKit

Supported Services
DeliciousEmailFacebookGoogle ReaderInstapaperPinboardRead It LaterTumblrTwitter
Supported Content
Share URLs, images, text, and even files. ShareKit will only display the services that can handle the content you want to share.

Customizable UI
ShareKit can easily be transformed to fit the existing look of your app.

ShareKit

Hype

Using Hype, you can create beautiful HTML5 web content. Animations and interactive content made with Hype work on desktops, smartphones and iPads. No coding required.

Animations
Hype's keyframe-based animation system brings your content to life. Click "Record" and Hype watches your every move, automatically creating keyframes as needed. Or, if you'd prefer to be more hands-on, manually add, remove and re-arrange keyframes to fine-tune your content.

Scenes
Scenes are similar to slides in presentation software, and are a great way to simplify animation flow or separate content. Hype lets you make as many scenes as needed, and a variety of actions can switch between scenes using smooth transitions.

Timelines
Timelines for the scene can be added and play when triggered by actions. This capability lets you add interactivity -- mousing over an object could trigger a timeline to play which animates other objects in the scene.

Actions
Engage your viewers and trigger custom anim…

zepto.js

Zepto.js is a minimalist JavaScript framework for mobile WebKit browsers, with a jQuery-compatible syntax.

The goal: a 2-5k library that handles most basic drudge work with a nice API so you can concentrate on getting stuff done.

Zepto.js

performSelectorInBackground:withObject:

did you know that performSelectorInBackground actually retains the object is it called on. thus you can do:

MyCustomObject *obj = [[MyCustomObject alloc] init];
[obj performSelectorInBackground:@selector(someSelector:) withObject:nil];
[obj release];

And you won't have any errors even if "someSelector" takes a long time finish (downloading from internet, video exporting, etc..).

Saves you having a potentially unneeded extra class property. The new thread will retain 'obj' when the thread starts and release it when it is finished.


In documentation it says "This method retains the receiver and the arg parameter until after the selector is performed."

Android und Symbian vorn, gefolgt von Apple - Windows Phone 7 abgeschlagen

Android und Symbian dominieren auch im ersten Quartal 2011 den weltweiten Smartphonemarkt. Symbian musste aber Marktanteile an Android abgeben. Windows Phone 7 interessiert weiterhin nur wenige.

Golem

UIDeviceOrientation vs. UIInterfaceOrientation

We stumbled upon a bug in one of our apps:

- rotate the Homescreen to Landscape
- go to some other screen
- put the device on the table and go back
- the homescreen is all messed up

This behavior was similar with some other View controllers. The problem was in the viewDidAppear where the Interface should be rotated to Layout or Portrait- the UIDevice Orientation was used ( [UIDevice currentDevice].orientation ) an when you put the device on the Table the orientation of the Device is always "UIDeviceOrientationFaceUp". The Problem is that the Device Orientation could be FaceUp in Portrait AND Landscape mode so for this use-case this doesn't give you the proper information.

instead determining the orientation by:
UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)


you should do this (at least in View controllers) and use the interfaceOrientation property:
UIInterfaceOrientationIsLandscape(self.interfaceOrientation)

Faking instance variables in Objective-C categories with Associative References

In OS X 10.6 and iOS 3.1, Apple added Associative References to the Objective-C runtime. Essentially, this means that each and every object has an optional dictionary you can add arbitrary key/value pairs to.

This is a great feature, especially considering that Objective-C has forever had a feature to add methods to existing classes: categories. Categories, however, do not permit you to add instance variables. Using associative references, it’s easy to fake ivars.

Ole Begemann

Keeping ViewController files small

If you’re working on a complex iOS app, it’s very easy to create a UIViewController subclass with a huge amount of code. One of the many code guidelines I learned at Google was the simple idea of keeping functions and files small. For example, I would recommend trying to keep the vast majority of your functions around 40 lines or less, and trying to keep all of your files under 1000 lines. This post presents a technique that can help you achieve smaller file size.

Bynomial Code

Debugging Magic: Auto Simulate iOS Memory Warnings

Problem:

You spend a lot of time and effort building your app, writing countless view controllers. You think it’s near perfect.

Then one of your beta testers (or customers, or app reviewers) finds a problem. You look into it and realize that it only happens after a low memory pressure warning.

You should have written your viewDidLoad to handle getting called after a low memory pressure warning, but you didn’t.

Wouldn’t it be great if you were forced to write your viewDidLoad implementation with low memory situations in mind? After all, out in the wild on real world devices, it’s very likely that sooner or later every single one of your view controllers will have to handle this.

Solution:

Add this code to your project and have your view controller inherit from BaseViewController instead of UIViewController. Every time viewWillAppear is called, the simulator will force a low memory warning.

iDev Recipes

Sync-Async Pair Pattern – Easy concurrency on iOS

Apple provides many tools for implementing concurrency in your application. NSOperationQueue, GCD, or simply using performSelectorInBackground:withObject: that is available on each and every object, are just some examples. The tools are there, yet implementing good concurrency is hard.

The solution I have found is not yet another tool, or framework, but a simple pattern. I have not found an existing name for the pattern so I call it Sync-Async Pair. The idea is to hide the complexity of asynchronous calls and call-back behind a facade, and have a straightforward synchronous implementation. An implementation that is easy to write, test and extend.

Jayway Team Blog

The symbolicator helps those who help themselves

It sounds like I’m not the only one having problems with Xcode 4 not symbolicating crash logs correctly. Here’s the symptom: I drag crash logs that testers email me into Xcode 4’s organiser, then sit and wait for symbolication to complete. But once it’s done, my logs aren’t symbolicated - they still just show a load of memory locations.

Solution is by configuring Spotlight:
goo software

Keeping ViewController files small

If you’re working on a complex iOS app, it’s very easy to create a UIViewController subclass with a huge amount of code. One of the many code guidelines I learned at Google was the simple idea of keeping functions and files small. For example, I would recommend trying to keep the vast majority of your functions around 40 lines or less, and trying to keep all of your files under 1000 lines. This post presents a technique that can help you achieve smaller file size.

Bynomial Code

Apple will die Spracherkennungssoftware von Nuance in iOS 5 nutzen

Apple plant eine enge Zusammenarbeit mit Nuance Communications. Wie das Onlinemagazin Techcrunch unter Berufung auf informierte Kreise berichtet, verhandelt Apple seit Monaten mit dem Hersteller von Spracherkennungssoftware. Apple soll Nuance-Software in seinem neuen, noch nicht offiziell eröffneten Rechenzentrum in North Carolina einsetzen. Apple wird die Partnerschaft mit Nuance, dem Hersteller von Dragon Naturallyspeaking und Macspeech, auf der Apple Worldwide Developers Conference (WWDC) im Juni 2011 in San Francisco ankündigen, hat Techcrunch erfahren.

Golem

Core Data and Threads, Without the Headache

Whenever most cocoa developers mention threading and Core Data in the same sentence, the reaction I see most often is that of mysticism and disbelief. For one, multithreaded programming in general is hard–hard to design correctly, hard to write correctly, and debugging threads is just asking for trouble. Introducing Core Data into that mix can seem like the straw that broke the camel’s back. However, by following a few simple rules and guidelines, and codifying them into a super simple pattern, one that may be familiar to you, we can achieve safer Core Data threading without the common headaches.

Cocoa is my Girlfriend

Introducing iOS Beta Builder

For a developer, doing beta releases on iOS can be a real pain sometimes.

For the past few years, we’ve had to go through the same song and dance: gather device IDs, create ad-hoc builds and then try to explain to users how to install them via iTunes. This can be trying for even technical users and non-technical users can get totally flummoxed. Let’s not even talk about people on Windows where the files often unzip in strange ways, leaving them totally confused.

Thankfully, Apple has made incremental improvements to this process over time. iOS 4.0 brings Web-based, wireless distribution of ad-hoc apps and the ability to embed provisioning profiles right into the IPA bundle. Your beta users can now install the software without ever using iTunes at all!

Beta Builder

Samsung und Apple überholen Nokia

Auf dem Handymarkt in Westeuropa wurde Nokia von Samsung überholt. Damit büßt Nokia nach vielen Jahren die angestammte Marktführerschaft ein. Im Smartphonesegment dominiert Apple mit dem iPhone den Markt vor Nokia, das erhebliche Einbußen hinnehmen musste.

Golem

Recreate interesting features of iOS apps

Recreate interesting features of iOS apps

iDev Recipes

Unity3d - 3D Game Framework

Unity 3 is a game development tool that has been designed to let you focus on creating amazing games.

Unity 3d

Baker Ebook Framework 2.0

Baker is a HTML5 ebook framework to publish interactive books on iPad & iPhone using simply open web standards.

Baker

QuincyKit Crash Reporting

Live Crash Report Management
Collect crash reports from your apps, either from your beta versions or from release versions (AppStore save!). Your apps can report crash reports right at the next startup of your app to your server setup.

Statistics
See all your crash reports automatically grouped by similar crashes and how each crash group developed over time and see the affected OS versions and platforms.

Multi Platform Support
QuincyKit supports both Mac OS X and iOS platforms.

QuincyKit

iPhone Tracker

This open-source application maps the information that your iPhone is recording about your movements. It doesn't record anything itself, it only displays files that are already hidden on your computer.

github

Abusing ViewControllers

UIViewControllers are a fundamental building block of most iOS applications. Unfortunately many developers seem to use them in unintended and unsupported ways which leaves their apps vulnerable to bugs, rejections, unpredictable behavior under new iOS releases, and with controllers which are difficult to update or reuse. The core misconceptions behind this abuse of UIViewController are understandable. Apple presents UIViewControllers as a key element of an app’s navigation and interface stating “custom view controllers are the primary coordinating objects for your application’s content”. The basic application templates are defined in terms of their UIViewController behavior; “navigation-based”, “tab bar”, “split-view based”. From our first exposure to the platform developers are presented with UIViewControllers as classes for managing views and the transitions between them. Sadly those examples present a pattern which we, as iOS developers outside Apple, cannot follow or build on.

Carb…

Ingredients

Ingredients is a free browser for Apple's documentation. You can:
View iPhone and Mac docsSearch Mac-related websitesFilter classes/symbols by various attributesQuick Search with sane sorting of resultsuse the Filter Bar to quickly jump to methods in a class
Ingredients

CFPropertyList

The PHP implementation of Apple's PropertyList plist can handle XML PropertyLists as well as binary PropertyLists. It offers functionality to easily convert data between worlds, e.g. recalculating timestamps from unix epoch to apple epoch and vice versa. A feature to automagically create (guess) the plist structure from a normal PHP data structure will help you dump your data to plist in no time.

github

Achieving an Embossed Text Effect With Interface Builder

The effect is also easy to apply in Interface Builder. Fire up IB and add a dark text label to a non-white background.

Select the label and change the shadow to a white color. Then change the V. Offset setting to positive 1. This will position a white “shadow” one pixel below the text making it appear as though light is glaring off the lower edges of the text border and creating the illusion that the text is embedded into the background.

Embossed Text Effect