Cross-platform app - development thread

The team is just me and I’m currently stuck on BLE, unless there’s an external input the cross-platform app is halted.

I don’t know which Android phones you work with, but let’s not exaggerate everything. Android phones are no longer like those of six years ago, then Android covers 70%, all use Android. Android phones of 200€ and above have features of an iPhone including screen quality. for example I use a Xiaomi Mi 9T Pro 380 € which surpasses the iPhone in many aspects, and one of these is the screen, bluetooth, processor performance, graphics for games, battery, functionality … iPhone with its 1000 € can only dream of the Android 10 and its features. However, it is better to develop the application without much regret and regrets because of the cross platform. Slowly you can get to that too. For now, the Meshtastic application has much to improve in many aspects, it is better to focus on what you have now. If I can help, I always do it, without thinking much about the platforms but thinking about the project itself which is very beautiful and futuristic.

I am working on a simple native iOS client (with very limited experience on iOS) and did most of the BLE parts: pairing, send and receive message via device, OTA firmware update (not solid yet).

Since I haven’t tried Android version (don’t have an Android phone), I don’t know how close to it I am in terms of just BLE stuff. I can share my 2c if there is a fit in your progress, just let me know.

2 Likes

Out of curiosity - would a temporary workaround be a direct cable connection (lightning -> micro usb) be feasible?

Ionic only works in JavaScript so it would be troublesome to add Swift/Obj-C code. You are very welcome to share your workflow process for BLE connection and data sharing though!

The thing here isn’t to make BLE work (it already does), it’s more understanding what data to send, to which service/characteristic, in what format, how frequently, etc.

Just doing the thought experiment …

If we had a cross platform iOS and Android mobile application, what what framework would you use, and why?

Hi MC,

I merged your thread here. To update: @anelito did an experiment with Ionic but the BLE libs for ionic are pretty buggy. So someone would need to fix either of those two libs to keep going with that experiment. If you are interested in tackling that either I or @Anelito can give you a pointer.

No one has yet experimented with Flutter. I think it might be a great platform but one of the first tests should be to check their BLE stack to make sure it works talking to the device. I’m happy to give you pointers on this. I also might someday try making a Flutter port - but not for at least 3ish months - many other higher priority things in my queue.

1 Like

I didn’t see this thread. I’ll read through it and check out Flutter.

1 Like

here’s the flutter thread: Interested in making a flutter-based third party app - documentation?

Right on.

May I join the meshtastic slack? I found a link but it had expired.

I have a few thoughts that I would like to contribute:

Based on poking around the current app and looking at the mockups in the initial post, I would like to suggest moving settings to a 3-dot menu in the top right. That way Chat and Map can be the 2 main “sections” of the app (you could take inspiration from Riot now Element with the bottom tabs).

Regarding the Map tab, I would suggest having the Map tab use sensible defaults for what’s visible (perhaps just the latest position of all known online nodes) with a small “layers” circle similar to Google Maps that lets you select to show tracks / plot messages, etc.

For the Chats tab and sending a location snapshot / pin, I like how google hangouts does it, showing mini map and the coordinates. Viewing the location of a single message could be accessed by long pressing a message (this seems to be the convention on how to access metadata about messages in a mobile UI), and I think it would be great to be able to hit the 3 dot menu in a conversation and have a “show map” button that would plot just the participants of that conversation on a map.

Edit: One last suggestion - I would like a toggle in the settings to not broadcast location. Sending it in a chat would be great, I just don’t want my live location to be on all the time unless I’m at an event or something and want to turn that on.

I’m really excited to be using this, and it’s great to see many of my other thoughts echoed here!

Edit: So I know nothing about android development, but I really like nice UIs. So I made this mock up of how I envision what Meshtastic could look like:

The Chats tab is inspired by signal’s simplicity, and puts search and settings in the app title bar, and as the channel name / settings would be a property of a specific channel, that leaves just Chats / Contacts / Map. The 3 distinct types of chats are public unencrypted, 1 to 1 encrypted, and group chat encrypted. I’m not sure if there’s a reason you would want an encrypted public channel. Compose and scan floating buttons could be used to start a chat (For security purposes you might not want the compose to pop open a list of local contacts in case people use the same name, perhaps scanning saves and trusts contacts, and only trusted contacts are shown in compose, or you can find them in the local contacts tab and press through an impersonation warning when adding them).

I used a “contacts” icon for the second tab because I was thinking about framing the “local contacts” discovery functionality as a way to find contacts. Say you meet someone and want to open a one to one chat, the contacts tab could show a list of nearby nodes if you don’t want or are unable to scan their qr. Pressing on a local contact would show their information (pretty much name, signal strength, mini map of last known location if available, and contact qr code). You could also list contacts you’ve “saved” / trusted.

I’m still thinking about how the map / contacts could be more usefully integrated into social workflows instead of being just a chat app with a separate and inconvenient map page. But I hope these thoughts are helpful.

1 Like

I’m interested in helping with the mobile app as well. Honestly I think Flutter is the best bet given limited developers and a cross-platform goal out of the box. Admittedly I’m biased as I’ve been playing with Flutter off and on for awhile now and have it all running on my dev environment…

One thing to keep in mind. Flutter is very new, and BLE is… somewhat dangerous. These both lead to libraries that change frequently, either because a maintainer abandons something, or Google/Apple find a gaping security hole and fundamentally change things. Just my .02.

I’ve created apps using Google Maps, tested BT, QR-Codes are simple. Even RFID/NFC are fairly well supported if we needed that for some reason.

Am I right to assume we can’t use Google Maps due to some fee?

Anyways, if I can be of use and someone wants to discuss, we might be able to blast out a prototype at least in short order and see how it goes from there?

1 Like

happily! I didn’t realize those links expire. Regened just now: https://join.slack.com/t/meshtasticdev/shared_invite/zt-hj560r74-9f7OCjtvPK1PMNQkDd~p3A

I made more mockups mostly because it was satisfying to do.

Edit: Further thoughts on where certain things could go - afaict the user’s identity seems tied to the device, which makes it hard to follow my intuition of wanting the hamburger menu in the top left to be a user icon which opens a left drawer containing user info and qr code etc since that would change if someone switched radios in settings. Maybe a good compromise for now is keeping identity completely in the settings by adding a QR code below the name setting in the settings screen. It would be nice if user identity / keys were completely on the phone but that’s not my decision to make and I just care if the app is nice and intuitive to use.

4 Likes

I made mockups too just look in the iOS app thread, maybe you can integrate them in yours too

Do you have a link to that thread? I must have missed that. Unless you mean the ones at the top of this thread, which I kind of took ideas from to start.

Edit: As far as my mockups go, it’s pretty much the ones you posted at the top but with real components. I didn’t really explain why I made them because I got a bit carried away with my imagination :stuck_out_tongue: I just like seeing something concrete and thinking about how the functionality fits into UI patterns.

The “iOS thread” was merged into this thread 22h ago. So I think @Anelito is talking about those at the top of this thread. :slight_smile:

Some one have some news for ios app?

Ionic BLE libraries have been recently updated, we could try again with the Ionic app

1 Like