Dipping my toe in Xamarin; Hot Tip for Navigation.

I’ve been tinkering in Xamarin, to allow my development to more easily target multiple mobile platforms.

I’ve made a start on two apps, and I just hit a little wall that was easily fixed but I thought was worth sharing:

The Xamarin tutorials show navigation as being done with a “Push” like this:

await Navigation.PushAsync (new Page2Xaml ());

Which is great, except it doesn’t work out of the box.

The issue is for this to function, you need your app to be utilizing a NavigationPage element.  A Navigation page is a page which holds other pages and navigation… I suppose (very) roughly like a Frame in UWP.

But the default templates don’t include one.  So the easy way to change it is to go to your App.xaml.cs and change the constructor from opening a regular page like this:

MainPage = new MyAppName.Views.MainView();

to this creating a NavigationPage and then “Push”-ing to the start view**:

var p = new NavigationPage();
MainPage = p;

p.PushAsync(new MyAppName.Views.MainView());

Now your whole application exists within the NavigationPage element and navigation should work as intended.

Valley Software.


** Yes the var is not required, however this is a logical layout to show the example.

Voyer; Windows Store Issues


I have a less happy post today.  Sadly Voyer has (hopefully temporarily) run afoul of the Windows App Store approval process.

It happened following my latest update; which none of you will have seen yet due to this issue, last week.  I presume it was caused by that and not a complaint but am not sure either way.

The disagreement is over 4chans content, which is admittedly not for everyone to say the least.  It is a particular community with its own lexicon, values (so to speak) and style.

And to be clear; Valley Software take no responsibility or accountability for that content or how wonderful or offensive it may be.  It’s content and it isn’t ours.

My purpose with Voyer is merely to assist with making the freedom the internet provides accessible.  There will be good and bad, as indeed there is in all areas of society.

We have had issues in the past with the App Store certification process regarding this, but we have always found a middle ground.  The default “Safe-Ish” mode in Voyer along with it’s adult rating in store as just two examples.  Also these past incidents have only ever applied to preventing updates from going through approval while leaving the previous version app available.

In this case though, Voyer has been completely removed from store.  This prevents download, upgrade, feedback submission and donations along with visibility of the store listing itself.

I am attempting to remedy this with the certification team but I have not received any response yet to my multiple enquiries.

I have faith that we will come to an agreement again and return Voyer to store but I cannot say when that could be.

I apologise for any inconvenience and I will continue working on this restoration; Voyer has built a large and passionate following.

Valley Software.

Simple PoS; Why Azure?


I got what I thought was an excellent question on Reddit the other day and thought I’d post my reply here too.  Rather than tidy up my answer (which seems unfair) any this is exactly as it is on Reddit.

Why can’t it use a local database that is synchronized to my own cloud?

And my answer:
Great question! There are a couple of points to this;

Firstly; Simple PoS does indeed use a local cache database on the device; this allows for use in offline situations and also makes the whole application faster and more responsive than a cloud only based system. Being local only would on the flip side not allow multiple devices without more difficult setup. which brings us to:

Secondly; Simplicity. Micro and small businesses don’t necessarily have the kind of IT resources to setup their own databases, be they local or Cloud based. Everything about Simple PoS is aimed at simplicity from the initial single click install and setup to the Store IAP purchase which removes any external or separate sign up process (it’s as easy as buying “coins” in a game).

Finally; performance. The other main competing option from using Azure style cloud services on Mobile devices (tablets, phones or laptops) is something like a SQLite database which sync’s with another database in OneDrive or something like that.
While this method works, it is not performant for high throughput applications on multiple concurrent devices. The way around this would be to have infrequent syncs (say; daily) but then you have not got access to live data where ever you are and also it leaves many opportunities for data loss if anything happens between sync’s, which I find simply unacceptable in a Point of Sale application.

As a final note; Simple PoS did have a first iteration where it was a single device system using a local DB only. When we started cleaning the idea out it seemed limiting and also didn’t offer the kind of compelling business case that I wanted. Im not saying that it’ll be for everyone, nothing is. Some will want all local, some will want multi users, some will be against cloud, some for. Choice is Good!

From what we saw in the market we wanted available anywhere, multiple user access which was so simple that anyone can do it. So that’s the direction we took Simple PoS.

Edit; missed one! Azure and similar cloud services allow true cross platform. If we take Simple PoS to Android and iOS, Azure can do this with zero fuss. OneDrive and other personal file storage options this is not so easy. Plus it requires everyone who might use the system to have access to your OneDrive file storage (eek!)