If your iOS code signing fails today

If your iOS code signing fails today, it may be due to an expired Apple Intermediate Certificate. What you need for code signing beside your valid developer or distribution certificate is the Apple Worldwide Developer Relations Certification Authority. It expired yesterday and there’s probably already a new one side by side in your keychain. (If not, download and install the new one… Read more →

Find out iOS SDK version from IPA

Recently I updated xcode on our CI server and additionally provide the option to use older xcode versions per project. To verify that the option works I wanted to find out the iOS SDK version from the provided ipa. Here we go: Assuming the app is named APPNAME and the ipa my-app.ipa. rename my-app.ipa to my-app.ipa.zip unzip my-app.ipa.zip (Now we’ve… Read more →

UIWebView Cross Site Scripting Vulnerability

When integrating UIWebViews you have to pay attention to how the desired webpage is being loaded. That’s why Apple lately added the following lines to the documentation of UIWebView: To help you avoid being vulnerable to security attacks, be sure to use this method [-loadHTMLString:baseURL:] to load local HTML files; don’t use loadRequest:. Loading a website via loadRequest: bears the risk of Cross… Read more →

A Signal Light for your Jenkins Build Job

Idea A working master branch in a continuous integration environment is key for fast development. While we hack line after line into the project, we merge back to master branch often even while the feature branch is still in development. Merging early and often helps to avoid merge conflict hell because otherwise feature branches  move too far apart. But this comes at… Read more →

Key-Value Observing Affected Keys

I like to write handy names for my properties like so: @property (nonatomic, assign, getter = isLoading) BOOL loading; As you can see I’ve defined a special name for the getter: isLoading. There’s only one problem with this: If another class is observing this class key path loading, it won’t get notified about changes, unless you overwrite your setter like so:… Read more →