Xamarin - Updating The App Without App Store - xamarin

Is there a technical limitation why Xamarin does not support updating the application without publishing to the app store? Javascript cross-platform mobile development frameworks like React Native or Cordova can do this.

You are comparing Apples to Oranges in a sense. When it comes down to Native Development, Xamarin is a framework that allows you to do Native Development via Wrappers: https://developer.xamarin.com/guides/cross-platform/getting_started/introduction_to_mobile_development/#How_Does_Xamarin_Work
Because of this, you would do the same workflow as if you were pushing an update to your Native Android/iOS application(Programmed in Java/Obj-C respectfully).
Whereas on the other side with frameworks like React/Cordova, they have mechanisms to inject content via pulling from a server-side service. This is explained pretty clearly in a third party cordova project that does this very thing:
https://github.com/markmarijnissen/cordova-app-loader
However if you made a local Cordova application that had no connection to a server-side service and you needed to update it, you would most likely have to follow the same procedure of uploading the new .ipa / .apk with the new assets/code/etc as it would be a packaged stand-alone app.

That's because all the code is in js files that can be downloaded an replaced out side of the ARM binary. Xamarin's code is the binary. Also, if your code is in the App Store, you should be updating through the store. This is less of a limitation of Xamarin (since you can't do this with native obj-c apps either) and more of a "pro" for the js apps.
As a side note, if you go with Enterprise deployment instead of App Store, you can update whenever you want (because you completely control the deployment mechanism).

Related

Migrate existing UWP app to work as Xamarin APP

I have existing UWP apps that I would now like to migrate to Xamarin, so that I can run them on Android devices. What are the most viable and/or practical approaches for doing this?
In some cases I will also want to continue to run these apps on Microsoft devices. I'd prefer not to have two code-bases to maintain, but that might be an option for some apps. A couple of the apps are available on the MS Apps Store.
The UWP apps are relatively cleanly architected, with separate layers and physical projects separating the UI from data access, logic, etc.
Worse-case I can make a new (Xamarin) project and UI from scratch, but what about the other projects / layers? What are my options for those? E.g. copy and paste - retain the old code/solutions (for future UWP-based support if necessary), create copies of the old (non-UI) code/projects in the new Xamarin solution (with a new Xamarin UI).
This post How do I add Xamarin Forms to an existing UWP XAML app? talks about "multiple types of Xamarin code sharing strategies and UI strategies" but doesn't provide any details or references.
This post Adding UWP option to Xamarin cross-platform application seems to be talking about doing it the other way around: taking a Xamarin app and delivering it as UWP.
What are the most viable and/or practical approaches for doing this?
Currently, there is no tool that could directly convert a UWP app into a Xarmain App. Based on your description, you will need to create a new Xamarin app to make your app available in both Android and Windows, or even more on IOS.
You could build a Xamarin.Forms app for your scenario. Xamarin.Forms allows developers to build Xamarin.iOS, Xamarin.Android, and Windows applications from a single shared codebase. As #Jason mentioned, if your app is well architected with data, domain, and service layers, those can probably be reused in Xamarin.Forms app. And the Xamarin.Forms app will convert the code into performant native controls on each platform. So you don't need to write extra code for each platform for the same function.

Integrate Azure Mobile Services in Xamarin.Mac

By the time I'm writing this, I'm working on a Xamarin cross-platform app (iOS,Android and Windows Phone), using Azure Mobile Services. There is interest of also developing Mac OS X version of this app.
Is there a way to use the Azure for the OS X app, because I can't find anything on the web? Please, be descriptive as possible :)
There is not currently Xamarin.Mac support in Mobile Services. If you look here (https://github.com/Azure/azure-mobile-apps-net-client/tree/master/sdk) you will see there is a Xam.iOS, Android, and Forms project.
You can add a feature request for Xam.Mac, or make an open PR that adds in a Xam.Mac project. I'd assume the main PCL component will work and its just a matter of adding the Mac specific wrappers where needed. I'm not sure how much dev work that would actually entail though to say if its feasible or not.

Hybrid app with native iOS features

I'm trying to build a hybrid app with some native features like geotagging, notifications and offline storage. So far in my research I got the feeling that I will need xCode to access the native features on iOS.
Is there a way that I can skip that step? I have found that Cordova API, supports native features with JavaScript, but also I have found some contradicting statements witch suggest that I also need to also use xCode.
Thank you
If you want to build an iOS-App you'll need Xcode's command line tools to build, run and deploy your App. So you can't skip this step.
The Steroids tooling lets you develop your app without the need for Xcode (or Android Studio). You use a companion app from App Store to develop locally, then an online Build Service to create a stand-alone package. The wrapper provides access to many native APIs, including all Cordova core plugins.
(Disclaimer: I work for AppGyver.)

Is the compilation done on Titanium's server?

I have just started using Titanium and was wondering if the apps I develop would be sent to Titanium server for compiling? Can anybody clarify? Thanks in advance.
You don't need to compile the apps on any of the Titanium servers. You can compile the apps from within Titanium Studio. When testing the app on the device, Titanium Studio automatically generates the ipa file and apk file for respective platforms
Edit:
Using Titanium, developers can create an application writing Javascript and calling Titanium's APIs. The Javascript is then interpreted at runtime. The application's UI then becomes completely native. There is no web UI in your app since the native Titanium APIs take over control of all UI needs. Titanium runs application's JavaScript using one of two JavaScript interpreters' JavaScriptCore on iOS (the interpreter used by Webkit) and Mozilla Rhino on Android.
The Javascript calls to the Titanium API are mapped to native code in the Titanium framework and generate native components. Events in those components are sent back to the code in Javascript where we can handle them

asp.net mvc, jquery mobile, phonegap architecture best practices

I'm developing a mobile app using ASP.Net MVC to generate HTML 5 pages. The HTML 5 pages will use jQueryMobile's loadPage to make calls to ASP.Net MVC to load pages into the DOM. Then it will use jQueryMobiles's changePage to make the page active in the DOM based on the user's interactions with the app. Calls to the MVC app will invoke different webservices to retrieve the source data to construct the HTML.
We plan on using PhoneGap with the app so we can submit the finished app to Apple and Android stores. My app does not need to interact with a device's native functionality (contacts, geolocation, etc.) Since we do not need to interact with the actual device's OS (except to make jQuery ajax calls to MVC app), then is PhoneGap really needed? Is the approach I've described above an appropriate way to make a web app viable on mobile devices?
Since my application is asp.net mvc and will be hosted on my servers, what gets sent to the Android and Apple stores? Is this where PhoneGap comes into play? Does PhoneGap create an executable of some sort that is submitted to Android and Apple stores? Then this executable is downloaded onto client devices? I'm assuming the executable will then make calls out to the MVC site via URL to retrieve the application HTML?
Am I looking at this correctly? Thanks for your help.
Phonegap (or some substitute) is not quite required but very helpful to create an app package from your HTML/JS/CSS source. Phonegap doesn't create the executable (your IDE does that) but is a framework of Java to JavaScript functionality (making it possible to run Java code from your JavaScript).
Phonegap basically wraps your HTML/JS/CSS site in a webview so that your code can be interpreted by the device's browser (sometimes in a more sand-boxed manner than running the browser normally, for instance pre-iOS-5 webview instances do not get the Nitro JS engine so they run slower than websites in the Mobile Safari browser).
You can create your own webview if your site is so simple it doesn't use any of the other Phonegap functionality but since it's already baked into Phonegap and the device won't have to download Phonegap. You might as well use Phonegap.
Phonegap Build (https://build.phonegap.com/) is a program you can purchase to have your app packages built and submitted to Apple/Google/RIM/Windows app stores. Generally you just use your own IDE to do this however. For instance to create an iOS app you have to use a new Apple computer (you have to have the latest OS version to build the latest versions of iOS packages). iOS app packages are created in XCode, and Eclipse IDE is a very common environment to create your Android app packages: http://developer.android.com/sdk/eclipse-adt.html
I noticed you said you are using $.mobile.loadPage() to load pages into the DOM and $.mobile.changePage() to navigate the user to those pages. If you just use $.mobile.changePage() then it will automatically grab the page with loadPage(). If you are using loadPage() to pre-load content then check-out jQuery Mobile's prefetching abilities: http://jquerymobile.com/demos/1.1.0-rc.1/docs/pages/page-cache.html
UPDATE for 2014
I have recently built some applications using Cordova 3.5 and the build process was very much so simplified. The package building process is now managed via your system's console and everything from installing plugins to rebuilding an application package is much easier.

Resources