Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plan for new App Release #756

Closed
15 tasks done
digitaldan opened this issue May 22, 2024 · 62 comments
Closed
15 tasks done

Plan for new App Release #756

digitaldan opened this issue May 22, 2024 · 62 comments

Comments

@digitaldan
Copy link
Contributor

digitaldan commented May 22, 2024

Here's the latest news from Apple. I spoke with a developer support rep on Friday after months of back and forth emails. Basically, our watch ID has been claimed by another developer account, and they won't tell us who that is or reclaim it for us.
Because of this, we can no longer push our app with watchkit support any longer as that ID can not be changed once published in the app store. This seems to be confusing to Apple as well as we have gone through several back and forth with tickets escalated to their dev team.

Our case is still open and i sent a fresh batch of error logs to them after trying a few changes they recommended, but i have little to no confidence now that Apple is going to be able to help.

My suggestion is that we publish this as a new app and new app ID into the app store. I would also like to then push an update to our existing app that will direct users to download the new app, maybe a simple popup that gets triggered at launch stating the issue.

see #746 for more history on this

Todo Items

  • Branch the current released version (use openhab-legacy as the branch name)
  • Create new Apple ID org.openhab.mobile.ios or equivalent ( lets discuss the best name to use here)
  • Create new Watchkit ID
  • Target IOS 14 16 as min SDK level
  • Remove openHAB 1.x / XML support
  • Add FCM messaging to unify push notification code on cloud service
  • Add a privacy manifest and update all 3rd party dependencies that require them as well

openHAB legacy changes

  • Rename openHAB V1 app in code
  • Replace logo with something slightly different then the current logo
  • Remove watchkit from project (we can't push an update without doing this)
  • Add Notification popup informing users of app change (we should talk about how this gets triggered and timing of app release, will want to have the other app live before this pops up so we have a link to it, maybe we make this dynamic with a server side API on openHAB cloud that returns the IOS app id, this actually already exists)

Deployment Todo

We need to work out timing. Ideally we would get the new app approved and published before renaming the current app and pushing an update to it. But we also don't want to be rejected by submitting an app first with the same name and icon (although i have seen this with other companies like solaredge who had two apps for a while)

  • Publish new app to testflight, ensure messaging works
  • Submit new app for review
  • Submit old app for review (but do not have it auto publish, we want to do this manually)
  • When new app is live, release openhab-legacy at that point
@digitaldan
Copy link
Contributor Author

@timbms @weakfl Thoughts on the plan? Specifically to get started i think we need to agree on a 1) branching strategy (create openhab-legacy from either main or develop), and 2) if we want to operate on main and do away with develop ( matching openhab-core, openhab-addons, openhab-js, etc....)

From there i think we can start assigning tasks, i can handle the FCM changes and can update the legacy app with new logos, name, remove watchkit, and add the popup to start.

I'm kinda partial to merging develop into main as a first step, then branch that for openhab-legacy, and release the legacy app with the latest changes since we have had those thoroughly tested on test flight.

@digitaldan
Copy link
Contributor Author

Here's an example of another app that renamed theirs "legacy", so at least there is precedence for this.

https://apps.apple.com/us/app/play-legacy-app/id1479709805

@timbms
Copy link
Contributor

timbms commented May 25, 2024

I'm kinda partial to merging develop into main as a first step, then branch that for openhab-legacy, and release the legacy app with the latest changes since we have had those thoroughly tested on test flight.

The actual development was on 'develop'. Therefore we should branch 'openhab-legacy' from develop. 'main' was not used recently for development. I don't know how much effort it will be to bring 'develop' to 'main'.

@digitaldan
Copy link
Contributor Author

I started to merge develop into main, which was fine, but since we don't really use it, i just renamed to main-old for the time being (we can probably safely delete). I suggest we now rename develop -> main and use that going forward. I'll also branch for the legacy app from that.

@digitaldan
Copy link
Contributor Author

openhab legacy branch from develop
https://github.com/openhab/openhab-ios/tree/openhab-legacy

@digitaldan
Copy link
Contributor Author

digitaldan commented May 25, 2024

Does anyone have any experience with the privacy file @weakfl mentioned? I'm reading about it, and besides making sure our 3rd party libraries are updated and have this file, i'm not sure that we actually access or collect anything that needs to be declared? We do access UserDefaults , not sure if that counts as a privacy API?

EDIT: see #757

@digitaldan
Copy link
Contributor Author

Moving right along. Now that the privacy policy and messaging changes are in, i think its time to start working on the two different apps and ids. For our new build, shall we go with org.openhab.moblie or org.openhab.ios or org.openhab.ui ? I was thinking about how universal builds work and that you can target the Mac Desktop, Apple TV, Carplay, etc.... with a single App ID, which is giving me a little pause on the bundle ID naming (like should we use mobile or ios in the name when it can run on other platforms).

Thoughts?

@florian-h05
Copy link
Contributor

Just giving my two cents to this discussion without being an iOS app developer:

org.openhab.ui would be the bet of these IMO, your reasoning sounds well.
However does it remind me of the Main UI bundle …

Would something like org.openhab.apple be allowed? Also putting org.openhab.darwin on the list, because all Apple OSes have something in common: the Darwin kernel.

@digitaldan
Copy link
Contributor Author

Thanks @florian-h05! There's an old (ish) saying in computer science:

There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.

Naming things is hard ;-) Using darwin is an interesting thought, although i wonder if thats kinda implied just by being in the apple app store.

I was looking around for some inspiration, Sonos uses com.sonos.SonosController and com.sonos.SonosController2, they also have a legacy app and then a new one (named S1 and S2). I was thinking about it more, and org.openhab.controller might be a good choice too? I guess if there are no other opinions i can just pick something by the end of the day. We can always change it right up to the point we release the app publicly.

I guess in the end its not super important, i just know once we publish its set in stone this time.

@weakfl
Copy link
Contributor

weakfl commented May 28, 2024

Throwing my hat in the ring with org.openhab.apple.app.

In the end it wont matter much, no one ever sees the bundle id anyway.

SKU is harder imho 😂

@digitaldan
Copy link
Contributor Author

How about just org.openhab.app , since the apple part is probably implied by being an apple ID? I'm good with that.

@digitaldan
Copy link
Contributor Author

So openHAB Legacy does not fit well as a bundle display name, IOS is removing the space to try and get it to fit:

image

What about use something like openHAB V1 ?

image

@digitaldan
Copy link
Contributor Author

@timbms and @weakfl looks like there are a few pull requests that add new features, or require the new SDK versions. How shall we handle those? I'm probably going to run out of time this weekend to do much else, but i will try and get some dev time in later in the week.

My next steps are to work on the legacy app and add an upgrade UI to it as well as change the logo slightly to differentiate from the main app.

@timbms
Copy link
Contributor

timbms commented Jun 1, 2024

Yes I wrote some of them. I wished we could at least upgrade to SwiftUI watch app

@digitaldan
Copy link
Contributor Author

I wished we could at least upgrade to SwiftUI watch app

I'm not super familiar with SwiftUI, is there a reason we can't ?

Also i was looking at IOS SDK compatibility and it seems like IOS 15 is really the floor, IOS 14 does not seem to be a max version for any device, see https://iosref.com/ios . Should we set the min SDK version to 15 ?

@weakfl
Copy link
Contributor

weakfl commented Jun 2, 2024

Apple's recommendation is current and previous version, so that would be iOS 16.

Would be really beneficial for SwiftUI as well.

@digitaldan
Copy link
Contributor Author

So i think IOS 16 sounds like a good base version to me , i guess this will be one advantage of having two apps, we can keep the current target with the legacy app for those with older devices.

@weakfl
Copy link
Contributor

weakfl commented Jun 6, 2024

iOS 16 would be great.

We just need to make sure to also adapt swiftlint/swiftformat configs (and swift-version).

That will help to catch all sorts of obsolete availability checks and update swift syntax to the latest version.

@digitaldan
Copy link
Contributor Author

So i was thinking about something like this to message users to upgrade to the new app. Needs some UI formatting and cleanup, but you get the idea. I was thinking this would display when the app is launched, and is also available in the settings menu. The user has the option of not being reminded before dismissing.

image

@hmerk
Copy link

hmerk commented Jun 11, 2024

Just to add my 2 cents.
Raising minimum Level to iOS 16 will stop many devices to be usable. Our Democase e.g. has a built in iPad stuck at iOS 15.x and we would need to buy a new one, just for going on conferences a couple of times a year.
Not only me, but some users have older devices mounted as wall displays. We would force them to buy newer hardware....

@timbms
Copy link
Contributor

timbms commented Jun 11, 2024

sure. Old devices can stay on legacy app. iOS 16 runs on iPhone 8 and iPadOS 16 runs on iPad 5th generation from 2017.

@weakfl
Copy link
Contributor

weakfl commented Jun 11, 2024

iOS 16/17 covers 96% of users. This will further increase with the release of iOS 18.

@hmerk
Copy link

hmerk commented Jun 11, 2024

sure. Old devices can stay on legacy app. iOS 16 runs on iPhone 8 and iPadOS 16 runs on iPad 5th generation from 2017.

Ok, absolutely forgot this option ;-)

@lsiepel
Copy link

lsiepel commented Jun 25, 2024

Unfortunately I cannot add much to this discussion, app development is not my expertise. But if I can support or move this forward in any way, let me know. I would really like to have this app updated with the slider fix 👍

@digitaldan
Copy link
Contributor Author

digitaldan commented Jun 27, 2024

@weakfl @timbms , i am thinking through what needs to be done to prepare for publishing the 2 apps. Would appreciate some help here on what needs to be changed.

** App Store Connect Tasks ** (Manually configuring on https://appstoreconnect.apple.com)

  • Change current App to "openHAB Legacy"
  • Update description to include legacy language
  • Create new openHAB App entry with updated description (good time revisit keyword and other metadata)

** Fastlane Changes **

  • Modify fast lane for new org.openhab.app
  • ????

** Github Actions **

  • ???

Let me know what you think , I'm hoping to update the legacy images this week.

@digitaldan
Copy link
Contributor Author

So i have changed the app on apple connect to openHAB V1 and also created a new app, openHAB V2. As soon as V1 publishes , i can change the name of the V2 app to just openHAB . Right now it won't let me since our published app is using that name.

@digitaldan
Copy link
Contributor Author

@weakfl i'm having a wee bit of trouble with fastlane.

First is just getting it running again with github actions for testflight builds.

Second, I am manually submitting builds until we can get it automated, but i was still hoping to use fastlane locally to generate screenshots for the app store. Thats still not working for me as much as i have tried. If you could help me fix that so i can at least run it locally, would be a big help.

@digitaldan
Copy link
Contributor Author

Its still working for me, what are you using for the media attachment URL ?

@digitaldan
Copy link
Contributor Author

digitaldan commented Jul 10, 2024

also you should be on 3.0.3(7), yes?

@florian-h05
Copy link
Contributor

I am using item:Doorbell_Image.
I was on 3.0.3 (7) but downgraded due to this issue.

@digitaldan
Copy link
Contributor Author

Ah, your right, not sure how i missed that, give me a few and i'll push a new release, probably a small thing from refactoring the HTTP client.

@digitaldan
Copy link
Contributor Author

Actually i take that back, the image item i quickly tested with had a null state. Is there anything different about your setup, i think you are using client based certs ?

@florian-h05
Copy link
Contributor

Yeah, I am using client cert auth, but if I disable wifi on my phone, openHAB cloud should be used and it also doesn't work there.

@digitaldan
Copy link
Contributor Author

So i can confirm the the client certs are not working (they were at one point) with the new http client code, so thats something. I'll play around more with that tonight and double check the cloud connection logic.

@digitaldan
Copy link
Contributor Author

@florian-h05 i have a fix, was banging my head a bit until i realized the notification extension was not using the same keychain as the main app, keychain sharing has to be explicitly enabled through entitlements. Working now, i'll merge shortly and a testflight build will follow.

@digitaldan
Copy link
Contributor Author

@florian-h05 let me know if the latest testflight works for you.

@florian-h05
Copy link
Contributor

Just tested it - works again. Thanks!

@alaub81
Copy link

alaub81 commented Jul 13, 2024

I've installed the latest TestFlight version and everything works fine! Thanks for the great work!!!

Just a question, The icons on the watch are not shown. Because the fix for #748 isn't included in the current TestFlight version?

@hmerk
Copy link

hmerk commented Jul 13, 2024

And it's not possible to add the app as a complication on apple watch

Why not ?
image

image

@hmerk
Copy link

hmerk commented Jul 13, 2024

But it is shown under installed Apps?

@lsiepel
Copy link

lsiepel commented Aug 11, 2024

Are we ready to submit the new release for review? Or do we need some more work before we can?

@florian-h05
Copy link
Contributor

What’s the status here?

@nelsonaponte
Copy link

So i was thinking about something like this to message users to upgrade to the new app. Needs some UI formatting and cleanup, but you get the idea. I was thinking this would display when the app is launched, and is also available in the settings menu. The user has the option of not being reminded before dismissing.

image

@digitaldan, there are a few typos: "experince", "recomend", "IOS (iOS)".

@digitaldan
Copy link
Contributor Author

What’s the status here?

I just need to find time to start the process. Once we submit, its going to be a lot of back and forth with Apple review team, as i'm expecting a lot of explaining about the two apps, and probably some changes we will need to make to logos, names, etc...

@digitaldan, there are a few typos: "experince", "recomend", "IOS (iOS)".

Are you going off the prototype screenshot, or the actual message in the resource files, which is different the what i posted above and is also translated into multiple languages?

@nelsonaponte
Copy link

I checked the screenshot. I couldn't find the actual resource.

@digitaldan
Copy link
Contributor Author

Just an FYI i have submitted both apps for review. Our legacy/v1 app was approved shockingly fast. Its ready to release when we are ready. The new v3.0 app is in its second round of review, they apparently did not like having the string "iOS App" in the app description as in: "The Official openHAB iOS App" , apparently that's against the rules ??? Uhg 🤷 .

When our new app is ready, i will release the V1/Legacy app then so have both versions in the store at the same time. Once thats complete, i will update a string on our cloud service which will trigger the V1 app to notify users of the updated experience. 🤞

@maxulm

This comment was marked as duplicate.

@digitaldan
Copy link
Contributor Author

Just an update, we were rejected again due to violating "Spam" polices, as I expected they don't like having 2 similar apps in the store. I have submitted our reason for exception to this policy, also pointing out other vendors like Sonos ( https://apps.apple.com/us/developer/sonos-inc/id293523034 ) who have similar V1 and V2 apps. I'll keep people up to date here as our submission progresses.

@florian-h05
Copy link
Contributor

IMO this is embarrassing from Apple’s side: First they “loose” the Apple Watch app ID and thereby force us to release a new app and then they make it difficult to release a new app … DX could be clearly better.

Thanks for the update though!

@digitaldan
Copy link
Contributor Author

I'm shocked, but they accepted our new app and its ready to publish! I was 99% sure we were going to have a few more rounds of reviews, so that good news. I'll release it shortly, verify its available, then release the v1 app and do the same. Once thats done, i'll updated the current app version on the cloud service, which will trigger the V1 app to display the update message. I had originally thought Apple might have made us publish the legacy app first, hence wanting to delay the update message until the new one was published, but in hindsight, that was not necessary.

@digitaldan
Copy link
Contributor Author

Both apps are out. I have submitted another version of the new app so i can change the name from "openHAB V2" to "openHAB". Apple would not allow the name change until our legacy app published and released the "openHAB" name (its now "openHAB V1") .

@digitaldan
Copy link
Contributor Author

digitaldan commented Sep 6, 2024

I am very, very happy to be able to close this issue. Both apps are released, with proper names, logos, etc.... Thanks everyone for helping out.

image

@GeVaSta
Copy link

GeVaSta commented Sep 30, 2024

Any idea if there are still plans to add svg support for the icons on an Apple Watch? Or should I open a new issue for this?

@lsiepel
Copy link

lsiepel commented Sep 30, 2024

Any idea if there are still plans to add svg support for the icons on an Apple Watch? Or should I open a new issue for this?

Please create a new issue, as this is not specific related to this thread

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests