I am implementing push notifications in our Xamarin.Forms application.
What I have followed is this documentation: https://learn.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-xamarin-forms-get-started-push
Android and iOS are working perfectly as intended, my problem is with the UWP Push notification.
I have used Visual Studio to associate the application with the store, and I took the Package SID and the Application Secret and added them to the Notification hub in Azure like shown in the documentation linked above. I tried to run the application, and I was able to receive the notification. Perfect!
Problem that my team and myself faced is the next: When one of my colleagues pulled the source code to test it, the notification was never received. Even when we install the application from our build server the same problem is faced.
Why does the notification stop working when built from another machine than mine, and how to fix it so that it will keep working when built from any other machine?
The problem turned out to be simple, steps I taken to fix the problem are the next:
After associating the application and reserve it in the windows store, I got a publisher name: CN=********-****-****-****-************, in Visual Studio, I right clicked on the:
UWP Project -> Application -> Package Manifest -> Packaging,
and you can find the publisher name right to the Publisher label, and right next to that there's a Choose Certificate... button. I clicked it and chose Configure Certificate drop down list and clicked on Create Test Certificate.
Three text boxes should be entered, publisher common name, and password and its confirmation. Inside the Publisher Common Name I entered the ********-****-****-****-************ without the CN= and entered my password. After creating the certificate I installed it on others laptops that needs to build the application and notification was working after.
Related
I have two app service application and function apps [different solutions]. Both are developed using .Net core Visual Studio 2019.
I see different type of wizards for publish during publishing app service . This is creating confusion.
I would like to know, why there are different types of Wizards? Why in one solution its showing and other its not?
In general case, I can just click on publish and it will publish. However, in case of "pick a publish target" I need to download the publish profile and do "import profile". Will I need to take any extra care during "import profile" ? What are the difference between two types of publish? Which is the preferable way? Could anyone please help me understand this?
Any link/tutorial that will explain the step by step approach of "Pick a publish Profile" ? Thanks
Below screenshot shows, different wizard:
In the first image, you have already created a publish profile. Hence, it just straight asking you to publish.
In the second case, you don't have a publish profile yet so it is asking you to Import or create a publish profile. You can also create a publish profile by selecting App Service instead of IIS, FTP etc and then once the profile is created it will work like in your first case. And off course, import a profile which again should only happen once and thereafter it should automatically use that profile.
Situation 1
I wrote my own bot framework and deploy to Azure,
the Test in Web Chat shown me "Waiting for bot to be ready after deployment".
Situation 2
I downloaded the source code from Azure bot Services,after that I deploy back to Azure, the Web Chat shown me "Waiting for bot to be ready after deployment".
I also faced this issue and this is how I solved it.
Changed my publish settings to have Remove additional files at destination checked. This is an important step because when you provisioned a new web app bot, it will already have some files in the location. So when you publish your code, it will be placed along with the code files which already exists. You can also test it by navigating to the /api/messages url. If this gives you error, then this is most likely the case.
I also updated all the NuGet dependencies.
The other thing that caused me a bit of issue was the App Password. The app password in your web.config should match the one which is already generated for your BOT. Do not create a new password from the bot management page. If you did that then make sure that you change/update the password in web app bot application settings and also in the web.config file. When you host the bot, by default it will use the Application Id and Application Password which were generated automatically. You can see these values in the Web App Bot service type which is under the section App Service Settings>Application Settings. Scroll down to the bottom and you will see these two settings. Copy the values of Application Id and Application Password and update them in the Web.config file.
Hope this help!
What fixed it for me was changing Destination URL in Publish Settings to https. For some reason default is http.
I had missing node packages that I wasn't aware of. I found the errors in the output logs at https://[bot-name-here].scm.azurewebsites.net/dev/wwwroot/:vs.output
Or you can Navigate to this by going to Build -> Click 'Show output' (or Shift+Command+U) (its the 5th icon in the left hand side menu on the Build window)
Hope that helps!
Some ideas to troubleshoot for people having the same error:
Check that the server hosting your bot is actually running. If https://YOUR_BOT.azurewebsites.net is timing out, then your server is not running, check your config
Check if you have logs in the App Service: Enable everything under App Service > Diagnostic logs, then go to App Service > Log Stream.
Check potential errors under Web App Bot > Channels > Web Chat > Issues
Check that the files on the server look ok by going to App Service > App Service Editor (Preview)
Close all your browsers, especially if they have been running for a long time and/or you have been changing a lot of config/files recently
I fixed the issue by using a combination of those points
I had the window open for a few days, and "Test in Web Chat" would just show "Waiting for bot to be ready" and the juggling progress indicator, forever. I duplicated the tab and it came right up. I think my session may have expired or something, because any new, duplicated tab, I could bring the bot up in just fine.
I solved the problem by, in Visual Studio's Solution Explorer, setting the .bot file's property "Copy to Output Directory" to "Copy always"."
The details: The bot worked fine locally in the emulator. After deploying to Azure (continuous deployment), "Test in Web Chat" hung with "Waiting for bot to be ready". (Would be nice if it detected and reported errors.)
After setting up Azure storage, turning on Azure logging, discovering the FileNotFoundException, inspecting with Resource Explorer, and deploying multiple bot versions, I isolated the cause. This document really helped me troubleshoot:
https://learn.microsoft.com/en-us/azure/app-service/troubleshoot-dotnet-visual-studio#a-nameapptracelogsacreate-and-view-application-trace-logs
I also experienced this problem but the solution I have is totally different from the suggestions above.
I created my Knowledge Base and Web App Bot purely using the portal. The problem lies with the configuration. As of writing, the Bot Template: Node.js > Question and Answer does not work. I needed to create a new Web App Bot and I selected instead C# > Question and Answer.
That fixed my problem and allowed me to use the Test in Web Chat feature.
Is there a way to target Xbox device family specifically when creating a new UWP application? Thus making that application package unavailable for the other platforms, while potentially have a different package for other platforms?
Currently I'm trying to create a package for Xbox only by adding
<TargetDeviceFamily Name="Windows.Xbox" MinVersion="10.0.14000.0" MaxVersionTested="10.0.14000.0" />
to the package.appxmanifest. Unfortunately this gives permission error on uploading via the dev center:
Package acceptance validation error: The package *.appx targets the following Windows 10 device families for which you don't have permission(s): Windows.Xbox
I think this is the correct way to do it and that the permissions might be granted somewhen after the anniversary update? When will publishing be possible? Or is there another program you have to sign up to for being allowed to publish an Xbox only application / get the required permission?
Currently, Windows Store is not ready to accept XBOX app. As pnp0a03 mentioned, Microsoft will publish the new Dev Center feature and publish more details about publishing XBOX target app in Store, maybe later this month
Setting TargetDeviceFamily dependency is the right direction, the current available device families are Windows.Universal, Windows.Mobile, Windows.Desktop. Please waiting for the updates from Windows Store side.
This just started happening today after I got a message from xcode to agree to new t&c's.
I can't put anything on the device, on any of my computers.
Doesn't work on my macbook, doesn't work on my mac mini, doens't work with existing projects that worked fine until yesterday, doesn't even work with completely new projects.
I constantly get the message:
writeDictToFile:1241 open failed for
/Users/georgecook/Desktop/test/iOS/obj/iPhone/Debug/mtouch-cache/install-shadow-directory/339bee33bc83c8e05fbd004dcc732c0b/20715d40747e047ba8a4ce4c1d2672ef90161df5/ManifestCache.plist
: No such file or directory MDMCacheDirectoryManifest:1315
writeDictToFile failed to write to
/Users/georgecook/Desktop/test/iOS/obj/iPhone/Debug/mtouch-cache/install-shadow-directory/339bee33bc83c8e05fbd004dcc732c0b/20715d40747e047ba8a4ce4c1d2672ef90161df5/ManifestCache.plist
: No such file or directory error MT1006: Could not install the
application
'/Users/georgecook/Desktop/test/iOS/bin/iPhone/Debug/test.iOS.app' on
the device Gandalf the white: Your application failed code-signing
checks. Check your certificates, provisioning profiles, and bundle
ids. Probably your device is not part of the selected provisioning
profile (error: 0xe8008015).
No idea why this is suddenly happening - this is really not good - how to resolve this?
I tripped over this one recently too.
The key is this part of the message:
Your application failed code-signing checks. Check your certificates, provisioning profiles, and bundle ids. Probably your device is not part of the selected provisioning profile
Likely, your provisioning profile has expired. The easiest way to solve this is to launch Xcode, create an empty project, and hit Run. This will go over a series of dialog boxes offering you to fix your provisioning profile until it deploys. Once this happens, you can switch back to Visual Studio/Xamarin Studio and deploy.
One reason this can happen is if you have multiple developer accounts set up in XCode. Here are the steps
Verify that your device is on Apple member center
Verify that your device is part of the relevant provisioning profile
Repeat steps 1 and 2 for each account
Create a new project in XCode and run it on the device. XCode may ask you to select the team (if you have multiple accounts)
If you have multiple developer accounts (teams) set up in XCode, the repeat step 4 each time with a new project and select a different team each time.
These steps ensure that XCode clears the way for Xamarin. The idea is that Xamarin does not allow you to decide which "team" to use, so you want to make sure that XCode has done the setup for EVERY team.
I just had this ManifestCache.plist : No such file or directory problem. I checked device logs (View -> Pads -> iOS Device Log) to see why it was happening. Logs said it was rejecting an upgrade. Upgrade, I thought to myself, that doesn't sound right...then I remembered I had an app on my iPhone with the same identifier to.dima.application from a previous version which I forgot to uninstall. Removing the old app cleared up this issue for me. Hope this helps anyone else who has the same problem! :)
It works! I have found the solution.I was facing the same problem. Somehow there was a misconfiguration in Xamarin. The entitlements.plist had a wrong manuel entry. The cert ist checking all the values in it and if you have a manuel entry there it is not working anymore. Apple is searching somehow only for own entry they are needing.
I spent sometime on developer portal to find out the problem, it occurs because of distribution APNS or development. It did not fixed, after restoring all provisioning profiles and certificates, . In my case solution was letting Xamarin choose signing profiles. I did not use info.plist auto signing which did not solve either but changing Project -> iOS Bundle Signing -> Signing identity, Provisioning Profile Auto solved all issues for development and production cases.
I had the same issue, and so I opened Xcode and updated all my profiles, but nothing happened. So I added the device UDID in the developer portal to the team I was developing for, went to Xcode and updated the profiles again, and then it worked. Don't know if the device must be registered to be able to build to device or this triggered some other update to my profiles that suddenly made it work.
Today they published a new revision of the Apple Developer Licence agreement.
The error message was essentially the same as OP's. The true reason only became apparent when creating a new project in XCode on the Mac, where more useful warnings show up in the "Deployment info" section of the "General" tab.
I had to log in to apple.developer.com, there was a red panel asking me to accept the new licence conditions, and as soon as I did that, deploying apps from Xamarin immediately worked again.
I understand the need to provision apps when you are getting close to deployment; however, right now, I am just trying to play with some sample code. Specifically, the GKRocket demo that ships with iOS 4.2 SDK. I want to compile and run it; however, I get the following error:
Code Sign error: a valid provisioning profile matching the application's Identifier 'com.apple.GKRocket' could not be found
The readme.txt claims "Build the game simply by opening it with Xcode and clicking on Build and Go."
I just read the following thread
Code Sign Error When Building iPhone Application
and the following
http://developer.apple.com/ios/manage/bundles/index.action
Since the app is using the NSNotificationCenter, it leads me to believe that I need an AppID. But shouldn't the demo already be pointing to and AppID setup by Apple for the demo code?
The plist shows
Bundle identifier com.apple.${PRODUCT_NAME:rfc1034identifier}
any ideas on what I should do to compile and run this in the simulator?
Update:
I was able to get it running by code signing, but never could compile without it :(
It appears since the GKRocket Demo is using the NSNotification Center that in fact you need to sign your code. You can sign your code with your/or your team cert. Change the Project -> Project Settings -> Code Signing Identity to use your cert. Note: If you don't have your cert, and you paid the $99 dev license go through the steps here.
Then open the plist file and change the bundle to your domain name.
Also, to get the GKRocket Demo running, make sure you turn on Bluetooth in your network settings.
System Preferences -> Bluetooth. Turn it on and check discoverable. Then go into advanced settings
Install your app on your iPhone with a build and run. Close the debugger. Then start your app in the local iOS simulator. Now manually run your app on your phone.