All posts by Luka Gabric

iOS Facebook Deep Linking

facebook_iconDeep links are used to take users directly to the content they are interested in inside your application. In Facebook Ads you’re showing specific content that users are interested in which leads to app install. Using deep links you can take the users straight to that content upon installation. Without deep links users are left on the home screen once they run the application and they have to search for that specific content themselves.

Continue reading iOS Facebook Deep Linking

iOS Core Data – batch delete duplicates

batch-deleteBatch deletes are fast and efficient for deleting Core Data entities when using an SQLite persistent store. They provide far better performance than deleting specific NSManagedObjects because batch delete operations are performed in the persistent store (at SQL level). Since the changes are reflected in the persistent store, they are not reflected on objects that are currently in memory.

Continue reading iOS Core Data – batch delete duplicates

RxSwift vs ReactiveCocoa

rxswiftWhen I started looking into FRP (Functional Reactive Programming) on iOS, ReactiveCocoa was pretty much the only way to go. Today there are quite a few FRP frameworks available, with ReactiveCocoa and RxSwift as the two most popular. ReactiveCocoa has been out there for a while and at the moment it is obviously more popular, but RxSwift is catching up fast. Both frameworks are extremely powerful and you can’t go wrong with either, but my vote goes to RxSwift for a few reasons.

Continue reading RxSwift vs ReactiveCocoa

iOS Deeplinking – Universal Links and Associated Domains

deeplinkin-universal-linksiOS Universal Links are a great way of handling your regular website URLs directly in your application without a need to open it in Safari. The users get a seamless experience of navigating straight to the content in the app. If the application is not installed, the system will fallback to opening the URL in Safari. Custom URL Schemes have been used for communication between the apps, but the problem is that other applications can claim the same URL scheme. Universal links solve that problem.

Continue reading iOS Deeplinking – Universal Links and Associated Domains

Xcode 7 Symbolicate iOS Crash Report

crash_thumbIf Xcode cannot symbolicate the crash report automatically, you can use “Symbolicatecrash” tool to symbolicate the report manually. There are three files you’re going to need for this to succeed. The .app file (or if you have an ipa file just rename it to zip and uncompress, you’ll find the app file in that package), the .dSYM file and the .crash report.

Continue reading Xcode 7 Symbolicate iOS Crash Report

iOS Audio Player with Lock Screen Controls

audio_player_thumbPrior to iOS 7.1 the UIApplication’s beginReceivingRemoteControlEvents method needed to be called and remoteControlReceivedWithEvent implemented where you’d handle remote control events by the event type that is received. In iOS 7.1 MPRemoteCommandCenter is introduced. With command center it is much more convenient to handle the remote control events.

Continue reading iOS Audio Player with Lock Screen Controls

ESP8266 Relay Smart Socket with iOS App Remote Control

es8266-thumbESP8266 is a family of inexpensive full TCP/IP stack Wi-Fi chips and microcontrollers that can be programmed using Arduino IDE. It can work as a standalone microcontroller or interfaced with an Arduino microcontroller via AT commands. I decided to try it out by itself on a simple relay project with an ESP-01 module. The program is a simple web server that can be used by a client to turn a power socket on and off using a 5V relay module.

Continue reading ESP8266 Relay Smart Socket with iOS App Remote Control

LGStackView – Swift iOS8 control similar to UIStackView

lgstackview-logoLGStackView is a control that is a simplified version of UIStackView supporting iOS8. It is used to stack dynamic subviews constrained with autolayout constraints in Interface Builder based on their hidden or alpha property. Once the constraints are set up for all views, there are two IBInspectable properties in Interface Builder to set up. First is the orientation (vertical/horizontal), and the seconds is padding among views. The order of the views is determined by their z index, which is set by reordering subviews list in Interface Builder.

Continue reading LGStackView – Swift iOS8 control similar to UIStackView

Arduino USV Robot with GPS and Compass

rover_thumbThe goal of this project was to create a robot that would be able to reach a goal geolocation from any starting position while avoiding obstacles. Performing this operation with multiple goal locations, the robot is able to travel a predefined path. Robot operation is based on two modes: Cruise and Wall follow (for obstacle avoidance). Cruise mode uses readings from GPS and Compass while the wall follow mode uses distance information acquired from 5 ultrasonic sensors as well as compass readings. The main operation loop runs at 20Hz.

Continue reading Arduino USV Robot with GPS and Compass