This is the final part of the series where I talk about our new app, I was there. In this part I will talk about some of the technical challenges faced while building this app such as,
- how this tutorial by Apple had a one crucial problem that caught me off-guard
- iOS screen moving up issue and discovery of a handy CocoaPod
Followed by everything else one would need for an app launch such as
- App Store Optimisation and where to hire help for it
- Acquiring the iOS app icon
- Using social media to promote the app
So let’s get started but first let’s have a little recap of Part 1
Previously in Part 1
In part 1 we talked about my motivation behind making I was there and the outlined three practical use cases for it. The use cases I gave were how it’s a one stop photo solution for your information delivery via image needs.
The idea is that as we go about our day, we see many memorable things and hence we try to capture those things and make a memory. Typically we want to share that memory with someone or keep a record of it, I was there comes in handy by giving you a head start in defining it. How? it tries to predict what’s in your image with it’s onboard Artificial Intelligence.
In part 1 I have outlined some real life use cases for using I was there, so if you would like to know more about it, have a read of Part 1 by clicking the link below.
Building an iOS only app
Our first app i.e. the flagship product My Day To-Do was built with a bit of a unique architecture i.e. it’s a purely native iOS app that uses HTML5 to power it’s UI. If you would like to know more about it, you can have a look at my GitHub repo for it. For the new app, given how heavily it deals with images, I thought it would be best to use the native iOS controls for it. Why? it’s simply because I was there deals with images and images are a slightly ‘heavier’ resource . Therefore while building the app, I figured it would be best not to add the overhead of learning how to optimise image delivery to the WKWebView in an iOS app.
That iOS tutorial…
My go to source for learning how to make a pure iOS app was Start Developing iOS Apps (Swift) and this was great introduction to learning the basics. Initially I thought this tutorial was my one stop solution to building an iOS app with a UITableView that has images in each table cell. That was until I realised the solution in the tutorial wasn’t very scalable – for what I wanted to build. To my benefit I was using one of the slowest devices (iPhone 5) for my test so any performance flaws show up sooner than later.
What was the problem?
I was building an app that had a UITableView where each cell had an image and some text next to it e.g. have a look at the attached screenshot to know what I mean.
The UITableView solution given in that tutorial worked fine for the first 3 -5 rows however more of these rows were added the app became slow, almost irresponsive and the phone got noticeably hot.
To me, I knew this was a scalability issue and I figured the reason why the UITableView is so slow and irresponsive is because the images in those cells were high resolution images captured from the phone’s camera. This was entirely my fault, I mean not sure why I did not think of this? That tutorial works great as it deals with small static images and for I was there we are dealing with higher resolution images.
The solution to me was pretty straight forward, even if not the most efficient. Every time we capture an image, we save two copies of it i.e. one full resolution image and a 150×150 pixel copy (thumbnail). This way the thumbnail is the one that gets displayed in the UITableView and the higher resolution image is shown when the user taps on the table row to check more details. I will write a more detailed post with code samples in another blogpost.
Now is that the right solution to an “iOS” problem? Probably not and if you know a better or a more iOS specific way to solve this issue please let me know in the comments below.
The next technical issue that I faced was shifting the keyboard up when editing the name/details of a memory. Initially I added an observer to observe the keyboardWillShowNotification in the NotificationCenter. I discovered my solution worked perfectly with an English iOS keyboard but if the keyboard is in a different language e.g. Simplified Chinese then it will break i.e. the screen went blank or some strange behaviour.
At this point, it was one my colleagues (working in the same co-working space) that came to my rescue. He said why not just use a Pod i.e. CocoaPod! I was like “hmm is there really a pod for this”, he replied “totally! there’s always a Pod!!!” Up to this point I had only used pods while adding Firebase Analytics to my app but not for anything else. Anyway so my colleague recommended the IQKeyboardManager pod which I installed and BAM!!! problem solved! So yes if you have any keyboard issues I would recommend using that pod.
Anyway once I resolved all the technical issues, then it was time to launch it but there were other problems to solve there too.
One of the things before app launch is that we need an app icon and for this I turned to my trusty app icon designer. FiverrCrazyGuy on Fiverr, once again, I gave him my simple drawing of the app icon on a piece of paper and he turned that into an icon.
Once the app was launched, the next issue was to let people know about the existence of such a app. One of the first things that came to mind was App Store Optimisation (ASO).
Initially for ASO I just used a bunch of random keywords that I could think about and added some popular app names in the ASO. This worked OK I guess? I mean I managed to get 12 or so downloads per month so actually it wasn’t that great and I thought let’s use a slightly more professional method. Hence once again I turned my attention to what I can afford at this stage i.e. Fiverr. I ordered the Basic package for $15 from this seller.
ASO is a very hard thing to gauge i.e. it takes a good couple of months for it to yield any noticeable results so I did give the seller a 4-star review. I think his work is good but I am yet to see any significant results or spike in downloads because of it. Please remember it’s only been 2 months since we have used his solution and ASO takes time so I don’t expect to see any (if?) significant results for another month at least.
Social media posts
Social media is almost a necessary evil these days if you want to generate any traction for your product. So did I do any social media marketing? well sort of…
Facebook and Twitter
Just the routine post that said “Hey all, we have a new product check it out” with some screenshots and we did get the maximum downloads for a day (15) for I was there after this. I think that may just be my 700+ Facebook friends doing me a favour and not actual users. Of course retaining these users is entirely up to how compelling the app actually is, so yes that’s on me. Beyond that I haven’t done much marketing on this yet. Ohh we also have a Facebook page for this app (initially we called it Your Memories – I was there), give us a like there if you can.
I am quite new to Instagram and this one is a bit hard to work with due to the fact that unless you have a business account, you cannot post clickable urls (links) with your posts. However I did share some posts on it and this is something that I intend to use Instagram for. I mean I only got on Instagram to market this app by sharing pictures taken with this app. As discussed in Part 1 of this post, every time you share a picture with this app, it adds a watermark of necessary info on it. That info includes the app icon and name on it, have a look a sample
Alternatively you can also have a look at my personal Instagram account for my posts with I was there.
p.s. please beware of my Instagram account even though I signed up to post content for exposure of this app, I couldn’t help but a few (too many) gym selfies. Yes I am guilty of that too, but it’s not me, it’s Instagram! It really is!!!! I mean some of the Instagram filters really do add more definition then there is to your muscles, ergo making it the perfect for gym selfie tool!
This concludes the series on the first AI powered app from My Day To-Do. In summary this post talks about almost all the steps you should follow to launch your app to the app store. Starting with building the app, fixing some technical issues, app store optimisation, making an icon and finally to market the app. Hope you find this post useful and can take away something useful from it.
As usual, if you find any of my posts useful and want to support me, buy or even try one of our products and leave us a review on the app store.