Skip to main content

Posts

Showing posts from January, 2019

Clean Swift - an alternate to VIPER on iOS

I would like to talk about the alternative to VIPER — Clean Swift. At first glance, Clean Swift is similar to VIPER; however, the differences become visible after looking at the way the modules interact. The interaction between them happens in cycles. Data transmission is based on protocols (again, similar to VIPER), which allows for replacing one of the components of the system with another one. Generally the interaction process looks like this: the user clicks on a button, the View Controller creates an object with a description and sends it to the Interactor. Interactor, in turn, launches a specific scenario following its business logic, then produces a result object and transfers it to Presenter. Presenter generates an object with the data formatted for presenting it to the user and sends it to the View Controller. Clean Swift (as opposed to VIPER) has a unidirectional flow of data processing and decision making . There is always only one cycle — View Controller— Interactor — ...

TestFlight: Invite testers per public link

Apple launched Testflight public beta invite links as announced in last WWDC: You can invite up to 10,000 testers using just their email address or a public invitation link. Link will be valid for 90 days and after that it will expire. Please find here a step-by-step tutorial: Medium.com Would be nice add-on for fastlane . Take a look also at fastlane boarding .

Starting with iOS 11 Cookies are NOT shared any longer between Safari and Safari View Controller

This year, Apple announced that starting with iOS 11, all instances of Safari will no longer share the same cookie space. This means that cookies set in the main Safari browser app are no longer readable from an instance of Safari within another app that could be created within a native app via the SFSafariViewController. Branch.io

Changing Android ID on a device for test purposes for Android <=7

Setting a customId: adb shell content insert --uri content://settings/secure --bind name:s:android_id --bind value:s:customId Checking the current androidId: adb shell content query --uri content://settings/secure --where "name=\'android_id\'" Resetting the androidId: adb shell content delete --uri content://settings/secure --where "name=\'android_id\'" Hint: Works for Android <= 7 only since with Android 8 the Android ID is created differently.