Betting your company on Metaverse AR/VR Craze

First Story that I want to share today is from my experience

In 2009 I worked as an Animator and E-Learning Courseware Creator and Designer. And I was planning to switch the design domain to HCI/UX, i.e. Human-Computer Interaction/User Experience Design.

And software like Apple Shake and Adobe After Effects was standard competitive tool used in both domains.

I was using an iMac at that time. Adobe After Effects was bundled in Creative Suite, costing around INR 45,000/- in India. Apple Shake was way cheaper as it was a standalone offering from Apple.

It was the day of 30th July 2009 that I was going to start to learn the Apple Shake as Apple offered all tutorials on their website for free. And it was the same day that Apple discontinued Apple Shake. When I woke early to learn, I saw the news on their portal. I was devastated by the news. But I was relieved as I saved my time as if I started learning it two months ago, and then they discontinued it, which was a waste of time and energy. The software skill you acquired doesn’t exist in the world, or there is no demand for your talent in your industry, is a total waste of time.

There is another story that I can share with you today.

(more…)

Continue Reading Post

Recover accidentally deleted Apple Address Book Contacts, Calendars and Safari Bookmarks from Apple iCloud

Apple’s iCloud is for iPhone, iPad and Mac cloud data syncing platforms activated by default for every Apple ID on any Apple device. Apple introduced Apple iCloud after the failure of MobileMe cloud offerings for Apple iPhone, iPad and Mac.

In day-to-day life, it may happen that you may accidentally delete or lose your Apple Address Book contacts or Safari Bookmarks or Calender data. But there is a way to restore in the case of loss. You can go to iCloud.com to restore your missing data from an earlier version.

Once you restore old data with current data, the existing data will get replaced. The restoration process can be undone in case of any glitches.

Restore your contacts, bookmarks or calendars from an earlier version

(more…)

Continue Reading Post

Choosing your correct online Music distribution and streaming service provider

In the old golden day, music came on cassettes and compact disks (CDs).

With the evolution of better, faster, stable internet with Gigahertz processing power for computers, better/stable computer applications came along. With the invention of gesture-based high-tech mobile devices like the iPhone, modern, always accessible pocket-friendly apps emerged.

With faster 4G and 5G internet mobile data, internet-ready cloud-enabled apps came with better interactions. Moreover, even if mobile devices got more than 64/128/256/500 GB and 1 TB of internal storage, people will never have to come to desktop/laptop computers to back up and free up storage.

Apple first introduced Apple iTunes with a CD Ripping facility to convert already bought music cd collections to mp3 for easy listening on Mac computers and then a range of iPods. iPods didn’t have to have internet in the early days then. They were internet ready after a few years, the video on iPods and then an iPhone introduction.

(more…)

Continue Reading Post

My side of the story of selling Apple iPhone apps on the Apple App Store while doing a day job…!!!

I am selling apps on Apple App Store since 2012, Tried free apps with excellent sales but no revenue or no Apple iAd revenue or very little. I kept doing that for two to four years. Then I removed all of my apps from the sale and kept my account inactive with no apps on ready for sale for almost one or two years.

Then Swift language was introduced with support for Unicode while watching Apple’s Keynote presentation, I got the idea of Learning Devanagari Script apps with support for Marathi, Sanskrit and Hindi Languages.

It got almost 3 months of the year 2016 for me to record 500 audio samples and videos with proper code to get to the level of MVP i.e. Minimum Viable Product.

Next three years I finished recording audio and designing videos and vector illustrations. So it was a total of 700 Audio Recordings with statements and alphabets (Vowels, Consonants and Barakhadi), and 422 animated videos for stroke by stroke guide. Then almost 500 vector and raster illustrations.

With Covid and Corona Epidemic and forced leave from March to November I finished and upscaled all of my apps with visual and performance quality for my Mudrakshar, Swarakshar and Chitrakshar apps.

(more…)

Continue Reading Post

My experience in converting my paid educational apps to a subscription business revenue model.

After experimenting with various apps, I ventured into an educational language-earning app in 2013/14. I developed three apps Mudrakshar for tracing Alphabets, Swarakshar for Pronouncing Alphabets and Chitrakshar for Alphabet Charts with Illustrations and audio pronunciation. All three apps were dedicated to Devanagari Script—mainly Marathi, Sanskrit and Hindi Language. For Chitrakshar, I added the English Language with Latin script.

I am developing my apps for Apple iOS, iPadOS and macOS platforms. Here is my Apple Developer Profile if you want to check it out.

I think the In-App purchase / StoreKit framework was not introduced back then. That’s what I remember. So I used paid app business model to support my app development and time invested.

Maybe because I started sailing my apps with an upfront paid pricing model, I was forcing my users to purchase them without allowing them to try them before they bought. As a result, I had significantly fewer downloads or sales. But over the years, I sold almost 1,000 units of apps or more. I also utilised App Store Connects’s App Bundles feature at that time. App Bundles undoubtedly helped me to sell more apps with discounts.

(more…)

Continue Reading Post

Here is how to apply UIVisualEffectView & UIBlurEffect to UITableView, UITableViewCell, UICollectionView, UICollectionViewCell, UIView / View in your Apple iOS / iPadOS or macOS Catalyst App.

As Apple describes UIVisualEffectView & UIBlurView in its support document as follows:

Depending on the desired effect, the effect may affect content layered behind the view or content added to the visual effect view’s contentView. Apply a visual effect view to an existing view and then apply a UIBlurEffect or UIVibrancyEffect object to apply a blur or vibrancy effect to the existing view. After you add the visual effect view to the view hierarchy, add any subviews to the contentView property of the visual effect view. Do not add subviews directly to the visual effect view itself.

So in simple words, you don’t have to use Adobe Photoshop to get a blur effect and fake superimpose on your UIView instead, you can get the same effect programmatically for every situation without any hassle.

Note: If you are using UIVisualEffectsView in your app I would strongly suggest you use a system setting called ‘Reduced Transparency’ to condition code it. If the user doesn’t want transparency or Blur or Vibrancy effect for all of the apps in his iPhone or iPad or Mac he can just do it with a single switch in the settings app. Another note view that you are applying effect should preferably be the Popover View Controller. Another thing is to remember to replace the below blue color with the UIColor of your choice with alpha channel transparency.

For UITableView and UITableViewCell, use the following code in your UITableViewController’s viewWillAppear function:

(more…)

Continue Reading Post

Here is how to add a mouse hover effect / UIPointer Interaction to your UITableViewCell, UICollectionViewCell, UIButton, UIView using Swift

As Apple describes Pointer Interactions in its support document:

Pointer Interactions: Support pointer interactions in your custom controls and views.

iPadOS 13.4 introduces dynamic pointer effects and behaviors that enhance the experience of using an external input device, like a trackpad or mouse, with iPad. As people use an input device, iPadOS automatically adapts the pointer to the current context, providing rich visual feedback and just the right level of precision needed to enhance productivity and simplify common tasks.

Note: UIPointer Interaction is only related to iPad / iPadOS app

Initial Step: Add ‘UIPointerInteractionDelegate’ in your View Controller’s Class Declaration

For UIButton:

Out-of-Box Implementation:

button.isPointerInteractionEnabled = true

UIView and Custom Implementation for UIButton:

(more…)

Continue Reading Post

Programmatically get iOS, iPadOS, macOS Catalyst Operating System Name and Version and a model identifier of iPhone, iPad, and Mac devices.

Programmatically get iOS, iPadOS, macOS Catalyst Operating System Name and Version and a model identifier of iPhone, iPad, and Mac devices.

Here is a simple way to programmatically get the operating system name and version of your iOS, iPadOS and macOS.

The below code will also return the value of the iPhone, iPad and Mac Model identifiers to help you know if it’s MacBook or iMac in a Mac case or iPhone 11 Pro or iPhone 13 Pro etc.

Step 01: First import IOKit, It is only required for macOS Catalyst app-specific code.

(more…)

Continue Reading Post

Get your Apple iOS (iPhone), iPadOS (iPad) and Mac Catalyst app Version and Build number programmatically.

Here is a small function that I have written that you can use in your iOS, iPadOS or macOS Catalyst app to get your app’s current version and build number and print it on screen whether will on the app’s about or support view.

Function: copy the below function in the Xcode project’s UIViewController Swift class file.

(more…)

Continue Reading Post

Let’s learn how to implement WKWebView in Your iOS, iPadOS and macOS Catalyst app

Before we jump into implementing WKWebView I would first introduce you to why you want to use it. WKWebView helps you when you want to load a webpage inside your app without throwing users to a third party browser outside of your app.

Let’s start coding,

Step 01: First Import WebKit

import WebKit

Step 02: Add ‘WKNavigationDelegate’ to your declaration of ViewController Class

WKNavigationDelegate

It will look something like this:

class ViewController: UIViewController, WKNavigationDelegate {
}

Step 03: Now create two variables for loading webView and one for button which will close webView

var webView: WKWebView!
var closeWebViewUIButton = UIButton(type: .system) as UIButton

Step 04: Now naviagte to your ViewDid Load method

override func viewDidLoad() {
super.viewDidLoad()
}

Step 05: Now in your ViewDidLoad method add the following code, Which will load WKWebView. You can change the URL as per your preference.

(more…)

Continue Reading Post