Minimal mobile apps for Android and iOS

Greetings all. We are moving forward with building out a non-react-native-webview React Native & TypeScript implementation in this repository, entitled mobile . This way, our mobile app will no longer be tied to the web player’s build, and by extension depend on fixing mobile bugs in the stream repository - the aim is for all functions for the mobile app to be performed inside the app itself, giving us far more control over features and improvements, and untethering us from choojs for example.

This project will aim to share some code from @psi’s beam desktop app, probably at least beam/Api.ts at main · simonv3/beam · GitHub and beam/index.d.ts at main · simonv3/beam · GitHub and some React hooks.


:construction:Development on the repository stream-app has been switched to maintenance mode, in favor of building out a non-react-native-webview React Native & TypeScript implementation in this repository, entitled mobile . I am leaving the content and links pertaining to the previous react-native-webview app below for posterity.:construction:


Here is a quick and minimal phone app that uses react native to port Resonate’s stream repository to mobile: stream-app

Here’s a screen recording of it in action: Stream-App Screen Recording

An Open Google Play Android Build is available for open testing.

A Public TestFlight iOS Build is available for external testing.

The GitHub Releases page has the Android & iOS Apps available for those who want to completely avoid the Google Play Store & Apple TestFlight services but still want to help test our app.

The Expo Project Page permits testing with the Expo Go client.

It’s not perfect, and it will only ever be as good as the stream repository is in dealing with mobile (with the exception of providing continuous background play for iOS mobile, which the in browser player lacked), but it’s a start.

9 Likes

can we get a testflight build out for a first round of testing @peterklingelhofer ?

2 Likes

Looks like TestFlight requires macOS 12.0 or later. I will try to update this weekend. (I have to typically hold off on these updates because they can break audio software sometimes).

Update: Minimal Stream Phone App - #7 by peterklingelhofer

Good news, TestFlight let me submit my build despite not having the app on my OS. It’s only available for Internal Testing currently, so anyone interested in testing on TestFlight please DM whatever info you’d like me to add to these fields. They’re looking for an email, a first, and a last name.

In the meantime, you can preview the published version of the app here stream-app on Expo with the Expo Go App

3 Likes

Looking great so far! It feels a tiny bit more laggy than the regular web app. Is that due to running through Expo?

Edit: It could also be my internet. Been having some issues with it today.

I believe in most situations Expo (how this little minimal app is built) is certainly less performant than regular React Native apps which typically are less performant than native apps built/coded specifically for Android/iOS, so it’s true.

That being said, testing on my own old sluggish iPhone 7 it doesn’t seem to be any less responsive in Expo compared to opening the stream app in the browser (after the initial app load that is). Technically, under the hood, for Android it’s actually using Chrome and for iOS it’s using Safari.

2 Likes

expo go not working for me sadly

Good news, TestFlight let me submit my build despite not having the app on my OS. It’s only available for Internal Testing currently, so anyone interested in testing on TestFlight please DM whatever info you’d like me to add to these fields. They’re looking for an email, a first, and a last name.

3 Likes

Screen Shot 2022-02-17 at 11.20.47 PM

dang

2 Likes

Update: Apple rejected our first submission because we need to implement App Tracking Transparency (apparently just having the user choose to allow or disallow cookies the way we have it set up does not meet their requirements in and of itself). Luckily, Expo has a module specifically for this. I will implement this module so we have this covered and resubmit ASAP!

Once our review has been accepted, we will be allowed to do public TestFlight builds (instead of just internal testing), as well as eventually have the app available for free download on the Apple App Store.

App Store Connect Rejection #1.pdf (47.4 KB)

3 Likes

Shouldn’t we remove the in app credits topup system first?

@auggod, can you elaborate on this? What is the relation between the topup system and a mobile app? I know there was a UI bug with it or two that was fixed in the past month or two, but outside of that I don’t know too much about it. Thanks!

This pull request enables requesting tracking permissions in a way that should appease Apple and is in line with their guidelines. I am creating a new build and will be submitting the new build to Apple for review when that finishes. Essentially, if the user declines permissions, we simply show them this screen and inform them that if they want to use the app they’ll have to allow them, which should be enough to satisfy Apple’s requirements (I’m hoping):

I’m not sure we should publish this app now.

Isn’t it just a test version to check bugs and everything?

2 Likes

Yeah, this is a test version. We’re still in the proposal phase here, but Peter has taken initiative to give us something tangible to look at and discuss. Appreciated!

@auggod, with your knowledge of our platform we’d all benefit from hearing more about your hesitations, what the roadblocks are, or what a better time for this would be. I know this is a tricky time for new things to arrive, since we are focused on the complicated transition off our wordpress infrastructure.

There could possibly be some complications with publishing this before we are off wordpress.

The main change Augustin is referencing is that the current player has a built-in page for purchasing credits. Once we finish QA testing (help needed!) and move off wordpress, we’ll have a more robust system for purchasing credits, paying for a membership, etc, but checkout will happen on a separate Stripe portal the user will be transferred to.

There could also be some complications involving the relationship between the player and the ID server where users manage and update their accounts.

It would take someone more knowledgable about apps, stripe, etc to get into these questions. @Nick_M could possibly help as well.

1 Like

You’re right @LLK, this is merely to prepare for approval and allow for public testing - which just means anyone with the TestFlight app can take it for a test drive. Don’t worry @auggod, I am not submitting this to the App Store for public download! It seems that the same review process that allows us conduct external testing via TestFlight (e.g you can test on TestFlight without privately sending me your full name and email) also allows for submission to the App Store, so this is pretty intrinsic to the preparation process of checking all the boxes and ensuring the app meets everyone’s requirements and is ready to go.

Again, this is just a quick little thing I got together just to tide us over (since it seems people keep asking for it). It’s very limited. However, it may (once we have other things together) be enough to satisfy an alpha stage (referring to this as even a beta would be far too generous in my opinion) and show we mean business, and allow us more time to provide full built-out native apps for both Android and iOS. Bugs users experience using this app should, in theory, be limited to bugs a user would experience when using https://stream.resonate.coop in the default browser on their phone.

I completely understand (and agree) that the difference between creating a browser shortcut to our webpage and this app are, from a tech standpoint, basically indiscernible. However, given the current tech culture and the majority of folks’ knowledge/thought regarding these concepts, this tech does exist to easily bridge this gap.

Again, I have a lot of trust in @auggod’s knowledge and knowhow regarding Resonate’s ecosystem/infrastructure. I wouldn’t want to release this publicly if it wasn’t the right time or wouldn’t help Resonate grow and thrive. It may be that this is not an advisable route to take, and if that’s the case I assure you I fully accept that potentiality.

In the time of writing this, our amended build 1.0.1, was accepted by Apple, and should now be available for External Testing on TestFlight here: TestFlight - Apple (if that’s okay with everyone that is). For now, fear not, the Availability is currently set to Remove from sale so it won’t be showing up in the App Store.

Testing it now - tracks sometimes load slow and sometimes load fast. Tracks do naturally continue to the next track on the album and even while the app is in the background. One current limitation is the status bar: it’s a white bar at the top (my phone is in dark mode so presumably the time and the other information presented is also white so it’s just white text on a white bar. Could disable it completely by setting this prop to true, but newer iPhone users with the status bar surrounding their camera would probably still have a white bar by their camera (at least that’s how it tests in the simulator, I don’t have one of those new phones to test that on actual hardware).

5 Likes

Great - I’m on the testflight.

First feedback, the flow on create account would probably need to be adjusted before actual submission.

From the testflight app:

  • press log in
  • press join
  • am taken to this page

There’s a join on the top, some boxes with listener, artist, and label, and join now way at the bottom.

It’s not really clear to me how to join.

  • Tapping the largest join button and the one at the very top (the black one) refreshes the screen, not sure what these are for

SUGGESTION:
Have login on the streaming app go to the listener login.

Offer an other option at the bottom like - “Are you an artist or label? Click here”

2 Likes

how does this work? I got access since you sent me the email.

is there a public link people can click to get the invite?

1 Like

Here is the public link: TestFlight - Apple

I realized I had to download the TestFlight app to my phone to enable the public link. The latest build 1.0.2 is still in ‘Waiting for Beta App Review’ though. I’m not sure why 1.0.1 isn’t there but my guess/hope is that this should be finally open to the public once the review is complete, now that the public link has been toggled on.

Do we have a test version for Android or is it just apple only right now?

@peterklingelhofer is working on the android @LLK

1 Like