Sorry for the delay yet again in responding. I’ve been sick (again!!) for the last few days which has led to my absence from all my work on Home Assistant.
Here’s the current status of the app:
- Apple rejected my first build because they wanted a video showing features of the app that they were unable to test. They also rejected it because they wanted more information about how iTunes file sharing is used (for custom push notification sounds). I began to research what kind of video they were specifically looking for when the following happened…
- Since submitting to Apple a major breaking bug was found in the app which caused crashes whenever special notifications (attachments and content extensions) were used. This was due to not enabling Keychain Sharing between the primary application and the two notification extensions.
- I also have come to realize that the UI is just an absolute mess. The reasons for this are as follows:
- Realm, the database of choice, has a major problem in that anytime that you attempt to update a record and the update you provide doesn’t have a value set, it will be set back to its default. This manifests itself in many ways, such as state not being properly updated, as well as your location zone settings being reset. The reason it happens is because when the app opens or we receive an EventStream event I update the database by passing in the entire object. I would have to write a function that dumps the object out of the database into JSON, and then compare the database object with the inputting object and then execute an update with the difference of the two objects which is pretty complex IMHO.
- Many expected UI functionalities are missing or broken. This is because, to be quite honest, I don’t use the app for controlling devices, I use it for location tracking and push notifications. Some of the implemented device types (components) are either half implemented (like light) or look bad (like media player).
- I also discovered a new bug that was introduced in early January which only affects new installations of the iOS and causes instant crashes with no way to fix them, other than by disabling zeroconf manually in the code. This was introduced in this pull request. I hadn’t seen it before because I rarely test against my production Home Assistant instance as it adds a lot of unnecessary device trackers and sensors.
- Finally, there are the well known issues with the settings screen that make the app confusing to setup, such as the weird way that I try to get you to use HTTPS, or not being able to change a password/detail without a full reinstall. The latter was implemented because I would have to clear out the entire database when changing URL because I couldn’t confirm which entities belonged to which servers.
So, quite a few problems, all of them needing to be fixed. Here is my proposal:
- A full rewrite of the Settings screen to fix all the weird behaviors and allow for changing the URL/password freely.
- Disabling of Realm for entity storage until they or I come up with a solution for the default values issues.
- Disabling the UI entirely, except for the Settings screen, and replacing it with a single web view which will load the existing front end so you can control your entities through that. This has a number of benefits, the biggest one being that Realm won’t be needed and most components are implemented in the existing web front end. My hope is to bring back the native UI once the problems with Realm are figured out and we have better support for the existing components we have UI for as well as adding more UIs to eventually implement all of the components. My ultimate dream is to start getting enough people to contribute to the iOS app and adding components since I don’t have all the component types and don’t always understand the use cases for all of them.
- Coming up with an alternate place to store the location settings since it can’t be in Realm. Most likely place will be UserDefaults.
I’ve been super busy with work recently, which has also added to the delays that you all have seen in my responses. Sadly, because my work load isn’t expected to lighten anytime soon, I am unsure when all these fixes can be completed so that I can get the app submitted to the store once again for review. I will add that the review will be much easier to pass with a missing UI, but would also say that it’s possible it will also be harder since Apple will be able to focus closer on the notifications and location features, some of which don’t always necessarily fall within previously implemented functions (like the push notification to update location or custom push notification sounds).
So we’re kinda stuck. I expect that I will be able to get the app done in the next 3-4 weeks, and will keep you all posted, but can’t firmly commit to that timeline right now. I would plan to fix issues 2, 3 and 4 first, and then number 1.
I know this isn’t what many of you wanted to hear, and trust me I didn’t want to get to this point either, but now we are here and have to deal with it. I ask you all to be patient. If you want to see where I’m at in getting things fixed up you can keep an eye on the GitHub repository which I recently open sourced in preparation for release.
Please accept my apologies for all this. I hope you can understand the situation I am in and also understand that I undertook this project as a labor of love that I can only commit free time outside of work to. Reply to this thread if you have any questions and i’ll do my best to answer them in a timely manner.