Yortw / RSSDP

Really Simple Service Discovery Protocol - a 100% .Net implementation of the SSDP protocol for publishing custom/basic devices, and discovering all device types on a network.
http://yortw.github.io/RSSDP/
MIT License
288 stars 67 forks source link

Can't get rssdp to work in Xamarin.Forms (Android project in Xamarin Studio on Mac) #49

Closed TogleBooshfrew closed 6 years ago

TogleBooshfrew commented 7 years ago

I have a Xamarin Forms project where I'm attempting to use your Rssdp package from NuGet. For whatever reason when I go to run a search based on your code sample the app crashes with

System.ArgumentNullException Value cannot be null. Paramater name: communicationsServer

Any ideas?

TogleBooshfrew commented 7 years ago

I forgot to attach my code. Just the code behind file linked to a search button. I'm attempting to get the IP address of a Roku device on my network which broadcasts with SSDP.

        public async Task<bool> SearchForDevices()
        {
            // This code goes in a method somewhere.
            using (var deviceLocator = new SsdpDeviceLocator())
            {
                var foundDevices = await deviceLocator.SearchAsync(); // Can pass search arguments here (device type, uuid). No arguments means all devices.

                foreach (var foundDevice in foundDevices)
                {
                    // Device data returned only contains basic device details and location ]
                    // of full device description.
                    //Console.WriteLine("Found " + foundDevice.Usn + " at " + foundDevice.DescriptionLocation.ToString());

                    // Can retrieve the full device description easily though.
                    var fullDevice = await foundDevice.GetDeviceInfo();
                    //Console.WriteLine(fullDevice.FriendlyName);
                    //Console.WriteLine();
                }
            }
            return true;
        }

        public async void searchBtn_Clicked(object sender, EventArgs e)
        {
            var response = await SearchForDevices();
        }
    }
}
TogleBooshfrew commented 7 years ago

So for iOS the issue was resolved by adding Rssdp-sharpcaster. I have the exact same issue now for Android with Xamarin Forms but the issue is not resolved in the same manner. Any ideas?

Yortw commented 7 years ago

Sorry, I haven't had time to look at this. It's certainly weird, it should do that given the code you have. I don't know anything about RSSDP.SharpCaster. It appears to be fork of an earlier version created by someone for an alternate project. Possibly this problem is a result of killing off the specific iOS and Android projects and using the NetStandard implementation instead for those platforms. In theory that was a good idea, but in practice NetStandard doesn't seem to behave exactly the same (I think, unproven).

In terms of your current code, does it work if you explicitly create and pass your own comms server to the device locator? Something like; using (var deviceLocator = new SsdpDeviceLocator(new Rssdp.Infrastructure.SsdpCommunicationsServer(new Rssdp.SocketFactory(null)))

Also do you have a stacktrace for the exception?

TogleBooshfrew commented 7 years ago

No worries, we all have lives and we're all busy. I appreciate the hard work on such a useful library. If it wasn't for this package I wouldn't be able to develop this application cross platform, so thanks for that. In regards to explicitly creating my own comms server, I've already implemented that, and it's working for iOS, I adjusted the ip address for the Android device I was testing on as well.

var deviceLocator = new SsdpDeviceLocator(
                new Rssdp.Infrastructure.SsdpCommunicationsServer(
                    new Rssdp.SocketFactory("192.168.1.44")
                ));

Here is the stack trace you requested

System.NotImplementedException: The empty PCL implementation for Rssdp was loaded. Ensure you have added the Rssdp nuget package to each of your platform projects.
  at Rssdp.SocketFactory..ctor (System.String localIP) [0x0000b] in <971d9d7ca6244fcba0a0e8c53f6423e3>:0
  at RokuRemote.SearchForRokus+<SearchForDevices>c__async0.MoveNext () [0x0003e] in /Users/fooUser/Projects/RokuRemote/RokuRemote/SearchForRokus.xaml.cs:32
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357
  at RokuRemote.SearchForRokus+<searchBtn_Clicked>c__async1.MoveNext () [0x0006d] in /Users/fooUser/Projects/RokuRemote/RokuRemote/SearchForRokus.xaml.cs:83
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (System.Object state) [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1018
  at Android.App.SyncContext+<Post>c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:18
  at Java.Lang.Thread+RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/3511/501e63ce/source/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in /Users/builder/data/lanes/3511/501e63ce/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Java.Lang.IRunnable.cs:81
  at at (wrapper dynamic-method) System.Object:1e9a8cc2-f087-4950-9398-dc5a65767773 (intptr,intptr)

Also here is my current code snippet:

public async Task<bool> SearchForDevices()
        {
            var deviceLocator = new SsdpDeviceLocator(
                new Rssdp.Infrastructure.SsdpCommunicationsServer(
                    new Rssdp.SocketFactory("192.168.1.44")
                ));
            using (deviceLocator)
            {
                var foundDevices = await deviceLocator.SearchAsync(); // Can pass search arguments here (device type, uuid). No arguments means all devices.
                string friendlyName = String.Empty;
                foreach (var foundDevice in foundDevices)
                {
                    // Device data returned only contains basic device details and location ]
                    // of full device description.
                    //await DisplayAlert("Found", foundDevice.Usn + " at " + foundDevice.DescriptionLocation.ToString(), "Ok");
                    //await DisplayAlert("Found Device", foundDevice.Usn, "Ok");
                    var fullDevice = await foundDevice.GetDeviceInfo();
                    string deviceFound = foundDevice.DescriptionLocation.ToString();
                    if (fullDevice.Manufacturer == "Roku" && fullDevice.FriendlyName != friendlyName)
                    {
                        IPs ip = new IPs();
                        if (deviceFound != String.Empty)
                        {
                            await ip.writeRokuData(deviceFound);
                        }
                        //await DisplayAlert("Pinched", IPs.ROKU_IP, "Ok");
                        // Can retrieve the full device description easily though.
                        await DisplayAlert("Found", fullDevice.FriendlyName, "Ok");
                        friendlyName = fullDevice.FriendlyName;
                        rokus.Add(new rokuModel() { name = friendlyName, detail = fullDevice.Uuid, image = "rokuImage.png" });
                        //rokuItems.Add(friendlyName);
                        //rokuListView.ItemsSource = rokuItems;
                        await DisplayAlert("Success", IPs.ROKU_IP + " written to disc", "Ok");
                    }
                    //Console.WriteLine();
                }
            }
            await DisplayAlert("Finished", "Search completed", "Ok");
            return true;
        }

Please mind the clutter and multiple comments, as this is an alpha build and I have yet to refactor.

Yortw commented 7 years ago

Is this using the RSSDP package or SharpCaster version?

It looks like the nuget package used is adding an incorrect reference to your project.

"The empty PCL implementation for Rssdp was loaded. Ensure you have added the Rssdp nuget package to each of your platform projects."

Check the rssdp reference for the Android project is pointing to the dll in the MonoAndroid folder not the portable one. If there is no monoandroid folder, then there should be a netcore one instead. Defintely if the reference is to the PCL then it's invalid.

Yortw commented 7 years ago

Failing that, could you try the main Rssdp package, but go back to version 2.0.0.1. That release has a Xamarin Android specific project in it rather than using netcore, I'm hoping that works.

Yortw commented 7 years ago

Hmm odd. A new XF project using the latest package and the Androdi app, works fine for me using your code and running the search. What I have problems with is trying to retrieve the device description documents via http client, and I don't know why. Weird socket/object disposed exceptions I haven't seen before. Though that appears to only be 6 devices out of 57 found, so possibly those devices are badly behaved somehow.

Basically, the latest package does work for me with your code and I'm not sure why you had problems. You could still try the other suggestions above.

What version of the android APIS/tools are you targeting? What version of XF?

TogleBooshfrew commented 7 years ago

Target API 23, min API 15. Rolling back to 2.0.0.1 works as expected for iOS and resolved the issue there, but it is still present for Android. I'm using XF 2.3.3.180 and I think it's worth mentioning I'm using Xamarin Studio on Mac if you haven't yet noticed from the Stack Trace. I'm going to try creating a new project and importing my files. In regards to your initial response, that is how I stumbled upon the resolution by adding the forked package. Also I suspect this is why rolling back works for iOS, but adding the fork for Android didn't resolve the problem, and thus why it is still present for Android after rolling back.

TogleBooshfrew commented 7 years ago

Also that was using Rssdp, not sharpcaster. I've removed all references to sharpcaster.

Yortw commented 7 years ago

Unforutnately my only access to a Mac is at work, so to test this in Xamarin Studio on a Mac I'm going to have to spend time in the office after normal working hours. So far my testing has bee in VS2105 on Win10. I'm not sure why it would make a difference though, the Xamarin/Android runtimes and RSSDP code should behave the same.

Your first message shows an ArgumentNullException, but subsequent stacktace shows a NotImplementedException. Which do you get on the main RSSDP package, both latest and 2.0.0.1?

TogleBooshfrew commented 7 years ago

Disregard my first message, I resolved that by creating my own comm server if memory serves me correctly. All of these stack exceptions are from the newly created project.

The package 2.0.9 stack exception for Android here:

System.NotImplementedException: The empty PCL implementation for Rssdp was loaded. Ensure you have added the Rssdp nuget package to each of your platform projects.
  at Rssdp.SocketFactory..ctor (System.String localIP) [0x0000b] in <971d9d7ca6244fcba0a0e8c53f6423e3>:0
  at RokuRemoteCrossPlatform.SearchForRokus+<SearchForDevices>c__async0.MoveNext () [0x0003e] in /Users/marcellace.wallace/Projects/RokuRemoteCrossPlatform/RokuRemoteCrossPlatform/SearchForRokus.xaml.cs:30
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357
  at RokuRemoteCrossPlatform.SearchForRokus+<searchBtn_Clicked>c__async1.MoveNext () [0x0006d] in /Users/marcellace.wallace/Projects/RokuRemoteCrossPlatform/RokuRemoteCrossPlatform/SearchForRokus.xaml.cs:81
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (System.Object state) [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1018
  at Android.App.SyncContext+<Post>c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:18
  at Java.Lang.Thread+RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/3511/501e63ce/source/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in /Users/builder/data/lanes/3511/501e63ce/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Java.Lang.IRunnable.cs:81
  at at (wrapper dynamic-method) System.Object:25dc24c4-677e-4dcd-a5a5-87392bce55ba (intptr,intptr)

Package 2.0.0.1 for Android

Is currently working on the new project after a clean and then rebuild. Yay!

Package 2.0.9 for iOS:

System.NotImplementedException: The empty PCL implementation for Rssdp was loaded. Ensure you have added the Rssdp nuget package to each of your platform projects.
  at Rssdp.SocketFactory..ctor (System.String localIP) [0x0000b] in <f5910657386f4674acaf48c3349872c9>:0
  at RokuRemoteCrossPlatform.SearchForRokus+<SearchForDevices>c__async0.MoveNext () [0x0003e] in /Users/marcellace.wallace/Projects/RokuRemoteCrossPlatform/RokuRemoteCrossPlatform/SearchForRokus.xaml.cs:30
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357
  at RokuRemoteCrossPlatform.SearchForRokus+<searchBtn_Clicked>c__async1.MoveNext () [0x0006d] in /Users/marcellace.wallace/Projects/RokuRemoteCrossPlatform/RokuRemoteCrossPlatform/SearchForRokus.xaml.cs:81
  at at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/src/UIKit/UIApplication.cs:79
  at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/3969/7beaef43/source/xamarin-macios/src/UIKit/UIApplication.cs:63
  at RokuRemoteCrossPlatform.iOS.Application.Main (System.String[] args) [0x00008] in /Users/marcellace.wallace/Projects/RokuRemoteCrossPlatform/iOS/Main.cs:17

Package 2.0.0.1 for iOS

Is currently working on the new project

Tapanila commented 7 years ago

RSSDP.Sharpcaster is my package. It should not be used and I will remove it from nuget this weekend.

Did you add the RSSDP to all the projects when using xamarin.forms? You need to add it to PCL projects and also the invidual projects if not then you should get errors which you are describing.

TogleBooshfrew commented 7 years ago

Yes it's been added to all projects. As stated 2.0.0.1 causes no issues, but if I update the package to the current build 2.0.9 those are the stack traces. I am unsure why RSSDP.Sharpcaster resolved the issue for iOS. That stated this was simply by accident, and it's since been removed from my project. It is resolved at the moment by using a lower build version. Build 2.0.0.1 works as expected for Android, UWP, and iOS.

Yortw commented 7 years ago

Hi,

Can you confirm the names and folders for each RSSDP reference in the project (when 2.0.0.9 is loaded)? Should be just one or two.

Great to hear you got the old version working, at least that lets you continue on while we solve this.

Thanks.

Yortw commented 7 years ago

@Tapanila Thanks for the comments/assistance. I have no issue with your fork if it's still useful :)

rasmus-s commented 7 years ago

See the same as @TogleBooshfrew with the 2.0.9 version. On android build on VisualStudio on windows 10. Get the same exception as this: https://github.com/Yortw/RSSDP/issues/49#issuecomment-280195059

Yortw commented 7 years ago

Hi @rasmus-s - sorry you're having trouble. Unfortunately I cannot reproduce the problem. I have created several Xamarin Forms projects in VS 2015 on Windows 10, added the latest package from Nuget (2.0.0.9). and copied in the code from the readme.md, it all just works for me. I get results for about 50 different devices on my network, and no errors.

Are you able to send me (or put on OneDriver/Dropbox etc. where I can access it) a sample project that reproduces the problem? If I can get a sample then I can take a look.

Failing that, can you provide the following information from your project:

The particular error you referenced implies that one of the two references for RSSDP installed by Nuget is the wrong one. I do not know why you'd get the wrong one and I'd get the right one. A sample project or the above info may help me figure that out. If that is the case, then I may also be able to advise you on how to manually fix the references for your project, though it would be preferable to fix the root cause so others don't trip over this.

Thanks.

Yortw commented 7 years ago

I have created another brand new XF project, installed the latest Nuget package (2.0.0.9) and added some code to run an SSDP search (to the Android project only, the other projects I've left alone). This code runs fine without errors for me on a Samsung Galaxy S5. My emulators are broken at the moment and I can't use them, and I have no other Android device at this time.

The project I've created can be downloaded here; https://1drv.ms/u/s!ALC3Ud4fUz-MgffnVQ

Could someone who is experiencing the problem in this issue try this project and see if it works? Can they compare the references with their own project to see what the differences are?

Yortw commented 7 years ago

Note, the code in the sample project just writes the found devices to the output window in debug mode, it doesn't do anything visible on the UI... so if you want to see it working, watch the output window after clicking the button in the Android app.

TogleBooshfrew commented 7 years ago

I apologize as I've been busy the past few days, I cannot recreate the issue in Visual Studio Community. I created the same project, imported my files and can successfully use RSSDP 2.0.9 for both cross-platform and windows UWP project only.

RSSDP 2.0.9 iOS: /Users/fooUser/Projects/RokuRemoteCrossPlatform/packages/Rssdp.2.0.9/lib/netstandard13/Rssdp.NetCore.dll

RSSDP 2.0.9 Android: /Users/fooUser/Projects/RokuRemoteCrossPlatform/packages/Rssdp.2.0.9/lib/netstandard13/Rssdp.NetCore.dll

TogleBooshfrew commented 7 years ago

Also the Skype Bot "Security Bot By MetaCert" is flagging your link as Malware/Phishing. Unsure why. See here:

[2/25/17, 8:03:50 PM] FooUser: https://1drv.ms/u/s!ALC3Ud4fUz-MgffnVQ [2/25/17, 8:03:52 PM] Security Bot by MetaCert: Here is what I found: 
• Check URL: https://1drv.ms/u/s!ALC3Ud4fUz-MgffnVQ 
• Redirect: Doesn't redirect 
• Classified as: Malware & Phishing

Yortw commented 7 years ago

No problem, we all get busy. Great to have the extra info, thanks for that.

Those both look like the correct references, I assume those are from the new project you created? Are they the same in the old project or are those different?

I'm also confused as you say you can't reproduce it in VS Community, but your original message said you do get the problem on VisualStudio on Windows10 - was that a different version or edition of VS? I'm basically trying to figure out how to reproduce your issue so I can fix it. Any info you can provide on when it does happen would be great.

Yortw commented 7 years ago

Not sure why that link is reported as malware, perhaps just because it's to a zip file containing source code? It's a 'public share' link to a zip file on my onedrive account, provided by OneDrive itself for the purposes of sharing.

Yortw commented 7 years ago

Ah, sorry, wrong person. You're saying the issue occurs for you in Xamarin Studio on a Mac for Android, but not for VS2015 community on Windows?

Yortw commented 7 years ago

I wonder if the Xamarin version of Nuget (or whatever runs in it's place on Mac) doesn't obey the same rules for which platforms to prefer. I think they may have changed in recent Nuget editions, so maybe Xamarin isn't 100% the same. Knowing exactly which RSSDP dll's are referenced in the Xamarin project would be helpful.

TogleBooshfrew commented 7 years ago

Ah, sorry, wrong person. You're saying the issue occurs for you in Xamarin Studio on a Mac for Android, but not for VS2015 community on Windows?

That's correct.

Yortw commented 7 years ago

Does your android project's csproj file contain this, or a different dll ref; image

Yortw commented 7 years ago

Hi,

Unfortunately I still cannot reproduce this.

I made a brand new XF project in Xamarin Studio on my Mac, added the latest Nuget package via the UI, put in the simplest possible search code and tested it. Worked fine for me.

I've put a copy of the solution I used at; https://1drv.ms/u/s!ArC3Ud4fUz-Mgff4YhBCNvDBRIYb5kI

Can you try this and let me know if it works for you? Can you compare the references in this project file with yours?

Thanks.

Yortw commented 7 years ago

Sorry, wrong link. That was for a UWP project, this link is the correct one for Xamarin Android project using Xamarin Studio on Mac; https://1drv.ms/u/s!ArC3Ud4fUz-MgfiXLy87ASbMSX-THeE

Yortw commented 7 years ago

Please see issue #61 which may or may not be the same as the problem reported here. I have found and fixed a problem, but it only occurs when using a PCL based solution (not 'shared project' solution) and then only if the PCL code attempts to use the RSSDP libraries. A new package, v3.0.3 has been published that should fix this. Would be great to hear back on whether that package solves this issue, or if there still an outstanding issues I need to resolve.

Thanks.

Yortw commented 6 years ago

Did the new package help?

Yortw commented 6 years ago

Closing this after no response. Please re-open if there is more information or if you can confirm the problem still happens with latest package.