Distributing macOS apps as ZIP archives has been quaint since Sierra. Today’s macOS packaging requirements mandates notarization, otherwise it would say that your app is suspicious. This often means distributing apps within disk images since this container format can be signed, notarized, and stapled.
How to Pass App Store Review: Guideline 4.3 Spam
Publishing similar apps is considered spamming. Yet there are valid reasons to develop multiple apps from the same code base. Here is what you need to know to avoid being labeled as spammer by app reviewers.
Look-Alike Apps are Considered Spam by App Review
Some developers’ app updates were rejected from the App Store because their apps look similar. Worse, some others were marked as spammer due to publishing apps that looks like another developer’s app. How can you avoid this?
How to Combine Apps into a Single Container App
It would be a big blow when Apple rejects your suite of apps, call it “spam” and tell you to move into a container app. If this is happening to you, then this article would be a solution to your predicament.
How to Compile OpenSSL 1.1.1 for Apple Silicon
The long-rumored ARM Mac is on the horizon. With this comes the big work of porting and re-compiling current applications. But many Mac App Store apps are dependent on OpenSSL, which doesn’t yet support ARM on the Mac. Here is how you can continue to test your mac app while waiting for official OpenSSL support for the new hardware.
How to Publish White-Label Apps in the App Store
Being a white-label app vendor in Apple’s store is not easy. App Review could label you as a spammer because of a number of similarly-looking template apps and jeopardize your entire developer account.
How to Unit Test Network Code in Swift
Testing network I/O code without accessing the backend is not easy. Here is how you can mock the backend by injecting code into the URL Loading System
How to Program iOS on iOS
“Do I need a Mac to program iOS?” – for a long time there is only one answer: “Yes”. But this is no longer true, as there are many ways to program iOS – including on itself. Yes, you can make apps on the device itself. Read this article to find out how.
How to Maintain Loading State in Cells
When a table view asks for a cell, often images in the cell isn’t yet available and needs to be fetched from a server – thus the cell gets a placeholder image. But static placeholders doesn’t look as good as animated ones. Unfortunately cell views gets scrolled off and re-used which makes managing animations challenging.
Clean Architecture with VIPER Sample Project for UIKit
Architecting applications to meet today’s challenges and be ready for tomorrow’s problem is not an easy feat. The principles of clean architecture may be sound, but separating the signal from the noise is tough. Here is a sample VIPER project for iOS that you can tinker to learn about the principles of clean architecture.
How to Implement VIPER Clean Architecture in an iOS App
Compartmentalizing functionalities within an app to improve its maintainability is difficult. More so when you’re not well versed with software architectures and other software engineering principles. What if you can confidently structure your app to be resilient and adaptive to change?
How to Pass App Store Review: Guideline 4.2 Design – Minimum functionality
Delivering a “minimum viable product” won’t be viable if your app isn’t going to pass App Store Review. Is your app “good enough” for the App Store? Is it appropriate for the App Store and not better off in the web? Read on to ensure your app pass the gates of App Review.
How to Provide Free Time-Limited Trials in the App Store
Providing “lite” version of apps had been the strategy to provide free trials since the dawn of the App Store. However these reduced-functionality apps fall short on demonstrating its full capabilities, which in itself be ineffective in enticing the user to buy. Fortunately that is no longer the only option available for App Store apps.
Code Signing Failure due to Symlink Folders
You try to reduce the application’s size by sharing resources in framework bundles and creating symbolic links so that other frameworks can find and use those resources. However this fell at odds with code signing (and probably notarization). Here is how to share code and resources in frameworks the right way.