Xamarin Notification Service Extension Problems - xamarin

I have several issues with implementing this extensions.
I get the service to run in one project but then in another it doesn't fire at all.
I get the service to fire on some devices and not on others.
The service sometimes works in pulling a NSUrl call but fails on the identical call later on.
I have read the post:
Xamarin Notification Service Extension issue
Is there a better solution than reverting to Objective-C and replacing the appex and resigning? Also, has anyone else experienced the inconsistencies with devices? Any reason why it works for one project and then has trouble working in another?

I got it working after a LOT of tries. It only works in release mode.
It has to do with a bug in Debug mode. Details are here (in the comments).
https://learn.microsoft.com/en-us/xamarin/ios/platform/user-notifications/enhanced-user-notifications?tabs=vswin#working-with-service-extensions

Related

In-App Review doesn't show up in Internal Test Track

I can only get the review prompt to show up once, even when in internal test track, in order for it to show up again I need to clear data and cache of the Google Play Store.
I meet all of the testing requirements since I have another game which I'm using In-App Review and everything works correctly on that one.
No errors show up when logging.
I'm using the unity version of the plugin, here are some of the things I've tried and their results:
Popup works every time in the Internal App Sharing, submit button is greyed out since it wasn't downloaded from the store.
Clearing storage and cache from Google Play makes the review appear once, but it doesn't have the correct settings, even though it was downloaded though the internal test track, the comment is tagged as optional, and when trying to publish said review, either including the comment or not, it always gives the following error: DF-DFERH-01 Server Error
I've also tried multiple versions of the plugin, mainly 1.6.1, 1.7.0, and 1.8.0, without success on any of them (I did update proguard every time).
I also tried resolving dependencies with other versions of the External Dependencies Manager, .172 and .174, both without success.
I've tried another account also included in the internal test track, didn't work
On another game I published, the In-App Review works as intended, I'm using the exact same code.
What's weird to me is that it works correctly on the Internal App Sharing, the app is currently on Open Beta, while the other game which In-App Reviews work correctly is on production, but I doubt that's related.
I was able to confirm that this is an issue on Google's side, after releasing the game to production, the popup started showing up on the Internal Test Track every time while using the same version as before.
To anyone that is also having this issue, if the In-App Review works on Internal App Sharing, you should be safe to release it to production and the issue will fix itself.
I can't say for sure this will work for everyone, but it did for me.

Mac/iPad Results in Dropped Blazor Server-side Connections

I recently received a report from a Mac/iPad user who used my Blazor server-side application. The problem seems to be that when they put the Safari browser in the background (e.g. switching to another application like Twitter to talk with me), the application disconnects:
This does not occur with any device/browser combination that I have tried with Windows (my native/development environment).
I am in the process of acquiring an iPad to test this on in my local environment, but I am wondering if anyone out there has had any experience with this and/or if there is a remedy to it.
Any assistance/pointers would be appreciated.
According to this Reddit thread, this appears to be due to a known issue:
https://www.reddit.com/r/Blazor/comments/x78buq/blazor_serverside_safarimacipad_connection_issue/
It is captured here in this issue with Github:
https://github.com/dotnet/aspnetcore/issues/30344

Is it still possible to publish an Electron app to the Mac Store?

I'm trying to successfully submit my Electron app to the Mac Store. I want to put it into TestFlight, similar to how I am submitting the corresponding iOS app. Ultimately, I want both of these processes to be part of a CI pipeline. The iOS version of this is ready to go.
For the Electron app, I'm using Electron-Builder to do the packaging and signing, and leveraging electron-builder-notarize to get past the Apple notarization step. After about a week of diving down several rabbit holes that became full-fledged rabbit warren metropolises, I finally have a working combination of configuration settings, certificates, plists, and pixie dust in place that my pipeline successfully builds and notarizes my "mas" target package.
I thought that once I had gotten past the rather hellish notarization step, I would be pretty much out of the woods -- after all, Apple 'notarized' it (and sent me an email to prove it). But when I use the Apple Transporter app to post it to the App Store (I'm using this manually for now until I prove this works, then later I'll use the CLI commands for it to complete my CI implementation) it reports the app is rejected with 5 issues. These are actually variations of the same thing:
Electron.app' is already in use by another application.
Electron.app/Contents/Frameworks/Electron Helper (GPU).app' is already in use by another application.
/Electron.app/Contents/Frameworks/Electron Helper (Plugin).app' is already in use by another application.
Electron.app/Contents/Frameworks/Electron Helper (Renderer).app' is already in use by another application.
Electron.app/Contents/Frameworks/Electron Helper.app' is already in use by another application.
I thought Electron-Builder was supposed to deal with these internal ids. My "mas" block of the config looks like
"mas": {
"type": "distribution",
"hardenedRuntime": false,
"provisioningProfile": "embedded.provisionprofile",
"entitlements": "build/entitlements.mas.plist",
"entitlementsInherit": "build/entitlements.mas.inherit.plist",
"entitlementsLoginHelper": "build/entitlements.mas.loginhelper.plist",
"publish": null
},
which I believe is what is needed to specify that these inner binaries are signed. Perhaps not. Copying others who also had to abandon the docs is not necessarily a guarantee of success. But these things did get me this far.
I've scoured SO and other Internet sites, and of course the poorly written and often obscure official documentation sources, but I can't find the answer to this.
In my travels, I happened across this blog which makes me think that even if I get past this part, there may still be a long bumpy road ahead, and it may turn out to be a dead end.
I notice a lot of developers have commented they chose to abandon the Mac store and instead simply self-publish with their own URL link for download. That seems to be a shame, at the very least, and certainly not my preference.
It makes we wonder if this is even possible. Many of the posts (not to mention the docs) contain outdated information, and few posts are more recent than more than a year. Many things have changed. Maybe everyone threw in the towel. Am I on a futile quest?
I believe I found the answer to the main question of "is it possible?" I may still run into other issues, but I've discovered the main problem.
My Electron project is in a different construction than that of the "Electron-quick-start" template, so the Electron-builder packaging and signing steps do not find what they are looking for in all the normal places.
I am not 100% sure I can successfully reconstruct my project into the 'canonical' format, but that appears to be the solution.
I was able to create a basic quick-start app and upload it to the App Store in a matter of minutes, so all the parts do in fact work. The project just need to be of the right construction.

Xamarin Apple Watch Extension - Consuming simple JSON Web Service

I've built a simple Xamarin.forms app which connects to a web service and gets one piece of data and displays it.
I wanted to do the same on an apple watch (targetting a series 2 apple watch) but I just don't understand how it works.
I've added the watch project and the watch extension, created the interface... Got a "refresh" button which changes the value of the label to a hard coded value but I want to get the data from a simple web service on app startup on wake and when button is activated (similar to my xamarin.forms iphone app)
I've tried using the classes that I use on the forms app to get the data but I can't reference them. I've tried using httpclient and that doesn't work.
After googling it appears I am suppose to use a HandleWatchKitExtensionRequest delegate in the phone app to get the data in a dictionary and then display the data. I haven't been able to find any really simple examples of this, but I'm confused because since apple watch version 3 the watch has been autonomous with cell access and therefore it doesn't have the host app necessarily.
So what I'm asking, is can the watch actually consume a web service alone using a xamarin phone app and if so, is there any simple examples because I can't find any (that aren't from 2015).
Sorry if this is vague, or I sound like a newbie (I definitely am a newbie when it comes to xamarin but any pointers or help would be appreciated)
According to https://developer.apple.com/documentation/foundation/nsurlsession?language=objc NSURLSession is available since watchOS 2.0. It is used to download the content from the web and is extensively documented just don't search for watchOS specifically as it is the same on all Apple OS.
But as HttpClient uses NSURLSession it is also available, so, maybe you need to add the reference to System.Net.Http.
When I was last developing for the watch I noticed that HttpClient would never work. I had to use NSUrlSession, so this is what helped me.
Hope this Helps

Parse Unity WebGL - SignUpAsync Task Not Completing

I'm having trouble signing up users through Parse in my Unity app. In the editor, everything works as expected, but once I build it to the WebGL platform, I have a problem.
When I call SignUpAsync() on a user, it is correctly setting up the user as intended on the Parse server and also sending the user email verifications (because I have it set to do so), however the actual task from the app does not receive any callback from Parse about its completion. In other words, task.IsCompleted is never set to true, no matter how long I wait. No errors are being thrown, and if I attempt to log in with the same credentials afterwards, it works. But there is still no way for the app to know that it's done signing up.
I don't know if this is a bug with Parse or its connection to WebGL, or if it's somewhere on my server. Does anyone have any ideas for things to check?
Parse's Unity SDK does not support WebGL since WebGL does not support threading and tasks.
I've been searching for a solution and found reference to people who say they have either grabbed the open source parse SDK and replaced tasks with coroutines OR swapped out the Unity SDK for the RESTful API.
Hope that helps point you in the right direction.

Resources