For Cordova iOS and Cordova Android it is possible to create plugins that create native UI on top of your app - you just include the libraries in your plugin and execute their API. Example for Android InAppBrowser.
For Cordova Windows, the native code is HTML and Javascript, hence the InAppBrowser plugin also adds a standard HTML tag for a Webview (or even plain Iframe) to get the same effect.
But you can also create plugins for Cordova Windows that use C# or C++ native code via a Windows Runtime Component. A public example is the globalization plugin that uses a .winmd
file to offer APIs to the Javascript code (source code for this). This works great and is pretty awesome.
Unfortunately all the plugins that I could find use this C#/C++ native plugin mechanism only to receive some method call, do something with the parameters and return some data. None of those open any windows or create any other GUI (that might for example be offered by an external C# SDK).
How can one create a plugin for Cordova Windows that creates User Interface with native (C#, C++) code? Is this possible at all?
Got a response in a Apache Cordova mailing list that I am reproducing here:
Unfortunately, No. C#/C++ Portable Class Library ( PCL ) code cannot render on top of the web component. The libraries that you can use are limited in PCLs and for projects targeting Windows Store it is not possible to render UI.
If the entire cordova-windows platform were re-architected to be a C# or C++ based application, with a native webview container in which to render, then everything is possible. This is a long risky road though ... everything from the cordova.js and the bridge would have to change, and every plugin would need to be rewritten.