Xamarin Android MvvmCross Onboarding - xamarin

so I'm developing an app that uses MvxSplashScreenActivity for its splash screen and it works well. I just got a feature request for onboarding screens to be shown to first time users. Here comes the problem, I can't seem to find a place to hook in code like if new user then do onboarding else show the splash screen. Is this possible or am I not thinking about it correctly. I will be using this AppIntro for the onboarding slides. Any assistance will be appreciated

I like to funnel users through another activity that has the same layout as the splash screen, which allows you to do any other initialisation and decide where the user should go. This means that you show every user the splash screen and every user the 'loading' screen, but where they go next depends on whether they are a new user or not. The user won't be able to tell the difference between the splash screen and your loading screen unless you want them too so it appears seamless. So it will look like:
Splash -> Main Loading Screen -> if new user Onboarding else the first screen of your app
If you are making any calls to an API or doing anything else that could take a while here it is wise to show an activity indicator also, so the user knows something is happening and the app isn't frozen.

I implemented Jason's suggestion. Basically, always show the splash screen and based on whether it's a new user or not show the onboarding screen or home screen.

Related

How do I make and code a splash screen for an app in NativeScript (Angular)?

I'm trying to put an Splash Screen on the app that Im developing on NativeScript with angular, the problem is that I don't know how to create it and then implement it on the app.
What I want is just a screen that shows when I hopen the app and then just goes into a login screen (already have the login screen).
Checkout nativescript-splashscreen if you like to customise splash screen with cool animations & components.
Edit: If you are looking for a loading indicator to let user know you are processing something or waiting for a network call, you could use nativescript-loading-indicator Or even host your own dialog if you need something more customized.
You can use loader kind of mechanism if you want to just put some content for sometime you can add content on loader screen and it will be shows for defined time
you can use ngx-ui-loader npm package for this
else you can create new component and make it as dailog window that will open on login page loading and than it will be closed by click or timeout. you can use different NPM library for this.
This both approach might solve your splash screen problem.

How to validate photo capture screen is open in Xamarin UITest?

I want to write unit test in Xamarin UITest to validate whether photo capture screen is open or not, for both Android and iOS. If anyone know this, can you please give me advice on that?
Thank you
You should write your test queries to navigate to the photo capture screen and call
app.Repl ();
Repl will pause the test and open up terminal window. There you can type any test queries you like.
If you type in tree in the terminal window, you will see view hierarchy of your current screen. And you should look for some elements that are unique to that screen.
For example I use UIImagePickerController to let users shoot an image in my iOS app. It has a button with the label Take Picture, so you could call standard
app.WaitForElement(c=>c.Marked("Take Picture"));
to wait for that button to appear. If it appears then photo capture screen is open. You can, of course, wait for any other element on that screen.
You can even do
app.Tap(c=>c.Marked("Take Picture"));
to tap that button and actually take a picture.

Google Play Games notifications not visible

I've looked through all questions on SO about Google Play Games, but looks like I'm the only one having problems now.
Using new GPG with Games.Achievements.unlock(), the achievement notification isn't showing up. I can see that achievement is unlocked when checking in unlocked achievements list, but that badge - it just doesn't show up!
The app isn't published, but has all the achievements correctly set up in Play Store. other GPG features seem to work fine, but they usually do not show notification (like Leaderboards)
And another issue that might be actually related to this. The initial login popup, the one that allows to pick an account when you have several of them on the device - sometimes it ends up being behind the app screen. And when you quit the app it keeps sitting on the device screen until you close it by picking Cancel. Not sure, this might be a debug issue due to app being force-closed on every next installation, but still.
Any ideas? How Achievement badge can end up being invisible all the time?
You may need to try changing the popup view, depending on which implementation you have used, this is the basegameutils method:
Games.setViewForPopups(getApiClient(), getWindow().getDecorView().findViewById(android.R.id.content));
Depending on your code, you may need to use a different view.
Try this in the activity view in which you want the notifications to be seen : Games.setViewForPopups(getApiClient(), getWindow().getDecorView().findViewById(android.R.id.content));
The issue was that I was calling Games.Achievements.unlock(mGoogleApiClient, context.getResources().getString(R.string.achievement_pro)); from a helper class. The context that I passed was of MainActivity.class, however I actually intended to show the achievements being unlocked in my GameScreen.class and not the MainActivity.class since it would be in the background. GameScreen.class, in my case, is an activity that I invoke through an Intent from MainActivity.class. And I suppose, it is because of this that the context is not set properly for Games.Achievements and it could not show the pop ups in my current activity screen.
When I added that line of code in GameScreen.class, I assume that now Games class knew where it has to popup the alerts. My explanation might sound a bit fussy here but let me know if you have any issue.

How Can I navigate back to home screen in Windows Phone 7.1

I have a created an app which has a Homescreen/landing page,Now whenever user navigates till last page and clicks the device back button he is redirected back to Homescreen. Now the issue is I have written code to clear all the backstack whenever user lands on the Homescreen in Homescreen OnNavigatedTo block. So whenever user clicks device back button of last page he is navigated to homescreen by creating a new instance of HomeScreen page.
On Homescreen the backstack is cleared, so the user can exit the app from homescreen when he clicks the device back button.
But according to Microsoft marketplace policy, backbutton must go back or go to previous page in backstack and not navigate to new page.
So the question here is should I clear all my backstack and go to homescreen or what I am doing is right?
As far as I know, they are not so strict as that. They just want you to handle the back button.
I had blocked the back button in some pages of my application and the certification failed. I changed the behavior of the application, to either close the application when navigating back or jump a couple of pages back, and it passed certification.
Just make sure the back button does something...
The reason they dis-advise you from doing this is because you are using the wrong organisation.
Going deeper usually means you get too more specific data, in a way you can go back up one page.
Going to the side usually means that you get more data, eg. Panorama / Pivot
I can't see a case where going deeper would disallow the user from going back to pages in between, I would not use your application if I had to start it every time again or when it would go deeper when it is actually supposed to let me scroll through the content.
Trying to surround their certification is definitely not the way you should be going, but rather embrace it.
See this page for layout tips and tricks for the Panorama and Pivot controls.
As per the comments, you might find it a lot easier to ditch having to learn all platforms.
A jQuery Mobile application can do that for you.
jQuery mobile framework takes the "write less, do more" mantra to the next level: Instead of writing unique apps for each mobile device or OS, the jQuery mobile framework allows you to design a single highly-branded web site or application that will work on all popular smartphone, tablet, and desktop platforms.

How to update a screen when an event occurs at another screen?

I am developing a chat application in blackberry.
I have made a main screen which acts like the home screen of the application. Whenever application is started this screen appears first.
There are like 5 screens (1 Main screen and 4 other screens).
My problem is..I want to update this 1 main screen when something happens on other 4 screens. Like For example, if I'm using the voice recording screen of my application. I have to add an icon to my main screen of the application indicating I have recorded a voice message after I have finished up.
I am not able to get the logic for doing this. Since I want to update a screen's UI which is already on stack, from a screen which is at the top of the stack.
And also, I want to keep those things at the main screen of the application whenever I start my application(just like history of the activities).
please help.
Read this article:
http://berrytutorials.blogspot.com/2009/12/blackberry-threads-dynamically-update.html
It shows how to update UI from different thread using Observer Design pattern. But you can use same technique to update screen from different screens.
Take a look at MVC design pattern.
Implement screens as Views which get notified when data model changed.

Resources