How to Develop Apps for Old or Vintage iPhones

If you are like me, you have some old iPhone devices at home that are out of date. They are too slow to browse the web and they are actually no good for nothing anymore. Which is a pity, because they still work and they actually look pretty. So why not use them as clocks or as interactive photo frames?

Continue reading “How to Develop Apps for Old or Vintage iPhones”

iOS Swift Array of Plist

Swift 5 code:

func getArrayOfPlist() -> Array {
        let path = Bundle.main.path(forResource: "content", ofType: "plist")
        var contentsArray = [String]()
        if let path = path {
            if let contentsXML = FileManager.default.contents(atPath: path) {
                do {
                    let plistData = try PropertyListSerialization.propertyList(from: contentsXML, options: [], format: nil)
                    contentsArray = plistData as! Array
                } catch {
                    NSLog("Error when decoding contents from \(path)")
                }
            }
        }
        return contentsArray
    }

Example content.plist

Figure out iOS Device Orientation Manually with Swift

I had the problem that I coded an app that records video in landscape. Although only landscape orientation is allowed in the app, users would frequently hold the device in portrait mode and produce shitty videos. Therefore, I decided to show a note to the user demanding to hold the device horizontally when holding it upright. To achieve this, it was not possible using an out of the box means by iOS, as those automatic features require the app to work in landscape as well as in portrait mode (which, as stated above, my app didn’t).
Continue reading “Figure out iOS Device Orientation Manually with Swift”

How to remove Big Files and Folders from Git or How To Fix Github’s Maximum File Size Problem

I have recently had the problem that I wanted to move my Git repositories from a self-hosted repository to Github. One of those repositories contained a fair amount of external libraries (to be precise lots of Cocoa pods). When I tried to push the repository to Github, I would get to see warnings like this:

~/D/north-kites-ios (develop↑1|✔) $ git push github develop

remote: warning: File Pods/GoogleMaps/Subspecs/Maps/Frameworks/GoogleMapsCore.framework/Versions/A/GoogleMapsCore is 74.85 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB

error: failed to push some refs to 'https://github.com/boards-and-more/north-kites-ios.git'

Continue reading “How to remove Big Files and Folders from Git or How To Fix Github’s Maximum File Size Problem”

How to Make Sure That You Are Using an Enterprise Account for IPA Provisioning

In my post describing how to »Provision iOS IPA App for In-House Enterprise Distribution« I described the pitfalls when trying (and hopefully succeeding) to make an In-House Provisioning of your iOS app.

Although I mention repeatedly that you need to be sure that you use an Apple Enterprise Provisioning Account, I experienced multiple times that developers tried to perform the In-House Provisioning with a non Enterprise account. Continue reading “How to Make Sure That You Are Using an Enterprise Account for IPA Provisioning”

Swift Extension for Location Authorization Requests in iOS

A while back I wrote an Objective-C category that helps you managing location authorization requests. As I needed the same functionality in a Swift-based project, I did the effort to transfer the code into Swift. You can download the Swift location authorization extension here.

Cocoapods Swift does not work with use_frameworks! Fix

I have a mixed Objective-C/Swift project and activated use_frameworks! in my podfile because I wanted to use a Swift-based pod. In order to enable the usage of the Objective-C-based pods in your Swift code, I thought it would be necessary to stick to the common approach of including the pods’ header files into a bridging header file and configure the project in Xcode accordingly. Like so.
Continue reading “Cocoapods Swift does not work with use_frameworks! Fix”

A Simple Approach to App Localization using Xcode, XLIFF and Objective-C

When it comes to localizing applications for iOS or Mac OS, things get pretty quickly messed up and cumbersome. The tool support by Apple is – friendly spoking – lacking consistency. Especially if you are updating your code and want to update the localization, things get hairy. I do not want to go into detail here because otherwise this post would never end. I would rather like to provide a (simple) solution.
Continue reading “A Simple Approach to App Localization using Xcode, XLIFF and Objective-C”

How to Prevent Dismissing Containing View Controller when Performing a Double-Tap on a UIPopoverController’s Background under iOS8 in Objective-C

When opening up a popover from a modal view (or another popover) on an iPad running iOS 8 and double-tapping on the background of the popover, not only the popover will be dismissed but also the modal view. This behavior was non-existant in iOS 7 and seems to be a bug in iOS 8.
Continue reading “How to Prevent Dismissing Containing View Controller when Performing a Double-Tap on a UIPopoverController’s Background under iOS8 in Objective-C”