cert will check if any of the available signing certificates is installed on your local machine.
Only if a new certificate needs to be created, cert will
- Create a new private key
- Create a new signing request
- Generate, downloads and installs the certificate
- Import all the generated files into your Keychain
produce lets you create new apps on iTunes Connect and the Apple Developer Portal using the command line. You can fill in the initial app metadata using deliver.
The old TestFlight will shut down in February, so it's time to switch to a new Beta Testing service.
While there are some great alternatives to the new TestFlight (like Crashlytics Beta and HockeyApp) you might decide to use the official solution for various reasons, however unfortunately there is no public API to implement into your Continuous Integration system any more.
Introducing deliver testflight, an unofficial command line tool to upload your builds to the new Apple TestFlight (now part of iTunes Connect).
All you have to do is install deliver and add the following to your build steps:
deliver will fetch all information it needs (e.g. bundle identifier, build number, App ID, IPA file) and will ask you for missing information. You can pass additional parameters too, checkout the project page of deliver.
If you want a more advanced setup, including a fully working Continuous Deployment solution, which takes screenshots, updates provisioning profiles and creates your push certificate for you, checkout fastlane.
Recently I've been working on some really cool iOS related open source tools. All those run independently from each other. This changes with fastlane.
There is a really cool website about the project: http://fastlane.tools
With fastlane you define how your app needs to get released to the App Store (or beta testing service).
- Connect all tools, part of the fastlane toolchain to work seamlessly together
- Define different deployment lanes for App Store deployment, beta builds or testing
- Deploy from any computer
- Jenkins Integration: Show the output directly in the Jenkins test results
- Write your own actions (extensions) to extend the functionality of fastlane
- Store data like the Bundle Identifier or your Apple ID once and use it across all tools
- Never remember any difficult commands, just fastlane
- Easy setup, which helps you getting up and running very fast
- Shared context, which is used to let the different deployment steps communicate with each other
- Store everything in git. Never lookup the used build commands in the Jenkins configs
- Saves you hours of preparing app submission, uploading screenshots and deploying the app for each update
- Very flexible configuration using a fully customizable Fastfile
- Once up and running, you have a fully working Continuous Deployment process. Just trigger fastlane and you're good to go.
Sigh... you have code signing issues again? Introducing sigh, which creates all necessary certificates for App Store, Ad Hoc and Development for you.
What it does:
- Download the latest provisioning profile for your app
- Renew a provisioning profile, when it has expired
- Repair a provisioning profile, when it is broken
- Create a new provisioning profile, if it doesn't exist already
- Supports App Store, Ad Hoc and Development profiles
Tired of manually creating and maintaining your push notification profiles? Tired of manually generating pem files for your server?
Pem introduces a command, which does all this for you.
What it does:
- Check if push is correctly enabled and a certificate is active
- Renews the push certificate in case it's necessary
- Download the latest certificate
- Generate all necessary files, so you can send push notifications from your server
Put a gorgeous device frame around your iOS screenshots just by running one simple command. Support for:
- iPhone 6 Plus, iPhone 6, iPhone 5s and iPad Air
- Portrait and Landscape
- Black and Silver devices
This tool will take care of everything, from finding your screenshots to detecting their screen sizes and orientation.
Create hundreds of screenshots of your iPhone app...
while doing something else!
You have an iPhone app. You support 20 languages. You updated the design. You want to release the update to the App Store. What's missing?
You want them to look perfect and gorgeous. They should show the same screens on all devices in all languages.
You have to manually create 20 (languages) x 4 (devices) x 5 (screenshots) = 400 screenshots.
It's hard to get everything right!
- New screenshots with every (design) update
- No loading indicators
- Same content / screens
- A clean status bar
- Uploading screenshots (deliver is your friend)
This script helps you solve all those problems: Automatically switch languages and device types, properly export the resulting screenshots, etc.
Updating your iOS app should not be painful and time consuming. Automate the whole process to start with Continuous Deployment.
Deliver can upload ipa files, app screenshots and more to the iTunesConnect backend, which means, you can deploy new iPhone app updates just by using the command line.
- Upload hundreds of screenshots with different languages from different devices
- Upload a new ipa file to iTunesConnect without Xcode from any computer
- Update app metadata
- Easily implement a real Continuous Deployment process
- Store the configuration in git to easily deploy from any computer, including your Continuous Integration server (e.g. Jenkins)
The project is fully open source, well documented and has a high test coverage.
The apps I developed recently required saving and loading thousands of objects within a very short time on multiple threads, mostly for reasons of caching and offline mode support. I started implementing this behavior in Core Data, which caused a few problems related to thread safety and performance.
I tried using FMDB as an alternative to Core Data, which works surprisingly great. There is not much information about multithreading and thread safety available, that's why I'm writing this blog post.
To apply the MVC principal, I assume you create a class just for reading/writing into/from the database. You should never access the database directly from outside of it.
After trying different approaches of multithreading, this turns out to be the best solution for my projects.
First of all you need a database queue (provided by FMDB), an NSOperationQueue to queue your queries and a lock for the database.
If you use a singleton for your database, set up your static variables.
Basically there are 2 use cases now: Read from database and Write to database
To read, all you have to is:
To write into the database, you have to use the writeQueue:
That's all you need to really easily save/read data using FMDB. I use a little wrapper that matches properties with the according columns inside the database.
The first version of the Bikemap iPhone app was released a few years ago. It was developed using Appcelerator Titanium back then. The new Bikemap app was designed and built from scratch. It's really fast and has a lot of nice new features like tracking of a biking route right from the iPhone.
Wandermap is a free iPhone app to find the best hiking routes around you. Download it from the AppStore for free: Download There are many nice featured included like a synchronised route collection between devices and the web version and offline support.
YouthHotspot is the perfect app for your next trip to Germany. You have access to free WiFi hotspots and hundreds of tips for bars & cafés, shopping, festivals+ over 80 vouchers. The app works completely offline from the first app start on.
You can download the app for free from the AppStore. The app is also available on Android.
Discontinued: Check out snapshot instead.
I guess all iOS app developers know this problem: You have to take (usually 5) screenshots of the app for all devices (iPhone 4, iPhone 5, iPad) in all supported languages for every update and every app. When I was working for 6Wunderkinder we pushed an update with 30 new languages for iPhone, iPad and the Mac. That means we had to take and upload 30 (languages) * (2 (iPhone) + 1 (iPad) + 1 (Mac)) = 120 screenshots.
The scripts can change the language of the iOS simulator and set the system language. All you have to do is define all needed languages and devices types in the run file.
After some developers asked about the scripts I open sourced it on GitHub: https://github.com/toursprung/iOS-Screenshot-Automator
Recently I've been attending the Hackathons hosted by Microsoft Austria. It's a really cool office with all the things you need as a developer. I worked with my colleague Reinhard Hafenscher on Wandermap, Runmap and Bikemap for Windows Phone 7 + 8. The first two apps are already released in the Windows store.
With the free Runmap app you can access over 80.000 running routes worldwide instantly. Automatic listing of all routes near your current location, interactive elevation profile, synchronization of your personal route collection and much more. For more information open the download link.
Didn't you always want to visit the lovely Austrian alps? Then this app is perfect for you. Find over 28.000 hiking routes world wide. This free app has the same awesome features as the Runmap WP app.
Since we are the winners of the European Botball Robotics competition, we took part at the Global Conference on Educational Robotics. This was our first year taking part at Botball.
After 5 exciting and interesting days we won the following awards:
- Outstanding On-Site presentation (100%)
- Outstanding Programming
- Spirit award
Next year I definitely want to take part in this awesome conference and competition as well. I talked with many smart and interesting students and mentors there
More information can be found on our blog:
iTanky is a fun and addictive 2 dimensional tank game for iOS. You can either play the campaign or fight against your friends via Wifi or Bluetooth. I developed this app together with Richard, a your graphic designer from Dresden, Germany. I also developed a web based map editor that works on all modern browsers. This app is completely free available here: AppStore
Check out the project website: http://itanky.com
A far more detailed project description can be found here (only german): iTanky Projektbeschreibung