Implementing Native API features via Uno

Hi there, For a while now I’ve been seeing many responses to questions saying that certain features which aren’t available in FuseJS can be accessed directly in Uno via the native APIs. Unfortunately I have no idea how I might go about accessing this sort of thing and I can’t seem to find any documentation on it. I know you probably have to include the appropriate references to Android and iOS in the unoproj file but that’s as far as I’ve gotten. For example, how might I make use of Google’s Calendar API through Uno (details linked here: https://developers.google.com/google-apps/calendar/quickstart/android) Any advice on the matter would be greatly appreciated!

Hi!

We apologize for the current lack of documentation on this topic.

Our main focus so far in the beta has been strengthening the UX markup and FuseJS docs and features, instead of focusing on pulling users into dealing with lower level Uno code (as this opens a whole other can of worms in terms of things to support and document).

We are however now producing documentation on how to work with native APIs and third party APIs (like google calendar) as we speak, and it will be online soon.

Meanwhile, here is an example from a user how to use the iOS sound APIs in Uno code and expose to JS:

https://gist.github.com/kfiil/d5bd1d4a046d3af9e51a

Sounds good, looking forward to it!

Thanks for the example, just wondering if there’s anywhere online (like other websites) I might look to find a list of commands like global::iOS.AudioToolbox.Functions.AudioServicesPlaySystemSound(1310); or things to import like using iOS.AudioToolbox;, like where might that user have looked to find those particular commands?

If the users require to deal with lower level Uno code, then the whole benefit of using fuse will go away. Then it will be better to devlop in Objective C, Java etc. Fuse will shine only if the whole native API’s and thirdparty API’s are abstracted in FuseJS, and user can only use FuseJS to call it.

Shimjudavid: I agree :slight_smile: We are definitely working towards that goal, but it will take some time.

That’s a good point shimjudavid, but that’s obvs going to take quite a while since it’s a mammoth task. In the meantime though it would be good for users who wished to perform particular functions in their apps sooner rather than later to have the option of using Uno, which we do but I personally haven’t figured out how yet. Plus Uno is super useful for including features that may have been overlooked for FuseJS abstractions in favour of more pressing features (I’m talking less important stuff like proper file operations - getting the current dir/user data dir, CDing, renaming, etc). I think it’s ideal to have the majority of features available in FuseJS/UX and having the option of using Uno to then augment that to include any overlooked/more obscure features, which seems to be the way things are and which is why Uno documentation would be a super useful thing to have. If anything, I think that Uno makes Fuse worth using over things like Java/Objective C since it gives you the option of including features you think are missing while also getting to do the majority of things in FuseJS.