Benjamin Biddle
Benjamin Biddle

Reputation: 35

Xamarin Forms - iOS not processing correctly

I am using the CrossDownManager plugin for Xamarin Forms Here When I run the method on Android it processes as expected. On iOS Debug.Writeline("Success!") isn't being hit like it was on Android.

Here is the code:

void ViewImage(string imageLink)
    {
        var downloadManager = CrossDownloadManager.Current;
        downloadManager.PathNameForDownloadedFile = new System.Func<IDownloadFile, string>(file =>
                    {
                        string path = DependencyService.Get<IImageSaver>().Save("YHTS" + DateTime.Today.Ticks.ToString() + ".jpg");
                        Debug.WriteLine("Success!");
                             return path;
                         });

        try
        {
            var file = downloadManager.CreateDownloadFile(imageLink);
            Debug.WriteLine("file created");
            downloadManager.Start(file);
            Debug.WriteLine("downloadstarted");
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.ToString());
        }
    }

For the life of me I can't figure out why the that code block isn't processed. Any ideas?

Upvotes: 0

Views: 95

Answers (1)

JoeTomks
JoeTomks

Reputation: 3276

This is an interesting issue as technically your code should work as expected. I've done a little digging and found a reply to a similar question here.

your options are many... including:

DEBUG preprocessor as you show in your question.

Use System.Diagnostic.Debug.WriteLine: Any calls to Debug.* will be removed by the compiler due to the [Conditional("DEBUG")] attribute being applied.

Create your own "Logger" class as a wrapper to the stdout writers and [Conditional("DEBUG")] it

Use Fody and re-weave the assemblies to remove/NOP/redirect the WriteLine I do this to redirect the calls to in internal log and upon crash or user stat requests, forward this log to our crash reporting servers. etc, .....

So there are a few alternatives to consider, one of the common suggestions I've seen is to use the fully qualified reference for WriteLine(); as such:

System.Console.WriteLine("woop woop");

I would suggest giving the above a try first.

Upvotes: 1

Related Questions