Apple Vision Ready

    OnlineJobs app now works on Apple’s visionOS.

    VersionedSchema Protocol Updates

    After updating to Xcode 15 beta 7, I got a VersionedSchema error saying that 1 does not conform to protocol 'VersionedSchema' Previously, the variable versionIdentifier was of the type String. 1 static var versionIdentifier: String = "v1" On the latest Xcode 15 beta 7, versionIdentifier is now of the type Schema.Version. 1 static var versionIdentifier: Schema.Version = Schema.Version(1, 0, 0)

    That Annoying Xcode 15 IDELogRedirectionPolicy

    This issue will cause debugging on either device or simulator to slow down to a crawl. For future reference, here’s how I fixed it. Edit the current scheme by going to Manage Schemes. In your run scheme, add the environment variable IDELogRedirectionPolicy with a value of oslogToStdio. It should fix that issue now.

    WWDC 2023

    I just realized that I have not written something or anything about Apple’s WWDC 2023. I was too busy catching up with the WWDC sessions and some fatherly stuff I have to deal with. Overall, I am impressed by the event and the news coming out of it. I just want to write down a couple of thoughts before I forget. Xcode 15 Xcode 15 is buggy as hell. Running an emulator or preview makes my machine overheat.

    Read More

    dSYM workaround in Xcode 14

    Starting with Xcode 14, Bitcode has been deprecated. So, in our team’s case, it is impossible to download dSYM files for debugging crash logs. If you are using Crashlytics or Bugsnag, this is a requirement to make sense of the received crash logs from iOS. But there is a workaround. Previously, all you have to do was go to App Store Connect and download the dSYMs directly from there. But that option is not available anymore.

    Read More

    SwiftUI Tap Anywhere

    Today I learned how to implement tap anywhere to dismiss the keyboard on SwiftUI. In your parent stack, either VStack or HStack, add the following code. 1 2 3 4 .contentShape(Rectangle()) .onTapGesture { UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) } The most important thing to take note here is the contentShape modifier or tap gesture will not work.

    YouTube Coding

    3 days ago I uploaded on YouTube my coding in SwiftUI, working on a couple of simple bug fixes for my hobby project. My wife gave me this idea and also I remember I have some coding sessions in Loom from 2 years ago, where I did a coding demo for a client. And, looking back at those videos is really cool and nostalgic. So, I decided why not upload it on YouTube.

    Read More

    Xylophone App

    In roughly an hour or two, I created an iOS app for our son who loves playing his Xylophone. I came upon this old repo for inspiration and reference. This was still developed using Storyboard and UIKit. So, I set out to write my own using SwiftUI. I also borrowed their sound files. The owner of these files belongs to them. The code looks like this initially. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 // // PlayerView.

    Read More

    Compiling iOS Project in GitHub Actions

    While setting up YAML with GitHub Actions, it seems the build failed. These are the steps I took to integrate GitHub Actions in our iOS project. It seems for CI/CD to work we have to create a Package.swift file in our project. Currently, we do it manually through Xcode’s Swift Package Manager. To create this Package.swift file, we need to run swift package init in the command line and it will create the following files.

    Read More

    SwiftUI Journey Part 10: Settings

    I can’t believe how easy it is to implement a settings page in SwiftUI. For the UI, I only need 37 lines. Of course, this implementation won’t be accepted by the programming gods. Why you may ask. This is implemented in a static way. What if you want to turn every Text() background to Color.yellow. Then you will have to add the modifier background to every Text() view. Let’s make it dynamic.

    Read More

    Flutter Development Reaction Part 1

    I spent majority of my mobile development career on native app development, mainly Kotlin and Swift. And this is my perspective on using Flutter for the first time. I have only seen small code snippets and that’s it. This is my first time logging into Flutter’s official site. I Googled Flutter. And first thing came up is Flutter - Build apps for any screen. And I have to double check, why .

    Read More

    UIKit Drawing Tutorial Fix

    I tried the tutorial from raywenderlich.com but the behavior was incorrect. The canvas or UIImageView seems to move after lifting my finger. It tried to run the official project from raywenderlich.com but it has the same strange behavior. Luckily I found a solution, you need to change this line inside touchesEnded function // from UIGraphicsBeginImageContext(mainImageView.frame.size) // change to UIGraphicsBeginImageContext(view.frame.size) And that's it.

    Submitting Urgent Hotfix and Apple Wasted Time

    I've been releasing several versions on the App Store for over 2 years now and then Apple suddenly rejected it Revise the purpose string in your app’s Info.plist file for the camera to explain why your app needs access and include an example of how the user's data will be used. I made it clear on the camera purpose permission that the user's data, which is the picture, is for their profile picture.

    Read More

    iOS 15 Button Title

    If you encountered default titles on your UIButton when using setImage() like my situation below. As you can see on the screenshot below, I removed the title. So everything should be alright. And when I run it on my iOS 15 device. What the. Anyway, solution is simple. On your UIButton's Atrribute inspector, set the style to default and remove the default Button title. Let me know if you have any questions.

    Read More

    Create a camera shutter in Swift

    I'm going to show how I achieved the camera shutter button and animation using Swift, more or less the same with the stock iOS camera app. Grab a coffee because this one's going to be a little longer. Storyboard UI On your ViewController, drag a UIButton and place it at the bottom part. On the Size Inspector, give it a width and height of 65, thus creating a perfect square.

    Read More

    2020 Was a Mixed Year

    Mixed year because as good as the metrics are compared to last year, it saddens me that a huge number of people are laid off and companies closed because of Covid-19. Hopefully 2021 will be different. Here's a sneak peek of the OnlineJobs.ph app metrics during lockdown. In terms of number of installations, active devices and overall metrics, OnlineJobs.ph experienced significant gains throughout the year 2020. I rewrote the app, from React Native to Swift, back in January 2020 and released the new version a month after.

    Read More

    Mobile App Dev 101: Technical Error Prompts are a no-no

    Technical error prompts are a no-no. But not that important to submit a quick fix to your pipeline. But nonetheless, the reason is that for everyday users it feels like something is deeply broken with your app or worse, they feel like they are the ones who broke or crash it. More importantly they won't understand anything. URLSessionTask is a class for performing URL operations. In case you want to Google it.

    Read More