Keith and The Girl Forums

Keith and The Girl Forums (https://www.keithandthegirl.com/forums/)
-   The KATG App (https://www.keithandthegirl.com/forums/f36/)
-   -   Rewriting both the iPhone and Android apps (https://www.keithandthegirl.com/forums/f36/rewriting-both-iphone-android-apps-19735/)

MichaelApproved 02-13-2016 11:10 AM

Rewriting both the iPhone and Android apps
 


I'm rewriting the iPhone & Android apps. This is the first of several videos that I'm going to post which follow my progress.

This new version of the app will allow us to share 80% of the code between the iPhone and Android apps. That means, when we add something new for the iPhone, it will also be added to the Android version, since they share the same code.

The 20% difference in code are device specific features, such as how the lock screen displays the player controls or how we handle push notifications. Occasionally, something will be available for just the Android or just the iPhone but that'll be related to the device itself. The core features will be released for both iPhone and Android at the same time.

This first video shows some core elements working
- Contacting the KATG server.
- Downloading the list of shows.
- Downloading the images.
- Downloading the episodes for a show and displaying those.
- Basic navigation.

One of the major challenges with the app is keeping a local copy of everything in the app, so it's available offline. It means...

- Check if you have a copy of the data in the app first.
- If you do have data, is it outdated?
- If you need to download content, make sure to only grab what you need, so you don't waste battery life downloading the entire library of content over 3G.
- Save that newly downloaded content.
- Display the new information.

The code is written in a platform called Cordova with Ionic framework. This is the first time I'm working with this platform, so there's also a learning curve.

Learning the platform and getting the core offline features to work was a large challenge for this phase. Now that the core backend tools were created, I can start to work on the frontend stuff, such as displaying the show pictures, notes, guests and automatically downloading the shows as they come out.

Piscean 02-13-2016 11:38 AM

This is great news! Any idea when it will be available for testing?

MichaelApproved 02-13-2016 03:28 PM

Quote:

Originally Posted by Piscean (Post 850585)
This is great news! Any idea when it will be available for testing?

I'm trying not to make empty promises, so all I can say now is that I'll have a new update at least once a week. After about 3 updates, I'll have a better handle on the roadmap and more credibility with the timeline.

MichaelApproved 02-20-2016 12:26 PM

Rewriting both the iPhone and Android apps - Part 2
 


This update shows great progress with the episode and guest information. Here's what I added.

- A tab with all guest names and their photos.
- The list of episodes now includes the guest information and their photo.
- Clicking into an episode reveals the episode details screen which includes the notes, guest photos and pictures from the episode.

Struggles
----------------------------
Since the last update, I had to rewrite some of the core code. I was trying to make generic functions that could be reused in much of the code but they turned out to be too generic. I ended up pulling back and writing a custom function for many of the database and API requests. They're fairly similar to each other but different enough to need their own functions.

Screen optimizations have been a struggle. The lists are choppy while scrolling. I think it's because there are so many images on the screen and the way I'm displaying images could be a problem. I've done 90% of the optimizations that I'd like to do. I'll leave the last 10% alone and wait to work on it more when we have the final design in place.

Regarding the image loading, Android has a security feature that's making it difficult to display downloaded images. The problem is the webview isn't allowed to access the data folder. I have to encode the images as base64 content and make the image source a data URL. That slows down the time it takes to display all those images.

Having so many pictures with data URLs could also be adding an extra memory load to the webview. I can do more tests to be sure but what's the point? It's the only way I can display images, so I have to live with it.

There's an alternative way to bypass the Android image security problem. I can include a proxy web service with the app and have that service read the files. The tag would look like src="http://localhost:8000/images/guest-photo-123.jpg" but that's one more chunk of code that I'd have to maintain and another chunk of code that could introduce bugs. Not worth it.

Going forward
----------------------------
My focus for the next update is going to be streaming/downloading the audio files and player controls. I've already done proof of concept tests that have been successful, so I don't think I'll run into major problems. Fingers crossed!

The framework
----------------------------
For those wondering, I'm using Cordova with Ionic framework 1.X with Angular JS 1.X. Both Ionic and Angular have 2.0 releases in beta right now. Those new versions are supposed to have major improvements in performance.

I'm debating whether the performance improvements will be worth moving to the new versions, even while they're in beta. The major concern with moving is that they both changed a lot of their core methods for doing things. I'll have to learn the new stuff and rewrite a good chunk of code to make things work. That'll delay things and we'll also lose access to the large plugin library that's available for the current version.

Will it be worth it? That's a decision for later.

MichaelApproved 03-08-2016 09:36 AM

Rewriting both the iPhone and Android apps - Part 3
 

In this update, I rewrote the core code, again. This time, I feel great about how the code is performing and app is at the level I'd like it to be.

The newly implemented features are:
- Guest list with their photo, description and most recent appearance.

- Guest details with a little more info and a list of all the shows they've been on.

- Show photos that open into a gallery.

- Streaming and downloaded audio with play, pause, and skip ability.

- Resume the place where you last listened.

- "Currently playing" bar at the bottom that shows you the currently playing episode. This bar will always feature the most recently listened to show.

Coming up next:
- A scrubber bar that tracks the current position of the episode and allows you to scrub forwards and backwards.

- Background downloading while the app is closed.

- Automatic downloading when a new episode is out.

- Push notifications.

I'm not sure how the automatic downloads are going to work out. This is an area that I haven't created a proof of concept for. I've done some research and there are several tools available but I think the existing tools might be limited. I might need to hire Android & iOS developers to enhance those tools for me, so that I can achieve the features I need.

Namely, I'd like downloads to automatically trigger with a silent push notification and then trigger a local push notification when the download has completed.

lizsquiz 03-16-2016 03:19 PM

It seems like in the latest version, the ability to just stream without downloading is lost. Is that intentional?

MichaelApproved 03-16-2016 04:22 PM

Quote:

Originally Posted by lizsquiz (Post 851469)
It seems like in the latest version, the ability to just stream without downloading is lost. Is that intentional?

Unfortunately, it is. We had to make that change because the stream/download combo was so buggy that it was hurting both features. The constant bugs in the current one is why I decided to start from scratch and rewrite things.

In the version that I'm writing, you can stream or download.

lizsquiz 03-16-2016 04:29 PM

Cool, so long as you're aware, I'm happy :)

amnesiac 10-22-2016 03:11 PM

This looks really complex & difficult. Any updates for us?

I came to this forum to suggest a feature idea, but after reading this thread I doubt my idea is possible.

Anyway: I want to participate more in the KATG awards but I find it a pain to stop the episode and write down the time at which I note an award-worthy moment. What if there was a button you could push while listening to the show that created a bookmark/time stamp and a list of those time stamps appears somewhere else in the app? Then I wouldn't have to stop the show to make notes.

Thanks for your hard work.

MichaelApproved 10-24-2016 09:17 AM

Quote:

Originally Posted by amnesiac (Post 856267)
This looks really complex & difficult. Any updates for us?

I came to this forum to suggest a feature idea, but after reading this thread I doubt my idea is possible.

Anyway: I want to participate more in the KATG awards but I find it a pain to stop the episode and write down the time at which I note an award-worthy moment. What if there was a button you could push while listening to the show that created a bookmark/time stamp and a list of those time stamps appears somewhere else in the app? Then I wouldn't have to stop the show to make notes.

Thanks for your hard work.

Interesting idea. I might be able to create a button that sends an email with a time stamp. Would that be helpful?

I'm literally in the final stages of this. I just squashed a few bugs today and have a release candidate ready for the team to test.


All times are GMT -5. The time now is 06:27 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.1
Keith and The GirlAd Management plugin by RedTyger