We are getting this message in android store,Webrtc version is outdated for xamarin.Android app - xamarin.forms

https://support.google.com/faqs/answer/12577537
We are getting this message in android store. Fixing it is not mandatory for releasing but its a security risk.
Please help,how to update webrtc version.

Google stopped providing Android library directly for webrtc, but the source is open and the link you shared has instructions on how to build the Android library from source.
It is a long process, but if webrtc is essential for your app, you have to spend some time to set this up.
If you need a temporary fix, I found that someone does this in their github repo often, and you can use the Android library there directly
https://github.com/dbrgn/webrtc-android
Note that, the author of this library itself recommends to build the library from the source directly.
https://groups.google.com/g/discuss-webrtc/c/bO-d15ogjCs

Related

Unity deletes files itself from my asset folder on Mac OS

I've got a problem with Unity installed on Mac OS (Unity 2020.1.16f1 Personal and Mac OS Catalina 10.15.6)
It's look like Unity delete files by itself from my asset folder.
It occurs with both a Firebase (Firebase SDK 7.0.2) and PNG file.
The deletion seems to occur something like each hour (more or less)
However the problem don't happen with all my assets, for exemple with the Firebase SDK it seems that only the file FirebaseCppApp-7_0_2.bundle (and with my png file it happens only with a specific file).
Here's how I get the problem (exemple with Firebase SDK):
I import Firebase SDK I need into Unity (Import Package -> Custom Package and then choose the one I need)
Got this error: "DllNotFoundException: FirebaseCppApp-7_0_2"
Correct this error by going to Security And Confidentiality of my Mac and authorize Firebase to be open (when you download something from internet directly sometimes your Mac ask for this authorization because he don't recognize the developer)
Work perfectly for approximately 1 hour (I can make all changes I want, test my game with the game mode etc ...)
After 1 hour get the error of 2) again (on game mode)
I can fix the problem by reimport only one file from the SDK (FirebaseCppApp-7_0_2.bundle locate in Assets/Firebase/Plugins/x86_64/)
The first time I click play in Game Mode Unity crashes
Go to 3) step and continue
Is someone already get this error ? I've found multiple thread on internet talking about similar bugs (but not exactly the same) but nothing worked for me ...
I found and correct the problem. In fact the problem came from the iCloud which seems to not works correctly with Unity. For some obscur reason, the files which were deleted didn't sync with iCloud, and so when iCloud sent back the project the files were missing. You need to disable automatic sync with iCloud.
Some earlier versions of the Firebase SDK offered to add packages to the Unity Package Manager and would migrate files automatically. I would suggest using only unitypackage integration and trying to undo this migration in the process now. To see if this is the issue, do the following:
close Unity
open Packages/manifest.json and delete the entry for "ScopedRegistries" and remove any lines under "dependencies": { that start with "com.google. Note that Packages is a sibling of Assets (that is, it's next to rather than inside).
for safety, remove any Firebase packages under Assets. This include the folders:
Assets/ExternalDependencyManager, the (old) Assets/PlayServicesResolver, Assets/Firebase, Assets/Parse, Assets/Editor Default Resources/Firebase, Assets/Plugins/Android/Firebase, and Assets/Plugins/iOS/Firebase.
Download the latest Firebase Unity SDK (you can check the release notes here).
open Unity again and add each UnityPackage you need from the SDK. You can usually follow the errors in the console output if you've forgotten everything you're using.
A less likely issue you might be running into is MacOS's stricter behaviour with respect to gate keeper. There's a video here with a workaround, but since you mention the PNG files disappearing I expect that it's the External Dependency Manager.

Firebase and Unity: Unable to find command line tool error

After following tutorials on how to correctly install firebase into unity for an authentication system, I encountered an error that was:
Unable to find command line tool C:\The E-Learning System\Assets\Firebase\Editor\generate_xml_from_google_services_json.py required for Firebase Android resource generation.
From understnading it can not find either the google services file I imported into the assets folder or it could not find the generate_xml_from_google_services_json.py file. I looked online for people with similar problems could not find a clear answer to fix this.
This is a tool that ships with the SDK to support debugging your game in the Unity Editor. One minor caveat is that an exe actually ships on Windows (I assume that this is your operating system from the C:/). You should make sure that generate_xml_from_google_services_json.exe exists in that same directory (.exe's are typically ignored in many standard .gitignore as a catchall for build files). If it's missing, you can simply re-add the Firebase SDK and double check that this file gets included in your source repository.
If both generate_xml_from_google_services_json.py and generate_xml_from_google_services_json.exe exist under Assets/Firebase/Editor, you may also want to install Python for Windows (especially if you're still running Windows 7 or 8). This is due to a recent patch (as of 6.10.0) that fixes some incompatibilities with generate_xml_from_google_services_json.exe and older Windows variants. If that doesn't help, it would be awesome if you could file an issue or reach out to support directly. If there's a bug in that fallback, it would be helpful to surface that ASAP.
Let me know if that helps!
--Patrick

Firebase device token on Xamarin.Forms

I have a Xamarin.Forms project and I'm using the firebase messaging platform to provide push notifications to my app.
The last step that is stopping me from publishing the app is the lack of FirebaseInstanceId Nuget for xamarin.forms which seems to exist only for xamarin.android.
The reason behind why it is so important for my project is getting the cloud messaging token. From what I've seen throughout internet forums it wasn't covered clearly what to do in this situation.
The notifications in my app work in an unusual way. The user chooses one of around 30 options, and then depending on his choice he receives appropriate push notification.
So I've written a script that sends his choice to the firebase database and that is where his token is required so a javascript server connected to firebase could send him the push.
I hope I made it clear, and that that the solution wasn't covered previously on this forum. I'm still a beginner so a detailed solution or some suggestions would be really appreciated.
To implement notifications in Xamarin forms, you should do it on each platform(iOS and Android)and install Nuget packages to each platform.
Create a Xamarin.forms project name MyApp(Use this Name as an Example).
Right Click on the MyApp.Android(This is important, not MyApp) ---> Manage NuGet Packages
You should install these packages in Android Project:
(1). Xamarin.GooglePlayServices.Base
(2). Xamarin.Firebase.Messaging
Right Click on the MyApp.iOS(This is important, not MyApp) ---> Manage NuGet Packages
You should install these packages in iOS Project:
(1). Xamarin.Firebase.iOS.CloudMessaging
You can follow this article for more detail :firebase-cloud-messaging.

Google Analyitcs with gms version 11.4.0 or higher is not working with instant apps when run on Nought Devices

We want to transfer data from instant app to installed app using Cookie API. Cookie API needs to have a play services version 11.4.0 or more. It works on lollipop, marshmallow and Oreo devices but crashes on Nought devices only showing following exception.
java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.job.IJobScheduler.cancel(int)' on a null object reference.
It crashes when we use GoogleAnalytics.getInstance(getContext()) to get the Google Analytics Instance. But it works on all platforms except Nought.
I believe this is the same as this issue.
If that's the case, then this should fix it.
This is normally fixed in Google Play services for Instant Apps version 2.3. However, when you provision your device with Android Studio, you no longer receive OTA updates. You can check that from the version number (Android Studio provisioned version contains "sdk").
Try uninstalling Google Play services for Instant Apps. Then turn off Instant Apps and turn it on again. It should restore the final version (2.6-release), which contains the fix.
Deploying from the IDE will overwrite it still though.
So once it's updated, you can also remove the forced provision from the Edit Configuration dialog.
This was my issue with Firebase Analytics and I got the same error. So try that out and let me know if it helps.

How can I enable auto-updates in a Qt cross-platform application?

I love applications that are able to update themselves without any effort from the user (think: Sparkle framework for Mac). Is there any code/library I can leverage to do this in a Qt application, without having to worry about the OS details?
At least for Windows, Mac and user-owned Linux binaries.
I could integrate Sparkle on the Mac version, code something for the Linux case (only for a standalone, user-owned binary; I won't mess with distribution packaging, if my program is ever packaged), and find someone to help me on the Windows side, but that's horribly painful.
It is not a complete solution, but a cross-platform (Windows, Mac, Linux) tool for creating packages for auto-updates and installing them is available at https://github.com/mendeley/Update-Installer. This tool does not deal with publishing updates or downloading them.
This was written for use with a Qt-based application but to make the update installer small, standalone and easy to build, the installer uses only standard system libraries (C++ runtime, pthreads/libz/libbz2 on Linux/Mac, Win32 API on Windows, Cocoa on Mac, GTK with fallback on Linux). This simplifies delivering updates which include new versions of Qt and other non-system libraries that your application may depend on.
Before considering this though, I would suggest:
If you are only building for two platforms, consider using standard and well-tested auto-update frameworks for those platforms - eg. Sparkle on Mac, Google's Omaha on Windows or auto-update systems built into popular install frameworks (eg. InstallShield). I haven't tried BitRock.
On Mac, the Mac App Store may be a good option. See https://bugreports.qt.io/browse/QTBUG-16549 though.
On Linux, consider creating a .deb package and a simple repository to host it. Once users have a repository set up, the system-wide software update tools will take care of checking for and installing new releases. The steps for setting up a new repository however are too complex for many new Ubuntu/Debian users. What we did, and also what Dropbox and Google have done, is to create a .deb package which sets up the repository as part of the package installation.
A few other notes on creating an updater:
On Windows Vista/7, if the application is installed system-wide (eg. in C:\Program Files\$APPNAME) your users will see a scary UAC prompt when the updater tries to obtain permissions to write to the install directory. This can be avoided either by installing to a user-writable directory (I gather that this is what Google Chrome does) or by obtaining an Authenticode certificate and using it to sign the updater binary.
On Windows Vista/7, an application .exe or DLL cannot be deleted if in use, but the updater can move the existing .exe/DLL out of the way into a temporary directory and schedule it for deletion on the next reboot.
On Ubuntu, 3rd-party repositories are disabled after distribution updates. Google works around this by creating a cron-job to re-add the repository if necessary.
Shameless plug: Fervor, a simple multiplatform (Qt-based) application autoupdater inspired by Sparkle.
Shameless plug: this a relatively old question, but I thought that it may be useful to mention a library that I created recently, which I named "QSimpleUpdater". Aside from notifying you if there's a newer version, it allows you to download the change log in any format (such as HTML or RTF) and download the updates directly from your application using a dialog.
As you may expect from a Qt project, it works on any platform supported by Qt (tested on Windows, Mac & Linux).
Links:
Website
GitHub repository
Screenshot:
Though it works a bit differently than Sparkle, BitRock InstallBuilder contains an autoupdater written in Qt that can be used independently (disclaimer, I am the original BitRock developer). It is a commercial app, but we have free licenses for open source projects.
I've developed an auto-updater library which works beautifully on Mac OS X, Linux and pretty much every Unix that allows you to unlink a file while the file is still open. The reason being that I simply extracted the downloaded package on top of the existing application. Unfortunately, because I relied on this functionality, I ran into problems on Windows as Windows does not let you unlink an open file.
The only alternative I could find is to use MoveFileEx with the replace on reboot flag, but that is awful.
However, renaming the working directory of the application works on Windows 7 and Windows XP. I haven't tried Windows Vista yet.
I have found WebUpdate to be quite useful, though it's written with the wxWidgets. But don't worry, it's a separate app which handles your updates. The steps to integrate it are pretty simple - just write two XML files and run the updater. And yes, it's cross-platform.
The advantage of it is it will automatically download and unzip/install all you required and not just provide a popup with a notification about a new version and a link to download it. Another thing you can do with it is customizable actions.
Project's main page is here, you can read the docs or take a look at the official tutorial.
The blog post Mixing Cocoa and Qt may solve the problem for the Mac platform.
You can use UpdateNode which gives you all the possibilities to update your software. It's using a cross platform Qt client and is free for Open Source!
UPDATE
Just did some further analysis on that and really like this solution:
Pros:
Free for Open Source!!! Even the client is Open Source: https://github.com/updatenode/unclient
The client is already localized in several languages
Very flexible in terms of updates. You can even update single non-binaries.
Provides additionally a way to display messages though the client.
Ready to use binaries & installer for all common Linux distributions, single Windows binary, as well as installer and a solution for Mac (which I have not tried, as I don't have a Mac)
Easy to use web service, nice statistics and update check is integrated within few minutes
Cons:
I am missing a multi-user management in the online service. Maybe they will do it in future - I will definitely suggest that in their feedback portal
The client is a GUI client only - so, you will need to shrink it down to run without a GUI frontend (maybe only necessary for people like me ;-) )
So, bottom line, as this solution is quite new, I think there is lot of potential here. I will definitely use it in my project and I am looking forward for more from them! Thumbs up!
This is an old question but there is not Squirrel in answers which is BEST SOLUTION , here is what I'm doing in qt 5.12.4 with qt quick "my qml app" you can do this in any other language
I'm doing this in windows there is mac version of squirrel too, I don't know about Linux
download nuget package explorer release
https://github.com/NuGetPackageExplorer/NuGetPackageExplorer/releases
open nuget package explorer and add this directory 'lib/net45' it doesn't matter you have a .net app or not, I did this for my qt application otherwise it won't work.
add all files into this folder specify your version in the metadata
save nupkg file
download squirrel release https://github.com/Squirrel/Squirrel.Windows/releases
add squirrel to windows environment path
open cmd and cd to directory of nupkg file
squirrel --releasify file_name.nupkg -> now inide releases folder, there should be setup.exe file which will install app and other files.
to create new version do 2,3,4,7,8 again if its an update it will create delta file which is only needed file to update, put this files into your service directory for example in updates folder of your website which you need to disable directory browsing in IIS , and to auto-update application you need to call Update.exe which is in parent folder of application root directory appdir/../update.exe --update http://yourserver.com/upates/ after application restart app should start with new version
you can find documentation for squirrel in https://github.com/Squirrel/Squirrel.Windows/blob/develop/docs/getting-started/0-overview.md and nuget package explorer here https://github.com/NuGetPackageExplorer/NuGetPackageExplorer and you can use only nuget.exe too if you don't want to use nuget package explorer which can be used for dynamic generation of versions, which can be download from https://www.nuget.org/downloads
That easy. Now you have auto-update app which will download updates from the server and auto-update app. For more info you can read documentations.
note: for iis uses https://github.com/Squirrel/OldSquirrelForWindows/issues/205
I suggest you read on plugin and how to create and use them. If your application architecture is modular and be split into different plugins. Take a look at Google Auto Update utility http://code.google.com/p/omaha/. We use this.
Thibault Cuvelier is writing a tutorial (in French) to develop an updater. I know the explanations are in French (and everyone is not understanding French), but I think this can be readable with a web translator like Google Translate. With this you will have a cross-platform updater, but you need to write it by yourself.
For what I know, the only part of the updater that is explained in the tutorial, is the file downloading part. In the case this can help you, refer to the tutorial, Un updater avec Qt.
I hope that helps.
OK, so I guess I take it as a "no (cross-platform) way". It's too bad!
I have found a solution that can be automated with built-in self-extracting patches and updates. for windows. I have started using their sdk. take a look at the massive documentation here, https://agersoftware.com/docs/ the sdk is called securesdk and comes with their app, SecureDelta sdk. does a great job on any kind of files, better results than lzma-included delta updaters

Resources