Showing posts with label Mobile. Show all posts
Showing posts with label Mobile. Show all posts

AdSenseAccountStats App Reborn As AdsAccountStats - Finally

Is there a Windows app that can quickly show you the key metrics for your Google AdSense account?



Ah yes, wait a minute, there was this app called AdSenseAccountStats...  what happened to it again?Just kidding, check this post from a while back for an explanation why I had to pull it from the Microsoft Store.

AdSenseAccountStats Is Back - With A New Name


As mentioned in the previous post, I ended up simply renaming the app.  There is a bit of a process to step through, but luckily one can always find decent Microsoft knowledge articles on the interweb. If you are interested, check this blog post from the Windows App Consult Team.

In simple terms, follow these high level steps:

  1. Reserve new app name in the developer dashboard
  2. Update your manifest and app package, logos etc
  3. Create new store packages
  4. Create new submission and upload new packages
  5. Update your store listing details in the new submission
  6. Submit to store
  7. When approved and published, delete old app name
Refer to the above mentioned blog post for exact steps.  They all worked as described, although the 3rd step - creating new store packages - gave me some grief.   I experienced errors when building the release packages, complaining about the Display Name in the appxmanifest file.

The solution in the end was to re-create the package.xml file and re-associate the app with the Store, picking the new name (it eventually was visible and selectable in Visual Studio).  It did take a few attempts to get this right, but eventually came good.

Goodbye AdSenseAccountStats - Hello AdsAccountStats


Following this process should ensure that you don't lose the linkage of your app/packages and your app install base.  It is important to increment your version so that older packages will be deleted and apps updated to reflect the name name.

What next?  Go and get the app from the Microsoft Store of course 😀 if you don't have it already.  For now, there is no new or additional functionality, but when time permits there are a couple of improvements I would like to make and features to add.

Until then, enjoy the app once again as it stands.

MB.

Instagram Microphone Access Fix For Windows Phone Lumia 950


Hey fellow die-hard Windows Phone aficionados... If you are reading this you are most likely still using a Microsoft Windows Phone, such as the Lumia 950 or similar running Windows 10 and the Instagram app, correct? Me too 😁

Now, I thought I'd share the solution to a small but annoying issue with the latest version of the Instagram app on Windows 10 mobile. Whenever you start the app, Instagram asks for access to the camera and microphone of your phone. Sure, hey to get the most out of Insta these things are required so why not.

The Issue - Prompt for Microphone Access


The problem is that the screen pops with a couple of text links, which when tapped should change the relevant settings for camera and microphone access permissions. While the camera one works fine, the one for the microphone does not. Calamity. And here is the annoying part, the screen pops every time on start up, driving you crazy just a little bit...


The Solution - Grant Permissions Manually


Do not despair, the solution is very simple.  You can just add the required app permissions manually the old fashioned way.  Go into Settings - tap Microphone - find Instagram and flick the toggle switch to On



Voila.  Try and start the Instagram app and you will no longer see the annoying screen above prompting you for Microphone access.  Enjoy, and feel free to comment if this little gem has helped you.

#SaveWindowsPhone #Microsoft 😜

How to Connect your iPad to wired Ethernet


Wired internet connection for your iPad? Anyone?


Have you ever wondered whether it is possible to connect your iPad to a wired network using an Ethernet cable? Sure... but why would you want to do that in the first place you may ask.

Well, maybe you are just curious, and it's a personal challenge to see if it actually can be done.  Maybe your WiFi coverage in your home is not great in some areas, but you have access to wired Ethernet. Or you might even be a little concerned that young kids using iPads for lengthy periods - often in their laps - essentially have a wireless transmitter running near vulnerable body parts.

Either way we've had a go at it and the process was surprisingly simple and easy. Not cheap, but hey it's all good.

What gadgets do you need to make this work?


Firstly, you need your iPad. Then you need the Apple Camera Adapter, followed by an Apple Ethernet adapter. Be warned, neither of these are cheap. They will set you back a bit of money. Now, it may be possible to get cheaper non-Apple branded components and still make this work, but we decided to stick with Apple accessories to ensure success.

Here is what these two gadgets look like:


Cool, but how do we connect it all up?


Pretty simple, really. Grab your iPad, plug in the Camera Adapter into the lightning port of the iPad. Then, grab the Ethernet Adapter and plug it into the USB port of the camera adaptor. This whole setup needs to be powered, so connect your Apple charger cable to the lightning port on the Camera Adapter. Lastly, plug your Ethernet cable into the Ethernet adapter. You are good to go. Try it, put your iPad into flight mode, disabling all WiFi and Bluetooth connectivity. Yet you can still get to the Internet, App Store etc. Works like a charm.

Hope you enjoyed the post and maybe even found it useful.

Cheers

MB


AdSense Account Stats App Temporarily Unavailable in Microsoft Store


What happened to the AdSense Account Stats App in the Microsoft Store?


A couple of weeks ago I was notified by Microsoft that a third party agent working on behalf of Google has lodged a claim that the title of my AdSense Account Stats App in the Microsoft Store is infringing on a Google owned trademark.

The actual app title is AdSenseAccountStats, and I guess that has the word AdSense in it.  AdSense of course is indeed a Google owned trademark registered in the US, and quite possibly in many other countries.  Doing the right thing, I immediately removed the app from the store listing and download.

Now, I am neither a lawyer nor an expert with regard to trademarks, but one of the main aspects when it comes to trademark infringements is about potential consumer confusion.  Meaning that consumers might reasonably but incorrectly assume that a product or service is provided by the trademark owner when in reality that is not the case. Another aspect is about commerciality of the product or services infringing on a trademark.

You be the judge - is AdSenseAccountStats confusing?


Certainly a very interesting situation.  My app is of course available for free so there is no commercial benefit.  Additionally, Google do not have their own app in the Microsoft Store that one could use to access one's AdSense account.  On Android and Apple iOS such an official Google AdSense app exists, but not for Windows mobiles. Which incidentally was the key reason I put together the app in the first place.  I wanted an easy way to access my AdSense account from my Windows mobile.

As far as trademark infringement defenses go, there may be three interesting aspects here:
  • No real confusion of customers - title is simply describing what the app's purpose is
  • No commercial gain - the app is available free of charge and currently not ad supported
  • Abandonment of the Windows mobile platform - Google not providing its own app

Either way - Stand by for re-launch


Never mind, I have neither the time nor inclination to have an argument with the third party agent, so I guess I'll just rename the app and re-publish it with a more generic name.  In some ways, it is almost flattering that there is this much interest in an app I created.  It makes for a good story at the pub 😀

It is going to take a little while to relaunch the app however, so don't hold your breath.  There is a specific process to step through before the app can be re-enabled in the store.  Legal forms to submit, authorisation to be obtained, repackaging of the app with a new title (how does AdsAccountStats sound - generic enough?), submission update to the store and ultimately making the app available for download again.

Now if only I had a little spare time to do all the above...   I'll post again once the app is back and available.

'til then, have a great day.

MB

Heads Or Tails UWP App Update 1.2.2 Released



Just a quick post tonight to spruik 😀 the latest release of this handy little app.  In this release I have added a feature to track lifetime stats for heads and tails, as well as the longest streaks for both options.

As silly as it sounds, it is actually quite intriguing to keep tossing that virtual coin and see how over time the numbers for heads and tails even out as they should.  While at other times you can get really long streaks of just heads or just tails, skewing the total number one way or the other.

I can't post with just useless information though, so I will share one tidbit I recently observed that may be of interest to anyone looking to monetize their apps using the Microsoft Advertising Framework.

Low ad fill rates?  There may be a reason...

When I created the new Lifetime Stats page in the app and added a new ad unit, I accidentally selected a COPPA (Children's Online Privacy Protection Act) compliance rating that indicated the app was directed at children under 13 years of age.  This of course is not the case - it is for general consumption for young and old.

However, the learning is that the COPPA compliance rating for the one ad actually applies to all ads for the one app.  This then changes the ad serving algorithms that Microsoft applies for the app and all its ad units. In return, my ad fill rate went south...

By way of explanation Microsoft will only serve non-targeted ads to apps that are directed at Children under 13 years of age.

At this point I need to stress that you absolutely must select the appropriate COPPA compliance setting for your app.  At no point should ad fill rate considerations influence your declaration.  Just do the right thing, okay?

What's next for this app?

It was initially just a learning piece for myself as to how the Microsoft Advertising Framework actually works.  See this recent post if you want to read about it a bit more.

But now I'm actually thinking of putting in a feature that will aggregate data from all users across the world, by country, and then display it back in the app as a sort of "World Cup of Coin Toss" ladder.  Why, you ask?  Just for fun really.  And it could be an interesting learning on how to create the web APIs and database backend required for such a feature.

Anyway, feel free to comment if you like the idea.  Not much spare time at the moment but with enough encouragement it might just happen one day 😀

Get it from Microsoft

Hope you enjoyed the post

MB



Heads Or Tails UWP App - Sample For Using Microsoft Advertising AdUnits To Monetize Your Apps

A Quick Sample App For Monetizing Apps With Microsoft Advertising AdUnits


Just a quick post in case anyone is wondering how to monetize their UWP apps using Microsoft's Advertising framework.

The good news? I found it to be very simple and straight forward, although there are a couple of caveats to be aware of.

It's Easy - Let's get started


First, log into your Windows Dev Center account. On the left hand navigation bar click on Monetize - In-app ads.  Then click on the Create ad unit button.  Fill in a handful of self explanatory parameters for your new ad unit, and click the Create ad unit button to save.  Congratulation, you have just created your first live AdUnit.



Download and install the Microsoft Advertising SDK for XAML


Grab the SDK from the Microsoft web site, and run the installer.  Once done, open up your app's project in Visual Studio and add a Reference to the Microsoft Advertising SDK for XAML. To do this right click References - Add Reference - Universal Windows - Extensions.  Tick the box for the SDK and click OK.

Bake your shiny new ad unit into your UWP XAML App


This step is easy.  But don't be tempted to embed your live ad unit while still developing/debugging your app.  It is against Microsoft policy to run live ad units in the debugger and I am pretty sure they would not be pleased - so just don't do it.

Instead, use a test ad unit. Microsoft thankfully provide such a test ad unit with generic IDs.  So the XAML will look something like this:

  xmlns:UI="using:Microsoft.Advertising.WinRT.UI"

  <!-- Test AdControl -->
  <UI:AdControl
      ApplicationId="3f83fe91-d6be-434d-a0ae-7351c5a997f1"
      AdUnitId="test"
      Height="50"
      Width="320"
      Margin="0,20,0,20"/>

The key pieces here are the using: statement referencing Microsoft.Advertising.WinRT.UI, and the ApplicationId and AdUnitId tags. The values here are the generic test ones which you can use exactly as they are. These will tell the Microsoft Advertising framework to serve up test ads so you can ensure it all works.

For mobile apps, there are a couple of banner sizes that are recommended specifically, as they work best.  I am relatively sure you can use any of the approved sizes, but maybe best stick to the recommended ones for Windows Phone apps.

Voila, you are ready to earn money with your App - Almost, anyway


Pretty close...   A couple of extra steps are required first. Once you are happy with your app and you are ready to submit it to the Microsoft Store, change the XAML for your AdControl to use live ApplicationID and AdUnitId tags.  Where do you get these from you might ask?  Aha, since you paid attention to this post, you know that you can get the live Id tags from your Windows Dev Center, right?

Put the live Id tags into your app, and then follow the standard processes to package and submit the app to the Microsoft Store.  Visual Studio makes this very easy, and there is excellent documentation available from Microsoft on the whole end to end process.

Once your submission is fully approved, your app will be available to customers for download, ready for you to start making money.

Wrapping Up - Grab Heads-Or-Tails app from the Microsoft Store


Hope you enjoyed this post.  Any questions just leave a comment or send me an email.

Oh, and if you feel like it, go grab the app from the Store and use it to help you make those tricky decisions in life - after all, it's a tricky, age old question:   Heads Or Tails?

Cheers

MB


Further Information


Monetize your App with Ads - Windows Developer Documentation




AdSense Account Stats UWP App Released

Introducing AdSenseAccountStats App

For all those AdSense account owners with Windows mobiles or tablets out there, I recently released a new UWP app that may come in handy. This simple app will allow you to quickly and easily check up on your AdSense performance.

Watch your monetization efforts pay off and your earnings grow

After logging in with your AdSense account and authorising the app for read-only access, you can easily see metrics such as:
  • Earnings Clicks, Cost Per Click
  • Page Views, Click Through Rate and RPM
  • Coverage

Code components that make it work

The app simply leverages Google APIs, specifically the AdSense Management API v1.4, and Google OAuth v2 for authentication of the user.  Basically, all calls to the AdSense APIs have to be authenticated or else they won't work.

So the first problem was to tackle Google OAuth v2 for a UWP app.  There are complexities around the Google provided libraries and support for UWP, and I have touched on these in another blog post.

OAuth v2 Authentication

The following code snippet deals with authentication successfully:

            UserCredential credential;
            try
            {
                using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
                {
                    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                        GoogleClientSecrets.Load(stream).Secrets,
                        new[] { AdSenseService.Scope.AdsenseReadonly },
                        "user",
                        CancellationToken.None,
                        new PasswordVaultDataStore()
                        );
                }
            }
            catch (UwpCodeReceiver.AuthenticateException ex)
            {
                // Login failed or authorisation not granted
                credential = null;
                await LoginFailed(ex);
            }
            catch (Exception ex)
            {
                credential = null;
                await SomethingWrong(ex);
            }

Creating a client service for your API calls

Once the user has logged on and authenticated their AdSense account, and granted permissions to the app so it can access the user's AdSense details, you then create a client service to use for your API calls.  Pass the credential object created by the code above to the http initializer.

            var adSenseService = new AdSenseService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "AdSense Accounts Stats",
            });

Setting up and executing an API request

After the user has logged on and allowed access for the app, the next piece is to construct a valid API request, execute it and handle the response in a meaningful way.  This can be achieved along the following lines:

            var earningsRequest = adSenseService.Reports.Generate(startString, endString);
            earningsRequest.Dimension = dimensionString;
            earningsRequest.UseTimezoneReporting = true;
            earningsRequest.Metric = new List<string>{ "earnings","page_views","individual_ad_impressions","clicks",
                                                "page_views_ctr","individual_ad_impressions_ctr",
                                                "page_views_rpm","individual_ad_impressions_rpm","cost_per_click",
                                                "ad_requests_coverage" };

            var earningsResponse = await earningsRequest.ExecuteAsync();

Once you have that response object, you can use it in any way you see fit, for example use its member items as a list source etc.

Hope you enjoyed this post and if you like go grab the app from the Microsoft Store.

Cheers

MB



Google OAuth2 for UWP C# XAML Apps Example

I have previously posted on consuming Google YouTube APIs in UWP C# XAML apps, showing how to consume Google APIs using the API key technique for authentication.

That technique works well, but has its drawbacks.  Mainly, you can't access any of the non-public user specific information that the APIs expose.  In other words, to get to the juicy bits you need to make authenticated Google API calls.  To do that, you need to work out Google OAuth2 authorisation flows.

Now, that's easier said than done if you are a part time hack like myself, and not a serious developer.  Through lack of skill I need to rely on the dotnet API libraries that Google kindly provides.  There are a good number of blog posts out there that detail the API key method, but not many that have a working example for using Google OAuth2 as per Google's developers API reference samples..

This is where this post kicks in.  But it also comes with a disclaimer (see below).  The following code snippet is an actual working example for a Google API OAuth2 authentication flow.  It uses the Google provided libraries which can readily be downloaded from Nuget and implemented in your project in Visual Studio.  Just use the Nuget Package Manager and search available packages for Google.Apis.

The magic sauce here is that the good folk at Google have fixed the OAuth flow for UWP C# only in a beta release of their dotnet libraries.  Specifically version 1.31.0 beta 01.  In the package manager, make sure to tick the box to include pre-releases, or else you won't get the beta on the list of available packages.


And here is the disclaimer... the mainstream release - currently up to 1.32.0 - does NOT work.  The code will build but fail at run time.

Enough said.  Following is the example code that will manage your Google OAuth2 authentication flow for you.  It prompts the user to log in with a Google account, authorise our example App, access the user's AdSense account, grab a list of payments for the account and finally display the results as the items source on a XAML ListView. Sounds tough?  Not really, just a few lines of code 😃

Of course, instead of accessing the AdSense Management API we could access the YouTube Data API or any of the other Google APIs presumably. I have only tested AdSense and YouTube, though.

     private async void PopulateAdsenseList()
     {
         UserCredential credential;
         using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
         {
             credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                 GoogleClientSecrets.Load(stream).Secrets,
                 new[] { AdSenseService.Scope.AdsenseReadonly },
                 "user",
                 CancellationToken.None
                 );
         }
         var adSenseService = new AdSenseService(new BaseClientService.Initializer()
         {
             HttpClientInitializer = credential,
             ApplicationName = "Your App Name",
         });
         var myPayments = adSenseService.Payments.List().Execute();
         MyList.ItemsSource = myPayments.Items;
     }

Of course you will have to have a XAML page with a ListView (in this case called "MyList") to display the retrieved list of payments.

Just remember, don't be tempted to upgrade your Google.Api Nuget packages.  Stick with the 1.31.0. beta 01 release, or your code will break!  We'll have to wait until the devs at Google fix the libraries properly for UWP support.

Hopefully the above makes sense and you enjoyed reading this post.  If you have any questions or comments, why not drop me a line via email or comment below.

Cheers

MB


YouTube Channel Stats UWP App Update 1.3.3 Released

Release 1.3.3 for YouTube Channel Stats UWP App


Just a quick update on the progress of the app.  It has been in the Microsoft Store now for around five months, and has had two additional releases since its inception.

In November I added channel search functionality which made it much easier to obtain the channel ID for your YouTube channel that you wanted to get stats for.  While it all worked pretty well, the app was in dire need of a bit of a UI style makeover 😃

Well, the December release was aimed at exactly addressing this shortcoming.  The search page results list is now styled with channel thumbnails and a more appealing list item layout.  I'll show how this was done in a separate post shortly.  The main page got a makeover as well and now works better in portrait layout on smaller mobile phone screens. It also sports the addition of a channel thumbnail.

You might wonder how the app is tracking.  Here are a few current stats:
  • 5 months in the Microsoft Store
  • Over 1200 acquisitions
  • Over 1800 installations
  • Retention approx. 5% (Daily Active Users / Monthly Active Users)
All pretty interesting for something that started out as a learning exercise.  But what is next for the app?  Some interesting functionality I think would be to get some of the available analytics data into graphical views and charts, and possibly also some revenue metrics as many users of the app are likely to be content creators with monetized videos.  All in good time...

Best of all, the app is still available completely free of charge, with no annoying ads or in-app purchases.

If you are a Windows phone user who has a YouTube channel, this app is for you.  Grab it from the Microsoft Store and enjoy.

Wishing everyone a Merry Christmas 🎄

MB

Are Microsoft Lumia Windows Phones Any Good?

Windows based Microsoft/Nokia Lumia phones are out there, but nowhere near as popular as Apple's iPhones or Android based mobile phones.

Even the hallowed Nokia brand did not help Microsoft to gain any traction in the mobile market, and neither did the Windows 10 release, the advent of Univeral Applications or new high powered flagship models such as the Nokia 950.

But are these phones worth a second look?  Could they be a decent choice for some of us that are heavily invested in the Microsoft eco-system and are maybe not as app hungry as some?

So let's see why you might bother spending your hard earned money on a Microsoft Lumia instead of an iPhone or an Android device.

Well, for starters the flagship Lumia 950 has a price advantage.  As a flagship model, it literally costs half of what an iPhone will set you back, with similar or better specs.

The camera on the 950 is sensational, with 20 megapixels a real treat for photo enthusiasts. Battery life is pretty good but probably no real differentiator.

Personally, I simply like the usability of the Windows phone better. I use an iPhone for work but have a Lumia 930 to muck around with for some app development. The fluid Windows user experience appeals to me.  Combine that with Microsoft Continuum and you have a decent productivity solution in your pocket.

I'll admit I am biased in the sense that I am a consumer of all sorts of Microsoft services, and therefore the Windows phone actually works better for me than the Apple products. Integration with Office, OneDrive, OneNote and Outlook is tight, and exactly what I need.  Cortana works well these days, and the voice guided navigation is solid.

Of course all of that is available on iPhones and Android as well, and for some - even most - those other options are more attractive.  Ask anyone and it usually boils down to style and app availability for iPhone and Android.  It is much better than Windows apps for certain.  So if you are app hungry be sure to choose Apple or Android.

The few non-productivity apps I use - some of the standard socials like Facebook, Twitter and Instagram - are all available and work well on Windows.  Using eBay and YouTube through the browser works well enough.  Most of the Aussie banks have a Windows version of their banking app.

But can you even buy the Lumia 950 any more?  It's largely gone missing from the Microsoft online stores, and retailers in Australia don't seem to carry any stock any more.  Some carriers still have the handsets available on post-paid plans, but that's about it.  I guess everyone's waiting on the rumored "Surface Phone"... but that's a whole other discussion.

The good news is that you can grab yourself a bargain getting a Lumia 950 second hand from eBay at a really good price.  Of course it's buyer beware.  Check the seller ratings, ask questions about the history.  Buying mobile phones second hand can be a lottery as there are plenty of "seller refurbished" units that are not worth buying.

In Summary

If you must have all sorts of apps for all sorts of things in your daily life, the Windows phones are probably not for you at this point.

However, if you are already part of the Microsoft eco-system and you are looking for a well-spec'd phone and productivity tool at an affordable price, excellent usability, with an awesome 20MP camera to boot, then the Microsoft Lumia 950 (or even it's predecessor the Lumia 930) are worth your consideration.

Links

Microsoft Lumia 950 Product Page
Lumia 650 on Optus
HP Elite x3 in Microsoft Store

Most Popular Posts