NatShare
NatShare is a lightweight, easy-to-use native sharing API for Unity Engine. NatShare supports sharing text, images (using a Texture2D
) and media files (using a string
path). Currently, you can save media to the camera roll and open the native sharing UI.
Setup Instructions
Add the following items to your Unity project's Packages/manifest.json
:
{
"scopedRegistries": [
{
"name": "NatML",
"url": "https://registry.npmjs.com",
"scopes": ["api.natsuite"]
}
],
"dependencies": {
"api.natsuite.natshare": "1.2.6"
}
}
Native Sharing
To share an image, you can use the SharePayload
:
Texture2D image = ...;
var payload = new SharePayload();
payload.AddImage(image);
payload.Commit();
You can share multiple items at once:
var payload = new SharePayload();
payload.AddText("Happy Birthday!");
payload.AddImage(image);
payload.AddMedia("/path/to/some/media/file.mp4");
payload.Commit();
The ISharePayload.Commit
function returns a task which when completed, returns a bool
indicating whether the sharing operation was successful:
async void ShareVideo () {
var payload = new SharePayload();
payload.AddMedia("/path/to/some/media/file.mp4");
var success = await payload.Commit();
Debug.Log($"Successfully shared items: {success}");
}
Saving to the Camera Roll
You can save images or media files to the camera roll with the SavePayload
:
Texture2D image = ...;
var payload = new SavePayload();
payload.AddImage(image);
payload.AddMedia("/path/to/some/media/file.gif");
payload.Commit();
Platform Notes
iOS
After building an Xcode project from Unity, add the following keys to the Info.plist
file with a good description:
NSPhotoLibraryUsageDescription
NSPhotoLibraryAddUsageDescription
Android
When building an Android project with Proguard stripping, make sure to add a keep rule for NatShare:
-keep class api.natsuite.** { *; }
Requirements
- Unity 2019.3+
- Android API level 24+
- iOS 13+
Resources
Thank you very much!