Finding the custom URL scheme of an iOS app

I was recently hired to find out if an app has a custom URL scheme. Using the URL scheme the developer would be able to implement deep linking and launch that app from his own app. The process of finding the URL scheme was quite simple, so I decided to write a tutorial on how to do it. Downloading the IPA of the app There...

Storing NSAttributedString with UIImage in Core Data

I have recently worked on solving a bug in a simple note-taking app. It allowed the user to save notes that could contain text together with images. The app was built using Core Data and there was a bug where notes that contained images were not saved properly. When the notes were later retrieved, the images were missing and only text was present. Converting NSAttributedString...

How to add Carthage support in existing CocoaPod project

I’ve finally found some free time to review the contributions on AHDownloadButton repo and prepare a new release. Before releasing a new version I wanted to add support for Carthage, because the project is currently only supporting CocoaPods. Carthage is a great lightweight dependency manager and if you haven’t used it yet, I suggest you read up on it on. Even though I’ve used Carthage...

Determining the content size of a WKWebView

In one of my recent projects, I had to use a web view to display an HTML string with local CSS and custom font. The web view had to be embedded inside a scroll view along with a couple of other views. It also had to have a height adjusted to the content it was displaying. My goal was to create something like this: I...

Replicating the App Store download button

With the release of iOS 11, Apple introduced a completely redesigned App Store app with greatly improved UI. Among many features and improvements, one thing that I found interesting was the redesigned download/purchase/update button. I’ve been working in my spare time on implementing the download button. After a bit of experimenting, I implemented a working version. I only needed a couple more days to clean...