Code Monkey home page Code Monkey logo

react-native-share-menu's Introduction

react-native-share-menu

npm version

Add your app as a target for sharing from other apps and write iOS Share Extensions in React Native.

Installation

npm i --save react-native-share-menu

Automatic Linking (React Native 0.60+)

At the command line, in the ios directory:

pod install

Manual Linking (React Native 0.36+)

At the command line, in the project directory:

react-native link

Example Usage

import React, { useState, useEffect, useCallback } from "react";
import { AppRegistry, Text, View, Image, Button } from "react-native";
import ShareMenu, { ShareMenuReactView } from "react-native-share-menu";

type SharedItem = {
  mimeType: string,
  data: string,
  extraData: any,
};

const Test = () => {
  const [sharedData, setSharedData] = useState(null);
  const [sharedMimeType, setSharedMimeType] = useState(null);

  const handleShare = useCallback((item: ?SharedItem) => {
    if (!item) {
      return;
    }

    const { mimeType, data, extraData } = item;

    setSharedData(data);
    setSharedMimeType(mimeType);
    // You can receive extra data from your custom Share View
    console.log(extraData);
  }, []);

  useEffect(() => {
    ShareMenu.getInitialShare(handleShare);
  }, []);

  useEffect(() => {
    const listener = ShareMenu.addNewShareListener(handleShare);

    return () => {
      listener.remove();
    };
  }, []);

  if (!sharedMimeType && !sharedData) {
    // The user hasn't shared anything yet
    return null;
  }

  if (sharedMimeType === "text/plain") {
    // The user shared text
    return <Text>Shared text: {sharedData}</Text>;
  }

  if (sharedMimeType.startsWith("image/")) {
    // The user shared an image
    return (
      <View>
        <Text>Shared image:</Text>
        <Image source={{ uri: sharedData }} />
      </View>
    );
  }

  // The user shared a file in general
  return (
    <View>
      <Text>Shared mime type: {sharedMimeType}</Text>
      <Text>Shared file location: {sharedData}</Text>
    </View>
  );
};

const Share = () => {
  const [sharedData, setSharedData] = useState("");
  const [sharedMimeType, setSharedMimeType] = useState("");

  useEffect(() => {
    ShareMenuReactView.data().then(({ mimeType, data }) => {
      setSharedData(data);
      setSharedMimeType(mimeType);
    });
  }, []);

  return (
    <View>
      <Button
        title="Dismiss"
        onPress={() => {
          ShareMenuReactView.dismissExtension();
        }}
      />
      <Button
        title="Send"
        onPress={() => {
          // Share something before dismissing
          ShareMenuReactView.dismissExtension();
        }}
      />
      <Button
        title="Dismiss with Error"
        onPress={() => {
          ShareMenuReactView.dismissExtension("Something went wrong!");
        }}
      />
      <Button
        title="Continue In App"
        onPress={() => {
          ShareMenuReactView.continueInApp();
        }}
      />
      <Button
        title="Continue In App With Extra Data"
        onPress={() => {
          ShareMenuReactView.continueInApp({ hello: "from the other side" });
        }}
      />
      {sharedMimeType === "text/plain" && <Text>{sharedData}</Text>}
      {sharedMimeType.startsWith("image/") && (
        <Image source={{ uri: sharedData }} />
      )}
    </View>
  );
};

AppRegistry.registerComponent("Test", () => Test);
AppRegistry.registerComponent("ShareMenuModuleComponent", () => Share);

Or check the "example" directory for an example application.

How it looks

Android

iOS

Releasing a new version

$ npm version <minor|major|patch> && npm publish

Credits

react-native-share-menu's People

Contributors

ahmednasserswe avatar alexanderkjeldaas avatar alexgurr avatar andrewgable avatar blowupshappen avatar caiosba avatar carlobambo avatar dabakovich avatar denvers avatar dependabot[bot] avatar dimapaloskin avatar flogy avatar goodhyun avatar gustash avatar himmelarthur avatar hunteralan avatar infojunkie avatar jdmunro avatar kdelwat avatar kinnarshah08 avatar r0b0t3d avatar ryanlntn avatar sarachicad avatar scgough avatar swathysubhash avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-share-menu's Issues

Share audio?

Hi all, quick question, I saw the pr by @denvers and I'd like to ask you @caiosba : would that pr with few adjustments allow us to get the path of an audio file too?
And when will it be merged?
Thank you very much :)

"undefined is not an object (evaluating 'ShareMenu.getSharedText')"

On my Android device, I can't avoid getting this error. I've used the sample code, reverted react-native as far back as 0.25.1, cleared npm caches, started from scratch, double-checked the various android-specific files, etc. If I remove the getSharedText call and just use canned text as sharedText state string, everything works fine. Any ideas where this is coming from?

Running `pod install` throws error "`RNShareMenu` does not specify a Swift version"

After installing the package and then doing cd ios && pod install I get the following error:

[!] Unable to determine Swift version for the following pods:

- `RNShareMenu` does not specify a Swift version and none of the targets (`MyProject`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.

Adding SWIFT_VERSION to my project passes pods installation however it throws tons of swift related errors on build.

Any idea how to properly install this package?

Errors When Linking is Running on iOS Build

Followed all the instructions for installation and configuration but am getting the following build errors when trying to build the project after installing RNShareMenu. Any ideas on what could be going wrong?

Undefined symbols for architecture arm64:
  "static Foundation.URL._unconditionallyBridgeFromObjectiveC(__C.NSURL?) -> Foundation.URL", referenced from:
      @objc static RNShareMenu.ShareMenuMessenger.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenuMessenger.o)
  "Foundation.URL.scheme.getter : Swift.String?", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "type metadata accessor for Foundation.URL", referenced from:
      @objc static RNShareMenu.ShareMenuMessenger.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenuMessenger.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func10 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.initialShare.unsafeMutableAddressor : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined init with copy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.setter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined assign with take of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any]) in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "ObjectiveC._convertBoolToObjCBool(Swift.Bool) -> ObjectiveC.ObjCBool", referenced from:
      @objc static RNShareMenu.ShareMenu.requiresMainQueueSetup() -> Swift.Bool in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "associated type descriptor for _ObjectiveCType", referenced from:
      l_got.$s15_ObjectiveCTypes01_A11CBridgeablePTl in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$s15_ObjectiveCTypes01_A11CBridgeablePTl in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "associated type descriptor for RawValue", referenced from:
      l_got.$s8RawValueSYTl in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$s8RawValueSYTl in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "value witness table for Builtin.UnknownObject", referenced from:
      full type metadata for RNShareMenu.ShareMenuMessenger in libRNShareMenu.a(ShareMenuMessenger.o)
      full type metadata for __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenuMessenger.o)
      full type metadata for __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      full type metadata for RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Foundation):Swift.Dictionary._bridgeToObjectiveC() -> __C.NSDictionary", referenced from:
      RNShareMenu.ShareMenu.dispatchEvent(with: [Swift.String : Swift.String]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "static (extension in Foundation):Swift.Dictionary._unconditionallyBridgeFromObjectiveC(__C.NSDictionary?) -> [A : B]", referenced from:
      @objc static RNShareMenu.ShareMenuMessenger.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenuMessenger.o)
  "type metadata accessor for Swift.Dictionary", referenced from:
      type metadata accessor for [__C.UIApplicationOpenURLOptionsKey : Any] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for [Swift.String : Swift.String] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift.Hashable._rawHashValue(seed: Swift.Int) -> Swift.Int", referenced from:
      l_got.$sSH13_rawHashValue4seedS2i_tFTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSH13_rawHashValue4seedS2i_tFTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift.Hashable.hash(into: inout Swift.Hasher) -> ()", referenced from:
      l_got.$sSH4hash4intoys6HasherVz_tFTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSH4hash4intoys6HasherVz_tFTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift.Hashable.hashValue.getter : Swift.Int", referenced from:
      l_got.$sSH9hashValueSivgTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSH9hashValueSivgTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol descriptor for Swift.Hashable", referenced from:
      l_got.$sSHMp in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSHMp in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "base conformance descriptor for Swift.Hashable: Swift.Equatable", referenced from:
      l_got.$sSHSQTb in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSHSQTb in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for static Swift.Equatable.== infix(A, A) -> Swift.Bool", referenced from:
      l_got.$sSQ2eeoiySbx_xtFZTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSQ2eeoiySbx_xtFZTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol descriptor for Swift.Equatable", referenced from:
      l_got.$sSQMp in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSQMp in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Foundation):Swift.String._bridgeToObjectiveC() -> __C.NSString", referenced from:
      __C.UIApplicationOpenURLOptionsKey.init(rawValue: Swift.String) -> __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenuMessenger.o)
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.dispatchEvent(with: [Swift.String : Swift.String]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      __C.UIApplicationOpenURLOptionsKey.init(rawValue: Swift.String) -> __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      @nonobjc __C.NSUserDefaults.init(suiteName: Swift.String?) -> __C.NSUserDefaults? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "static (extension in Foundation):Swift.String._unconditionallyBridgeFromObjectiveC(__C.NSString?) -> Swift.String", referenced from:
      __C.UIApplicationOpenURLOptionsKey.rawValue.getter : Swift.String in libRNShareMenu.a(ShareMenuMessenger.o)
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      __C.UIApplicationOpenURLOptionsKey.rawValue.getter : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.String.init(stringInterpolation: Swift.DefaultStringInterpolation) -> Swift.String", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, utf8CodeUnitCount: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String", referenced from:
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func0 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func1 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func2 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func3 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func4 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func5 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func6 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "static Swift.String.== infix(Swift.String, Swift.String) -> Swift.Bool", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "type metadata for Swift.String", referenced from:
      lazy protocol witness table accessor for type Swift.String and conformance Swift.String : Swift._ObjectiveCBridgeable in Foundation in libRNShareMenu.a(ShareMenuMessenger.o)
      RNShareMenu.ShareMenu.supportedEvents() -> [Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      @objc RNShareMenu.ShareMenu.supportedEvents() -> [Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for [Swift.String : Swift.String] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for [Swift.String] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.dispatchEvent(with: [Swift.String : Swift.String]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "protocol witness table for Swift.String : Swift.Hashable in Swift", referenced from:
      protocol witness for Swift.Hashable.hashValue.getter : Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift.Hashable.hash(into: inout Swift.Hasher) -> () in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift.Hashable._rawHashValue(seed: Swift.Int) -> Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift._HasCustomAnyHashableRepresentation._toCustomAnyHashable() -> Swift.AnyHashable? in conformance __C.UIApplicationOpenURLOptionsKey : Swift._HasCustomAnyHashableRepresentation in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      type metadata accessor for [Swift.String : Swift.String] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.dispatchEvent(with: [Swift.String : Swift.String]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      protocol witness for Swift.Hashable.hashValue.getter : Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "protocol witness table for Swift.String : Swift.Equatable in Swift", referenced from:
      protocol witness for static Swift.Equatable.== infix(A, A) -> Swift.Bool in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Equatable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for static Swift.Equatable.== infix(A, A) -> Swift.Bool in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Equatable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol witness table for Swift.String : Swift.TextOutputStreamable in Swift", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol conformance descriptor for Swift.String : Swift._ObjectiveCBridgeable in Foundation", referenced from:
      lazy protocol witness table accessor for type Swift.String and conformance Swift.String : Swift._ObjectiveCBridgeable in Foundation in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type Swift.String and conformance Swift.String : Swift._ObjectiveCBridgeable in Foundation in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol witness table for Swift.String : Swift.CustomStringConvertible in Swift", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift.RawRepresentable.rawValue.getter : A.RawValue", referenced from:
      l_got.$sSY8rawValue03RawB0QzvgTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSY8rawValue03RawB0QzvgTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift.RawRepresentable.init(rawValue: A.RawValue) -> A?", referenced from:
      l_got.$sSY8rawValuexSg03RawB0Qz_tcfCTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSY8rawValuexSg03RawB0Qz_tcfCTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol descriptor for Swift.RawRepresentable", referenced from:
      l_got.$sSYMp in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$sSYMp in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Foundation):Swift.Array._bridgeToObjectiveC() -> __C.NSArray", referenced from:
      @objc RNShareMenu.ShareMenu.supportedEvents() -> [Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      reabstraction thunk helper from @callee_unowned @convention(block) (@unowned __C.NSArray?) -> () to @escaping @callee_guaranteed (@guaranteed [Any]?) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.Array.init(arrayLiteral: A...) -> [A]", referenced from:
      RNShareMenu.ShareMenu.supportedEvents() -> [Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.getSharedText(callback: ([Any]?) -> ()) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "type metadata accessor for Swift.Array", referenced from:
      type metadata accessor for [__C.NSDictionary] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for [Swift.String] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol conformance descriptor for [A] : Swift.Collection in Swift", referenced from:
      lazy protocol witness table accessor for type [__C.NSDictionary] and conformance [A] : Swift.Collection in Swift in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      lazy protocol witness table accessor for type [Swift.String] and conformance [A] : Swift.Collection in Swift in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Swift):Swift.Collection.first.getter : A.Element?", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "type metadata accessor for Swift.Optional", referenced from:
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func10 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.initialShare.unsafeMutableAddressor : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined init with copy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.setter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined assign with take of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.init() -> RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.messageShare(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "Swift._bridgeAnyObjectToAny(Swift.AnyObject?) -> Any", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never", referenced from:
      static RNShareMenu.ShareMenu.shared.getter : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.targetUrlScheme.getter : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol descriptor for Swift._SwiftNewtypeWrapper", referenced from:
      l_got.$ss20_SwiftNewtypeWrapperMp in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss20_SwiftNewtypeWrapperMp in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "base conformance descriptor for Swift._SwiftNewtypeWrapper: Swift.RawRepresentable", referenced from:
      l_got.$ss20_SwiftNewtypeWrapperPSYTb in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss20_SwiftNewtypeWrapperPSYTb in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "base conformance descriptor for Swift._SwiftNewtypeWrapper: Swift._HasCustomAnyHashableRepresentation", referenced from:
      l_got.$ss20_SwiftNewtypeWrapperPs35_HasCustomAnyHashableRepresentationTb in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss20_SwiftNewtypeWrapperPs35_HasCustomAnyHashableRepresentationTb in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Swift):Swift._SwiftNewtypeWrapper< where A: Swift.Hashable, A.RawValue: Swift.Hashable>.hashValue.getter : Swift.Int", referenced from:
      protocol witness for Swift.Hashable.hashValue.getter : Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift.Hashable.hashValue.getter : Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Swift):Swift._SwiftNewtypeWrapper< where A: Swift.Hashable, A.RawValue: Swift.Hashable>._rawHashValue(seed: Swift.Int) -> Swift.Int", referenced from:
      protocol witness for Swift.Hashable._rawHashValue(seed: Swift.Int) -> Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift.Hashable._rawHashValue(seed: Swift.Int) -> Swift.Int in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Swift):Swift._SwiftNewtypeWrapper< where A: Swift.Hashable, A.RawValue: Swift.Hashable>._toCustomAnyHashable() -> Swift.AnyHashable?", referenced from:
      protocol witness for Swift._HasCustomAnyHashableRepresentation._toCustomAnyHashable() -> Swift.AnyHashable? in conformance __C.UIApplicationOpenURLOptionsKey : Swift._HasCustomAnyHashableRepresentation in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift._HasCustomAnyHashableRepresentation._toCustomAnyHashable() -> Swift.AnyHashable? in conformance __C.UIApplicationOpenURLOptionsKey : Swift._HasCustomAnyHashableRepresentation in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Swift):Swift._SwiftNewtypeWrapper< where A: Swift.Hashable, A.RawValue: Swift.Hashable>.hash(into: inout Swift.Hasher) -> ()", referenced from:
      protocol witness for Swift.Hashable.hash(into: inout Swift.Hasher) -> () in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift.Hashable.hash(into: inout Swift.Hasher) -> () in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "static (extension in Swift):Swift._SwiftNewtypeWrapper< where A.RawValue: Swift._ObjectiveCBridgeable>._forceBridgeFromObjectiveC(_: A.RawValue._ObjectiveCType, result: inout A?) -> ()", referenced from:
      protocol witness for static Swift._ObjectiveCBridgeable._forceBridgeFromObjectiveC(_: A._ObjectiveCType, result: inout A?) -> () in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for static Swift._ObjectiveCBridgeable._forceBridgeFromObjectiveC(_: A._ObjectiveCType, result: inout A?) -> () in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "static (extension in Swift):Swift._SwiftNewtypeWrapper< where A.RawValue: Swift._ObjectiveCBridgeable>._conditionallyBridgeFromObjectiveC(_: A.RawValue._ObjectiveCType, result: inout A?) -> Swift.Bool", referenced from:
      protocol witness for static Swift._ObjectiveCBridgeable._conditionallyBridgeFromObjectiveC(_: A._ObjectiveCType, result: inout A?) -> Swift.Bool in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for static Swift._ObjectiveCBridgeable._conditionallyBridgeFromObjectiveC(_: A._ObjectiveCType, result: inout A?) -> Swift.Bool in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "static (extension in Swift):Swift._SwiftNewtypeWrapper< where A.RawValue: Swift._ObjectiveCBridgeable>._unconditionallyBridgeFromObjectiveC(A.RawValue._ObjectiveCType?) -> A", referenced from:
      protocol witness for static Swift._ObjectiveCBridgeable._unconditionallyBridgeFromObjectiveC(A._ObjectiveCType?) -> A in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for static Swift._ObjectiveCBridgeable._unconditionallyBridgeFromObjectiveC(A._ObjectiveCType?) -> A in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "(extension in Swift):Swift._SwiftNewtypeWrapper< where A.RawValue: Swift._ObjectiveCBridgeable>._bridgeToObjectiveC() -> A.RawValue._ObjectiveCType", referenced from:
      protocol witness for Swift._ObjectiveCBridgeable._bridgeToObjectiveC() -> A._ObjectiveCType in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for Swift._ObjectiveCBridgeable._bridgeToObjectiveC() -> A._ObjectiveCType in conformance __C.UIApplicationOpenURLOptionsKey : Swift._ObjectiveCBridgeable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol descriptor for Swift._ObjectiveCBridgeable", referenced from:
      l_got.$ss21_ObjectiveCBridgeableMp in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss21_ObjectiveCBridgeableMp in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for static Swift._ObjectiveCBridgeable._forceBridgeFromObjectiveC(_: A._ObjectiveCType, result: inout A?) -> ()", referenced from:
      l_got.$ss21_ObjectiveCBridgeableP016_forceBridgeFromA1C_6resulty01_A5CTypeQz_xSgztFZTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss21_ObjectiveCBridgeableP016_forceBridgeFromA1C_6resulty01_A5CTypeQz_xSgztFZTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for static Swift._ObjectiveCBridgeable._conditionallyBridgeFromObjectiveC(_: A._ObjectiveCType, result: inout A?) -> Swift.Bool", referenced from:
      l_got.$ss21_ObjectiveCBridgeableP024_conditionallyBridgeFromA1C_6resultSb01_A5CTypeQz_xSgztFZTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss21_ObjectiveCBridgeableP024_conditionallyBridgeFromA1C_6resultSb01_A5CTypeQz_xSgztFZTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for static Swift._ObjectiveCBridgeable._unconditionallyBridgeFromObjectiveC(A._ObjectiveCType?) -> A", referenced from:
      l_got.$ss21_ObjectiveCBridgeableP026_unconditionallyBridgeFromA1Cyx01_A5CTypeQzSgFZTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss21_ObjectiveCBridgeableP026_unconditionallyBridgeFromA1Cyx01_A5CTypeQzSgFZTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift._ObjectiveCBridgeable._bridgeToObjectiveC() -> A._ObjectiveCType", referenced from:
      l_got.$ss21_ObjectiveCBridgeableP09_bridgeToA1C01_A5CTypeQzyFTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss21_ObjectiveCBridgeableP09_bridgeToA1C01_A5CTypeQzyFTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.DefaultStringInterpolation.appendInterpolation<A where A: Swift.CustomStringConvertible, A: Swift.TextOutputStreamable>(A) -> ()", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.DefaultStringInterpolation.appendLiteral(Swift.String) -> ()", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.DefaultStringInterpolation.init(literalCapacity: Swift.Int, interpolationCount: Swift.Int) -> Swift.DefaultStringInterpolation", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift._allocateUninitializedArray<A>(Builtin.Word) -> ([A], Builtin.RawPointer)", referenced from:
      RNShareMenu.ShareMenu.supportedEvents() -> [Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.getSharedText(callback: ([Any]?) -> ()) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.== infix<A where A: Swift.RawRepresentable, A.RawValue: Swift.Equatable>(A, A) -> Swift.Bool", referenced from:
      protocol witness for static Swift.Equatable.== infix(A, A) -> Swift.Bool in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Equatable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      protocol witness for static Swift.Equatable.== infix(A, A) -> Swift.Bool in conformance __C.UIApplicationOpenURLOptionsKey : Swift.Equatable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "protocol descriptor for Swift._HasCustomAnyHashableRepresentation", referenced from:
      l_got.$ss35_HasCustomAnyHashableRepresentationMp in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss35_HasCustomAnyHashableRepresentationMp in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "method descriptor for Swift._HasCustomAnyHashableRepresentation._toCustomAnyHashable() -> Swift.AnyHashable?", referenced from:
      l_got.$ss35_HasCustomAnyHashableRepresentationP03_tobcD0s0cD0VSgyFTq in libRNShareMenu.a(ShareMenuMessenger.o)
      l_got.$ss35_HasCustomAnyHashableRepresentationP03_tobcD0s0cD0VSgyFTq in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
     (maybe you meant: default argument 2 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> (), default argument 1 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> () )
  "type metadata for Any", referenced from:
      @objc static RNShareMenu.ShareMenuMessenger.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenuMessenger.o)
      type metadata accessor for [__C.UIApplicationOpenURLOptionsKey : Any] in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.getSharedText(callback: ([Any]?) -> ()) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      reabstraction thunk helper from @callee_unowned @convention(block) (@unowned __C.NSArray?) -> () to @escaping @callee_guaranteed (@guaranteed [Any]?) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "__swift_FORCE_LOAD_$_swiftCompatibility50", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibility50_$_RNShareMenu in libRNShareMenu.a(ShareMenuMessenger.o)
      __swift_FORCE_LOAD_$_swiftCompatibility50_$_RNShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
     (maybe you meant: __swift_FORCE_LOAD_$_swiftCompatibility50_$_RNShareMenu)
  "__swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements_$_RNShareMenu in libRNShareMenu.a(ShareMenuMessenger.o)
      __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements_$_RNShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
     (maybe you meant: __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements_$_RNShareMenu)
  "_swift_beginAccess", referenced from:
      static RNShareMenu.ShareMenu._shared.getter : RNShareMenu.ShareMenu? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.shared.getter : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.getter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.setter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.modify : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.getter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.setter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_bridgeObjectRelease", referenced from:
      @objc static RNShareMenu.ShareMenuMessenger.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenuMessenger.o)
      __C.UIApplicationOpenURLOptionsKey.init(rawValue: Swift.String) -> __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenuMessenger.o)
      RNShareMenu.ShareMenu.sharedData.setter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined assign with take of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any]) in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined consume of Swift.String? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_bridgeObjectRetain", referenced from:
      __C.UIApplicationOpenURLOptionsKey.init(rawValue: Swift.String) -> __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenuMessenger.o)
      key path setter for RNShareMenu.ShareMenu.sharedData : [Swift.String : Swift.String]? : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.getter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.setter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined init with copy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined copy of Swift.String? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.supportedEvents() -> [Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_checkMetadataState", referenced from:
      outlined init with copy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined assign with take of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any]) in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.init() -> RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.messageShare(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_dynamicCast", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_endAccess", referenced from:
      static RNShareMenu.ShareMenu._shared.getter : RNShareMenu.ShareMenu? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.shared.getter : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.getter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.setter : [Swift.String : Swift.String]? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.sharedData.modify : [Swift.String : Swift.String]? with unmangled suffix ".resume.0" in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.getter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.setter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_getForeignTypeMetadata", referenced from:
      type metadata accessor for __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenuMessenger.o)
      type metadata accessor for __C.UIApplicationOpenURLOptionsKey in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_getInitializedObjCClass", referenced from:
      type metadata accessor for RNShareMenu.ShareMenuMessenger in libRNShareMenu.a(ShareMenuMessenger.o)
      type metadata accessor for RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for __C.UIApplication in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for __C.NSUserDefaults in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for __C.NSDictionary in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_getObjCClassFromMetadata", referenced from:
      __C.NSUserDefaults.__allocating_init(suiteName: Swift.String?) -> __C.NSUserDefaults? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_getObjCClassMetadata", referenced from:
      @objc static RNShareMenu.ShareMenuMessenger.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenuMessenger.o)
      @objc static RNShareMenu.ShareMenu.shared.getter : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for __C.UIApplication in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      @objc static RNShareMenu.ShareMenu.requiresMainQueueSetup() -> Swift.Bool in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for __C.NSUserDefaults in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      type metadata accessor for __C.NSDictionary in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_getTupleTypeMetadata3", referenced from:
      _globalinit_33_AE30FAC0B9FB26090D38533F91697B34_func10 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.initialShare.unsafeMutableAddressor : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined init with copy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      static RNShareMenu.ShareMenu.initialShare.setter : (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined assign with take of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any]) in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      outlined destroy of (__C.UIApplication, Foundation.URL, [__C.UIApplicationOpenURLOptionsKey : Any])? in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_getWitnessTable", referenced from:
      lazy protocol witness table accessor for type __C.UIApplicationOpenURLOptionsKey and conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type __C.UIApplicationOpenURLOptionsKey and conformance __C.UIApplicationOpenURLOptionsKey : Swift.RawRepresentable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type __C.UIApplicationOpenURLOptionsKey and conformance __C.UIApplicationOpenURLOptionsKey : Swift._HasCustomAnyHashableRepresentation in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type __C.UIApplicationOpenURLOptionsKey and conformance __C.UIApplicationOpenURLOptionsKey : Swift.Equatable in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type __C.UIApplicationOpenURLOptionsKey and conformance __C.UIApplicationOpenURLOptionsKey : Swift._SwiftNewtypeWrapper in __C_Synthesized in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type Swift.String and conformance Swift.String : Swift._ObjectiveCBridgeable in Foundation in libRNShareMenu.a(ShareMenuMessenger.o)
      lazy protocol witness table accessor for type __C.UIApplicationOpenURLOptionsKey and conformance __C.UIApplicationOpenURLOptionsKey : Swift.Hashable in __C_Synthesized in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_isaMask", referenced from:
      key path getter for RNShareMenu.ShareMenu.sharedData : [Swift.String : Swift.String]? : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      key path setter for RNShareMenu.ShareMenu.sharedData : [Swift.String : Swift.String]? : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      key path getter for RNShareMenu.ShareMenu.hasListeners : Swift.Bool : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      key path setter for RNShareMenu.ShareMenu.hasListeners : Swift.Bool : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      key path getter for RNShareMenu.ShareMenu._targetUrlScheme : Swift.String? : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      key path setter for RNShareMenu.ShareMenu._targetUrlScheme : Swift.String? : RNShareMenu.ShareMenu in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.targetUrlScheme.getter : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_once", referenced from:
      RNShareMenu.NO_URL_TYPES_ERROR_MESSAGE.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.NO_URL_SCHEMES_ERROR_MESSAGE.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.NO_SCHEME_ERROR_MESSAGE.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.NO_APP_GROUP_ERROR.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.USER_DEFAULTS_KEY.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.URL_SCHEME_INFO_PLIST_KEY.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.MIME_TYPE_KEY.unsafeMutableAddressor : Swift.String in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      ...
  "_swift_release", referenced from:
      ___swift_destroy_boxed_opaque_existential_0 in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_slowAlloc", referenced from:
      ___swift_allocate_value_buffer in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
  "_swift_unknownObjectRelease", referenced from:
      RNShareMenu.ShareMenu.share(application: __C.UIApplication, openUrl: Foundation.URL, options: [__C.UIApplicationOpenURLOptionsKey : Any]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
      RNShareMenu.ShareMenu.dispatchEvent(with: [Swift.String : Swift.String]) -> () in libRNShareMenu.a(ShareMenu-E3B576B55F6870B8.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Showing first 200 notices only



Build failed    7/29/20, 12:19 PM    109.1 seconds

Execution failed for task ':react-native-share-menu:verifyReleaseResources'.

I am trying to build my app
I got this issue.

/Users/jiwoopark/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/8d9a7290a1492ddfdf79902ec2a56368/res/values-v26/values-v26.xml:9:5-12:13: AAPT: error: resource android:attr/colorError not found.

/Users/jiwoopark/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/8d9a7290a1492ddfdf79902ec2a56368/res/values-v26/values-v26.xml:13:5-16:13: AAPT: error: resource android:attr/colorError not found.

/Users/jiwoopark/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/8d9a7290a1492ddfdf79902ec2a56368/res/values-v26/values-v26.xml:17:5-93: AAPT: error: style attribute 'android:attr/keyboardNavigationCluster' not found.

/Users/jiwoopark/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/8d9a7290a1492ddfdf79902ec2a56368/res/values/values.xml:251:5-69: AAPT: error: resource android:attr/fontStyle not found.

/Users/jiwoopark/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/8d9a7290a1492ddfdf79902ec2a56368/res/values/values.xml:251:5-69: AAPT: error: resource android:attr/font not found.

/Users/jiwoopark/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/8d9a7290a1492ddfdf79902ec2a56368/res/values/values.xml:251:5-69: AAPT: error: resource android:attr/fontWeight not found.

Is cache issue?

Task :react-native-share-menu:verifyReleaseResources FAILED

Whenever I try to build release build for android it throws an error. I am using React Native 0.60.5 on a windows.
It throws the following error:

Task :react-native-share-menu:verifyReleaseResources FAILED
FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':react-native-share-menu:verifyReleaseResources'.

1 exception was raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
error: resource android:style/TextAppearance.Material.Widget.Button.Borderless.Colored not found.
error: resource android:style/TextAppearance.Material.Widget.Button.Colored not found.

Share Extension Crashes when sharing a screenshot

When I try to share a screenshot on iPhone, the extension crashes as soon as a I call ShareMenuReactView.data(). Works fine if I save the screenshot to photos and then share the photo from the photos app. Is there a different way of handling screenshot shares, or is this a bug?

Sharing creates new instances AND single instance app not receiving shared URL

My issue is a combination of:
#18
and
#25

Running:
react-native: 0.59.9
react: 16.8.3
react-native-share-menu: 2.2.2

When I set:
android:launchMode="singleTop"

My app receives Shared URLs while the app is already running (desired effect), but it ends up creating multiple instances of my app (undesired effect).

When I set the launchMode to "singleTask" or "singleInstance", my app does not receive Shared URLS while the app is already running (undesired effect), but also doesn't create multiple instances (desired effect). This is the case even when ShareMenu.getSharedText (see below) is in an AppState listener.

Setting
android:documentLaunchMode="never"

Also prevents my app from receiving Shared URLs while the app is currently running (undesired effect).

Is there a workaround for this? An alternative solution?

componentWillMount() {
        AppState.addEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = (nextAppState) => {
        if (
          this.state.appState.match(/inactive|background/) &&
          nextAppState === 'active'
        ) {
            if(Platform.OS === 'android') {   
                ShareMenu.getSharedText((text) => {
                    if (text && text.length) {
                        if(text !== this.props.activeTab.site.url) {
                            this.setSite(text);
                        }
                    }
                })
            }
        }
        this.setState({appState: nextAppState});
};

getInitialShare and addNewShareListener passing null SharedItem to callback

Current Behavior
The SharedItem passed into the callback from getInitialShare and addNewShareListener is null.

Expected Behavior
The SharedItem is an object containing at least mimeType and data properties.

Steps To Reproduce

  1. Clone this repo
  2. yarn install
  3. yarn start and yarn react-native run-android
  4. Go into your favorite browser and hit the share icon for a link
  5. Select the test app
    Expected Result: logs item: <SharedItem> to the console
    Actual Result: logs item: null to the console

Troubleshooting
The provided example app works perfectly fine for me, so I have a feeling it's either an incompatibility issue with react-native-bootsplash or deep linking in react-navigation or simply something (probably in AndroidManifest.xml) that I have missed or misconfigured. The example repo I made is an extremely stripped down and modified version of my app, but it has all the same parts that seemed relevant.

I have tested this with the share function from Brave and Twitter, both of which work on the example app.

Environment

software version
Android 10
node 12.18.3
yarn 1.22.4
react 16.13.1
react-native 0.63.2
react-native-bootsplash 2.2.5
@react-navigation/native 5.7.3
react-native-share-menu 5.0.1

Prevent sharing actions from creating new instances of the App

On Android, when any other application uses the system share menu to open and send data to the Application, a new instance is created.

A common way to prevent it would be just forcing singleInstance or singleTask in AndroidManifest.xml:

<activity
...
android:launchMode="singleInstance"
...>
</activity>

But when this is set the following error is thrown:

Attempt to invoke virtual method 'android.content.Intent android.app.Activity.getIntent()' on a null object reference
getSharedText
    ShareMenuModule.java:35
invoke
    Method.java
invoke
    JavaMethodWrapper.java:374
invoke
    JavaModuleWrapper.java:162
run
    NativeRunnable.java
handleCallback
    Handler.java:751
dispatchMessage
    Handler.java:95
dispatchMessage
    MessageQueueThreadHandler.java:31
loop
    Looper.java:154
run
    MessageQueueThreadImpl.java:194
run
    Thread.java:761

ShareMenuPackage is not abstract and does not override abstract method createJSModules

Hi.

Trying to run the example code from the Readme.
I did automatic installation with react-native link and then verified and added some missing pieces in MainActivity.java and AndroidManifest.xml.

Upon running react-native run-android I get this error:

[...]/node_modules/react-native-share-menu/android/src/main/java/com/meedan/ShareMenuPackage.java:15: error: ShareMenuPackage is not abstract and does not override abstract method createJSModules() in ReactPackage
public class ShareMenuPackage implements ReactPackage {
       ^
1 error
:react-native-share-menu:compileReleaseJavaWithJavac FAILED

FAILURE: Build failed with an exception.
    "react-native": "^0.39.0",
    "react-native-share-menu": "2.2.0"

What can I do here?
Thank you.

Support Sharing Files

As requested on #41 and #28, adding the ability to share any file would fix these and massively improve the possibilities of this package.

Build failing for IOS- 'sharedApplication' is unavailable: not available on iOS (App Extension) and openURL' is unavailable: not available on iOS (App Extension)

First of all thanks for the awesome library.

I just updated the library to the latest version as now it also supports ios share extension and the documentation is well defined.

So, I checked the latest version on Android, and it's working fine without any hassle.

I tried to implement the same for IOS and followed each point mentioned in doc for ios.
Now after doing everything, When I tried to build the ios app it failed.

'sharedApplication' is unavailable: not available on iOS (App Extension)
'openURL' is unavailable: not available on iOS (App Extension)

ENV

System:
    OS: macOS Mojave 10.14.5
    CPU: (4) x64 Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz
    Memory: 255.73 MB / 8.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.16.0 - /usr/local/opt/node@10/bin/node
    Yarn: 1.12.3 - /usr/local/bin/yarn
    npm: 6.9.0 - /usr/local/opt/node@10/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
  IDEs:
    Xcode: 11.2.1/11B53 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native: 0.61.5 => 0.61.5 
  npmGlobalPackages:
    react-native-cli: 2.0.1

podfile

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'app' do
  permissions_path = '../node_modules/react-native-permissions/ios'
  pod 'Permission-Contacts', :path => "#{permissions_path}/Contacts.podspec"
  pod 'GoogleSignIn' # for RNGoogleSignin
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  target 'appTest' do
    inherit! :search_paths
    # Pods for testing
  end

  use_native_modules!
end

target 'ShareExtension' do
  permissions_path = '../node_modules/react-native-permissions/ios'
  pod 'Permission-Contacts', :path => "#{permissions_path}/Contacts.podspec"
  pod 'GoogleSignIn' # for RNGoogleSignin
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'RNShareMenu', :path => '../node_modules/react-native-share-menu'

  use_native_modules!

end

For ShareExtension I've set Require Only App-Extension Safe API in build settings to NO

AppDelegate.m

#import "AppDelegate.h"
#import <RNShareMenu/ShareMenuManager.h>


#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)app
        openURL:(NSURL *)url
        options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [ShareMenuManager application:app openURL:url options:options];
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}

@end

Execute the callback in the background (so without opening the interface)

I am new to using this module and after searching for a while I couldn't find a way to accomplish what I need. Did I miss something?

I would have this need: my application should show an interface if started normally, but if started via a share button (from another app) it should perform some tasks in the background without opening the application and hindering the user.
Thanks a lot in advance to everyone who will help me.

Receive share also when app is already running?

Hi, thanks for your module! It does work on my app โ€“ but only when the app was not started yet. If the app is already running in the background, nothing happens.

It's also kind of clear to me: componentWillMount() was already called, so there is no trigger at this point. But is there still a way to get this working, i.e. that I can share a (new) text even when my target app is already running?

Here's my current code:

componentWillMount() {
  ShareMenu.getSharedText((text) => {
    console.log(text);
  });
}

Release mode

Hello @ahmednasserswe do you have any tips for running it in release mode on a device?
I tried to use offline bundle by setting jsCodeLocation to [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
No luck. Main app can access this bundle but it looks like share extension fails to do it.

Module not receiving new shared data when app is open

I'm not sure it's a bug or not, but the module doesn't get new data when app is open and in background mode. let me tell you what I did.

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize"
        android:screenOrientation="portrait"
        android:launchMode="singleTask"
      >
        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
          <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
        </intent-filter>

        <intent-filter>
          <action android:name="android.intent.action.SEND" />
          <category android:name="android.intent.category.DEFAULT" />
          <data android:mimeType="text/plain" />
        </intent-filter>
      </activity>

the most important thing in above config is that app is running in singleTask mode. although I tested other launchModes as well.

class ApplicationContainer extends React.Component {
  constructor(props) {
    super(props)
  }

  componentDidMount() {
    AppState.addEventListener('change', this.stateListener.bind(this))
  }

  handleAppStateChange(nextState) {
      ShareMenu.getSharedText((text) => this.onNewSharedText(text))
  }

  onNewSharedText(text) {
    if (!text || text.length === 0) {
      return false
    }
    
    console.log(text) ---> Here it says text is blank

    ShareMenu.clearSharedText()
  }

  render() {
  }
}

As you see I used ShareMenu inside AppState change function. so when you open the app through sending a share link, or when it comes from background to active mode, I check for new shared text. it works perfect when app is closed, but when app is open and working in background , I can't get new shared text.

Unfortunately I'm not an android developer to help you but I think you should develop an intent listener or something similar for this reason. I checked Telegram (https://github.com/DrKLO/Telegram) source code but didn't understand how they are handling this situation.

thanks.

Move to Listeners

Moving the package to listeners would make sharing work even if the app is already running on the background. This can have a common JS API for both Android and iOS

Share the logic between Main and Share app on iOS?

Is it possible to share the logic between them, or any way to achieve the following:

  1. Access hooks from Main app
  2. Access AsyncStorage in Share.js from Main app
  3. Import third-party packages to Share.js (e.g. Apollo)

I tried adding the AsyncStorage directly to the Share.js but I get this error:

Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication)

I think I would also be ok if there is a way to have a separated package.json for Share.js if necessary, but @Gustash maybe you can put some more light on this topic?

Example not working

Try to build the example project and got this error at the very first step npm install. Seems to be a problem with the "nan" module.
./node_modules/nan/nan_maybe_43_inl.h:88:15: error: no member named 'ForceSet' in 'v8::Object' return obj->ForceSet(GetCurrentContext(), key, value, attribs);
node version: v11.2.0

complete log:

npm WARN deprecated [email protected]: connect 2.x series is deprecated
npm WARN deprecated [email protected]: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated [email protected]: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
npm WARN deprecated [email protected]: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated [email protected]: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated [email protected]: cross-spawn no longer requires a build toolchain, use it instead
npm WARN deprecated [email protected]: This package is unmaintained. Use @sinonjs/formatio instead
npm WARN deprecated [email protected]: This package has been deprecated in favour of @sinonjs/samsam
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: This package has been deprecated in favour of @sinonjs/samsam

> [email protected] install /Users/vahidbashiri/Work/react-native-share-menu/example/node_modules/bufferutil
> node-gyp rebuild

  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
../src/bufferutil.cc:49:40: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> bufferObj = info[0]->ToObject();
                                       ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:56:42: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
      Local<Object> src = array->Get(i)->ToObject();
                                         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:67:41: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> buffer_obj = info[0]->ToObject();
                                        ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:69:39: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> mask_obj = info[1]->ToObject();
                                      ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:88:41: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> buffer_obj = info[0]->ToObject();
                                        ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:89:39: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> mask_obj = info[1]->ToObject();
                                      ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:91:41: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> output_obj = info[2]->ToObject();
                                        ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:92:40: warning: 'Int32Value' is deprecated: Use maybe version [-Wdeprecated-declarations]
    unsigned int dataOffset = info[3]->Int32Value();
                                       ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2572:3: note: 'Int32Value' has been explicitly marked deprecated
      here
  V8_DEPRECATED("Use maybe version", int32_t Int32Value() const);
  ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/bufferutil.cc:93:36: warning: 'Int32Value' is deprecated: Use maybe version [-Wdeprecated-declarations]
    unsigned int length = info[4]->Int32Value();
                                   ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2572:3: note: 'Int32Value' has been explicitly marked deprecated
      here
  V8_DEPRECATED("Use maybe version", int32_t Int32Value() const);
  ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
9 warnings generated.
  SOLINK_MODULE(target) Release/bufferutil.node

> [email protected] install /Users/vahidbashiri/Work/react-native-share-menu/example/node_modules/fsevents
> node install

node-pre-gyp WARN Using needle for node-pre-gyp https download
[fsevents] Success: "/Users/vahidbashiri/Work/react-native-share-menu/example/node_modules/fsevents/lib/binding/Release/node-v67-darwin-x64/fse.node" is installed via remote

> [email protected] install /Users/vahidbashiri/Work/react-native-share-menu/example/node_modules/utf-8-validate
> node-gyp rebuild

  CXX(target) Release/obj.target/validation/src/validation.o
In file included from ../src/validation.cc:15:
In file included from ../node_modules/nan/nan.h:190:
../node_modules/nan/nan_maybe_43_inl.h:88:15: error: no member named 'ForceSet' in 'v8::Object'
  return obj->ForceSet(GetCurrentContext(), key, value, attribs);
         ~~~  ^
In file included from ../src/validation.cc:15:
In file included from ../node_modules/nan/nan.h:196:
In file included from ../node_modules/nan/nan_new.h:189:
../node_modules/nan/nan_implementation_12_inl.h:345:28: warning: 'New' is deprecated: Use Isolate* version
      [-Wdeprecated-declarations]
  return v8::StringObject::New(value).As<v8::StringObject>();
                           ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:5241:3: note: 'New' has been explicitly marked deprecated here
  V8_DEPRECATED("Use Isolate* version",
  ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/validation.cc:15:
../node_modules/nan/nan.h:816:18: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context)
      [-Wdeprecated-declarations]
    return node::MakeCallback(
                 ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:171:1: note: 'MakeCallback' has been explicitly marked
      deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:91:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/validation.cc:15:
../node_modules/nan/nan.h:830:18: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context)
      [-Wdeprecated-declarations]
    return node::MakeCallback(
                 ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:164:1: note: 'MakeCallback' has been explicitly marked
      deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:91:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/validation.cc:15:
../node_modules/nan/nan.h:844:18: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context)
      [-Wdeprecated-declarations]
    return node::MakeCallback(
                 ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:157:1: note: 'MakeCallback' has been explicitly marked
      deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:91:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
In file included from ../src/validation.cc:15:
../node_modules/nan/nan.h:890:44: warning: 'ToString' is deprecated: Use maybe version [-Wdeprecated-declarations]
      v8::Local<v8::String> string = from->ToString();
                                           ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2548:10: note: 'ToString' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<String> ToString() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/validation.cc:15:
../node_modules/nan/nan.h:900:27: warning: 'WriteUtf8' is deprecated: Use Isolate* version [-Wdeprecated-declarations]
        length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);
                          ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2753:3: note: 'WriteUtf8' has been explicitly marked deprecated
      here
  V8_DEPRECATED("Use Isolate* version",
  ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/validation.cc:15:
../node_modules/nan/nan.h:1447:31: warning: 'MakeCallback' is deprecated: Use MakeCallback(..., async_context)
      [-Wdeprecated-declarations]
    return scope.Escape(node::MakeCallback(
                              ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:171:1: note: 'MakeCallback' has been explicitly marked
      deprecated here
NODE_DEPRECATED("Use MakeCallback(..., async_context)",
^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/node.h:91:20: note: expanded from macro 'NODE_DEPRECATED'
    __attribute__((deprecated(message))) declarator
                   ^
../src/validation.cc:131:41: warning: 'ToObject' is deprecated: Use maybe version [-Wdeprecated-declarations]
    Local<Object> buffer_obj = info[0]->ToObject();
                                        ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8.h:2549:10: note: 'ToObject' has been explicitly marked deprecated
      here
  inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
         ^
/Users/vahidbashiri/.node-gyp/11.2.0/include/node/v8config.h:326:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
8 warnings and 1 error generated.
make: *** [Release/obj.target/validation/src/validation.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
gyp ERR! System Darwin 18.2.0
gyp ERR! command "/usr/local/Cellar/node/11.2.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/vahidbashiri/Work/react-native-share-menu/example/node_modules/utf-8-validate
gyp ERR! node -v v11.2.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok

> [email protected] postinstall /Users/vahidbashiri/Work/react-native-share-menu/example/node_modules/spawn-sync
> node postinstall

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/utf-8-validate):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

added 1030 packages from 684 contributors and audited 5321 packages in 33.775s
found 46 vulnerabilities (23 low, 13 moderate, 10 high)
  run `npm audit fix` to fix them, or `npm audit` for details

iOS - Sharing multiple images/files

When I select multiples images/files on iOS I receive only the first one.
Does this require extra configuration or is it a feature to be added in the library?

Usage in iOS

Your documentation about iOS installation is not clear for me.

In the share extension loadView() method, add

Please tell me where is this loadView() function.
Also please update docs to compatible with newer version of React.

Thank you

Improve Documentation

The documentation has gotten quite long and complex at this point, so I think separating each platform into its own Markdown file, linked in the main README, would significantly improve readability and our ability to organize the instructions

share image?

is it possible for this package to share image

How to render share UI only when dispatched by iOS Share Action and AndroidIntent?

Hi, bit of a beginner here in RN, iOS and Android dev. The example code works quite well to demonstrate how the code behaves when the host app invokes the sharing action.

However, when loading the example app directly, index.ios.js and index.android.js will render an error because no sharing link/url has been passed to the app when NativeModules.ShareMenuModule.getSharedText is invoked inside componentWillMount.

In a real-world app, index.js would load the main app view and only when a sharing action is invoked by the host app and sent to the app would NativeModules.ShareMenuModule.getSharedText be invoked.

Any recommendations on how to accomplish this so NativeModules.ShareMenuModule.getSharedText is only invoked when sent to the app via the host app's sharing action? I know this isn't really a question specifically about the module, but if you were even to just link me over to some resources explaining how to do this, that would suffice. Being a n00b, I'm having a problem googling the right keywords to find a resource or tutorial to help learn this.

Thanks!
[PS, I wanted to post this to meedan/react-native-share-menu but there is no Issues tab so I posted here]

Support for RN > 0.29

looks like we can't receive the instance of activity any more ?

MainApplication.java:37: error: incompatible types: <anonymous ReactNativeHost> cannot be converted to Activity
            new ShareMenuPackage(this)  // <------ add here
                                 ^

please refer to this

how to open sharing screen directly on android

Hi :)
I'm using this package on my project for sharing images from other app or URL.
and I have successfully installed this on my project and thanks for your good document.

Question

I wonder how to open sharing screen directly when sharing app icon pressed, unlike Example.

In other words, I want to implement images sharing like Pinterest.

pressing sharing icon open sharing screen directly
image image

Environment

software version
Android
@react-navigation/native ^5.7.3
react 16.13.1
react-native 0.63.2
npm or yarn yarn

Null is not an object NativeModules.ShareMenuReactView.data Android Only

I am new to react native coding and I need to implement a share sheet for ios and android side.
The IOS version of the app using react-native-share-menu is working as expected but I am facing Null is not an object NativeModules.ShareMenuReactView.data in android.

Scenario:

  1. Open chrome in android phone
  2. Share any link to my test app
  3. It will open the app and when I get the data using "ShareMenuReactView.data()" it returns the attached image.

I followed the instructions for Android installation except for the manual install part.
React Native: 0.62

Please let me know what I'm missing here

Here's my android manifest

<activity
            android:name=".MainActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@style/SplashScreen"
            android:windowSoftInputMode="adjustResize"
            android:exported="true"
            android:documentLaunchMode="never"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="testapp" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/*" />
                <data android:mimeType="image/*" />
                <!-- Any other mime types you want to support -->
            </intent-filter>
        </activity>

Screen Shot 2020-08-12 at 4 27 30 PM

Android: method does not override or implement a method from a supertype @Override

.../MainActivity.java:26: error: method does not override or implement a method from a supertype
    @Override
    ^
1 error
:app:compileDebugJavaWithJavac FAILED

I'n using RN 0.34.1.

File MainActivity.java seems to be originally structured in a different way you described it in Readme:

package com.androidreact;

import com.facebook.react.ReactActivity;

public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    @Override
    protected String getMainComponentName() {
        return "AndroidReact";
    }
}

Share PDF?

Hey, can share possibility for PDF be implemented? Working on Android and adding a mimeType in AndroidManifest is not enough, there is a condition that has to be changed in ShareMenuModule.java. Without it it says file type not supported.

Thank you

App unable to install

I have added a share extension into iOS project. Added the provide ObjectiveC code in extension.m file inside the loadview function.
Xcode gives me error (This app was unable to be installed)
how can I solve this ??

iOS - continueInApp and openApp not working

Hi,

I have successfully installed a custom iOS Share View but when I try to use continueInApp or openApp, nothing happens.
My app and share view targets both have the same App group and in the info.plist of the share view the bundle ID of my app and the url schema are also setup.

Any suggestion?

Not able to get this to work. Am I missing something?

Hey guys,
Im fairly new to Java and React Native. My project used Expo until recently I ejected it using ExpoKit just to incorporate the same feature this repository provides. To get this to work in my project I first tried the manual installation where I installed It using npm i react-native-share-menu --save and then followed the steps in the documentation. I was confused as to where to put the code in the AndroidManifest.xml so I put the code in the tag where the name was android:name=".MainActivity". This procedure didn't fetch the desired results as I wasn't able to see my app in the list of shared apps after following all the steps in the documentation.
I also tried the automatic installation using react-native link but that also didn't get it to work.
Am I missing something in the steps ?

Handling shared link on Android

Thanks so much for sharing your work. It's a huge help.
I am however confused about how your React Native example code handles the shared link on Android. My question has two parts:

  1. Is it necessary to handle the share within the main RN app itself? Or is it possible to do something like on iOS where the communication with the database can be executed from the Share Extension (java code?) without going through the main app? I am simply trying to share a URL directly to a firebase db, so I'm wondering if it's really necessary to bounce into the app after pressing the share icon in Android's share menu.

  2. But if it is absolutely necessary to bounce into the app to execute the share to firebase, is there a best practice as to how to handle this? I noticed the default behaviour is to open the app at the root screen of the Navigation Stack. Is it possible to navigate directly to a particular screen of the app to handle the share to Firebase?

Thanks very much for any guidance you can provide in this murky and undocumented territory :)

Building offline bundle

Hello!

How I can build offline bundle of extension?
When I using the
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
I have follow error:

[tid:com.facebook.react.JavaScript] Unable to execute JS call: __fbBatchedBridge is undefined 2016-06-09 11:27:55.913 [fatal]

Thanks!

Cannot get the Custom IOS Share View to work

Followed the instructions, but when Click my app from the share menu, an white modal slides up from the bottom for a split second and then closes. Works fine without the Custom IOS Share View and the example works fine for me locally. Not getting any errors, so not sure where or how to debug this. Any help/pointers would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.