微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React-native分享不和

如何解决React-native分享不和

我正在一个项目中实现一项功能,我们希望用户能够分享不和谐的帖子。使用https://react-native-community.github.io/react-native-share/docs/share-single

在Facebook或Twitter上实现共享很容易

但是shareSingle上不支持discord,并且我不希望共享按钮调用“本机共享”菜单,该菜单可以链接discord,我希望discord图标直接重定向discord。但是我什至找不到一种方法来通过URL模式或通用链接来打开discord应用程序以触发该应用程序(discord://或discord:// discord或discordapp:// ...)。

我试图找到一种访问本机共享的方法,以便单独打开不和谐共享,但找不到方法

有人有没有实现不和谐共享,并且有任何关于如何以本机实现的技巧?

解决方法

您可以创建一个fork项目并添加以下文件:

android / src / main / java / cl / json / social / DiscordShare.java

package cl.json.social;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import java.io.File;
import android.os.Environment;
import android.net.Uri;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReadableMap;


public class DiscordShare extends SingleShareIntent {

    private static final String PACKAGE = "com.discord";
    private static final String PLAY_STORE_LINK = "https://play.google.com/store/apps/details?id=com.discord";

    public DiscordShare(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public void open(ReadableMap options) throws ActivityNotFoundException {
        super.open(options);
        //  extra params here
        this.openIntentChooser();
    }

    @Override
    protected String getPackage() {
        return PACKAGE;
    }

    @Override
    protected String getDefaultWebLink() {
        return null;
    }

    @Override
    protected String getPlayStoreLink() {
        return PLAY_STORE_LINK;
    }
}

编辑 android / src / main / java / cl / json / RNShareModule.java

package cl.json;
// ...

import cl.json.social.DiscordShare;
public class RNShareModule extends ReactContextBaseJavaModule implements ActivityEventListener {
 // ...
private enum SHARES {
        facebook,generic,pagesmanager,twitter,whatsapp,instagram,instagramstories,googleplus,email,pinterest,messenger,snapchat,sms,linkedin,discord; // ADDED


        public static ShareIntent getShareClass(String social,ReactApplicationContext reactContext) {
            SHARES share = valueOf(social);
            switch (share) {
                case generic:
                    return new GenericShare(reactContext);
                case facebook:
                    return new FacebookShare(reactContext);
                case pagesmanager:
                    return new FacebookPagesManagerShare(reactContext);
                case twitter:
                    return new TwitterShare(reactContext);
                case whatsapp:
                    return new WhatsAppShare(reactContext);
                case instagram:
                    return new InstagramShare(reactContext);
                case instagramstories:
                    return new InstagramStoriesShare(reactContext);
                case googleplus:
                    return new GooglePlusShare(reactContext);
                case email:
                    return new EmailShare(reactContext);
                case pinterest:
                    return new PinterestShare(reactContext);
                case sms:
                    return new SMSShare(reactContext);
                case snapchat:
                    return new SnapChatShare(reactContext);
                case messenger:
                    return new MessengerShare(reactContext);
                case linkedin:
                    return new LinkedinShare(reactContext);
                case discord:
                    return new DiscordShare(reactContext); // ADDED
                default:
                    return null;
            }
        }
    };

}
// ...

最后编辑 index.js

//...
class RNShare {
//...
static Social = {
    FACEBOOK: NativeModules.RNShare.FACEBOOK || 'facebook',FACEBOOK_STORIES: NativeModules.RNShare.FACEBOOK_STORIES || 'facebook-stories',PAGESMANAGER: NativeModules.RNShare.PAGESMANAGER || 'pagesmanager',TWITTER: NativeModules.RNShare.TWITTER || 'twitter',WHATSAPP: NativeModules.RNShare.WHATSAPP || 'whatsapp',INSTAGRAM: NativeModules.RNShare.INSTAGRAM || 'instagram',INSTAGRAM_STORIES: NativeModules.RNShare.INSTAGRAM_STORIES || 'instagramstories',GOOGLEPLUS: NativeModules.RNShare.GOOGLEPLUS || 'googleplus',EMAIL: NativeModules.RNShare.EMAIL || 'email',PINTEREST: NativeModules.RNShare.PINTEREST || 'pinterest',LINKEDIN: NativeModules.RNShare.LINKEDIN || 'linkedin',SMS: NativeModules.RNShare.SMS || 'sms',DISCORD: NativeModules.RNShare.DISCORD || 'discord',// ADDED
  };
// ...
}

在您的项目中使用:

    Share.shareSingle({
      title: 'test',message: 'hola mundo',url: 'https://json.cl',social: Share.Social.DISCORD,})
      .then((res) => {
        console.log(res);
      })
      .catch((err) => {
        err && console.log(err);
      });

结果:

Result Discord Share

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。