Skip to content
This repository was archived by the owner on May 15, 2024. It is now read-only.

Commit 35c5620

Browse files
authored
Merge pull request #2078 from dimonovdd/fix-share
fix share title on iOS
2 parents 268b1b1 + 824b140 commit 35c5620

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

Xamarin.Essentials/Share/Share.ios.cs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Drawing;
33
using System.Threading.Tasks;
44
using Foundation;
5+
using LinkPresentation;
56
using UIKit;
67

78
namespace Xamarin.Essentials
@@ -14,12 +15,12 @@ static async Task PlatformRequestAsync(ShareTextRequest request)
1415
var items = new List<NSObject>();
1516
if (!string.IsNullOrWhiteSpace(request.Text))
1617
{
17-
items.Add(new ShareActivityItemSource(new NSString(request.Text), request.Title));
18+
items.Add(GetShareItem(new NSString(request.Text), request.Title));
1819
}
1920

2021
if (!string.IsNullOrWhiteSpace(request.Uri))
2122
{
22-
items.Add(new ShareActivityItemSource(NSUrl.FromString(request.Uri), request.Title));
23+
items.Add(GetShareItem(NSUrl.FromString(request.Uri), request.Title));
2324
}
2425

2526
var activityController = new UIActivityViewController(items.ToArray(), null)
@@ -50,14 +51,10 @@ static async Task PlatformRequestAsync(ShareMultipleFilesRequest request)
5051

5152
var items = new List<NSObject>();
5253

53-
var hasTitel = !string.IsNullOrWhiteSpace(request.Title);
5454
foreach (var file in request.Files)
5555
{
5656
var fileUrl = NSUrl.FromFilename(file.FullPath);
57-
if (hasTitel)
58-
items.Add(new ShareActivityItemSource(fileUrl, request.Title)); // Share with title (subject)
59-
else
60-
items.Add(fileUrl); // No title specified
57+
items.Add(GetShareItem(fileUrl, request.Title));
6158
}
6259

6360
var activityController = new UIActivityViewController(items.ToArray(), null)
@@ -81,23 +78,40 @@ static async Task PlatformRequestAsync(ShareMultipleFilesRequest request)
8178
await vc.PresentViewControllerAsync(activityController, true);
8279
await src.Task;
8380
}
81+
82+
static NSObject GetShareItem(NSString obj, string title)
83+
=> new ShareActivityItemSource(obj, string.IsNullOrWhiteSpace(title) ? obj : title);
84+
85+
static NSObject GetShareItem(NSObject obj, string title)
86+
=> string.IsNullOrWhiteSpace(title)
87+
? obj
88+
: new ShareActivityItemSource(obj, title);
8489
}
8590

8691
class ShareActivityItemSource : UIActivityItemSource
8792
{
8893
readonly NSObject item;
89-
readonly string subject;
94+
readonly string title;
9095

91-
internal ShareActivityItemSource(NSObject item, string subject)
96+
internal ShareActivityItemSource(NSObject item, string title)
9297
{
9398
this.item = item;
94-
this.subject = subject;
99+
this.title = title;
95100
}
96101

97102
public override NSObject GetItemForActivity(UIActivityViewController activityViewController, NSString activityType) => item;
98103

99104
public override NSObject GetPlaceholderData(UIActivityViewController activityViewController) => item;
100105

101-
public override string GetSubjectForActivity(UIActivityViewController activityViewController, NSString activityType) => subject;
106+
public override LPLinkMetadata GetLinkMetadata(UIActivityViewController activityViewController)
107+
{
108+
var meta = new LPLinkMetadata();
109+
if (!string.IsNullOrWhiteSpace(title))
110+
meta.Title = title;
111+
if (item is NSUrl url)
112+
meta.Url = url;
113+
114+
return meta;
115+
}
102116
}
103117
}

0 commit comments

Comments
 (0)