Loading...
墨滴

帅次

2021/10/29  阅读:30  主题:自定义主题1

❤️Android 集成 Facebook 分享❤️

美国时间10月28日的 Connect 2021 直播活动中,Facebook 创始人马克·扎克伯格正式宣布,公司将更名为“Meta”,不管怎么改咱先接入功能。

上文讲到Facebook 登入,这次咱们来了解了解Facebook分享。

创建应用、生成散列等相同点咱就不讲了,咱直接开始集成SDK。

🔥 集成Facebook SDK(分享)

💥 使用 Maven

🌀 1.在 build.gradle (Project) 中添加 jcenter()

buildscript {
    repositories {
        jcenter()
    }
}

🌀 2.在 build.gradle (Module: app) 并中添加库

dependencies {
    implementation 'com.facebook.android:facebook-android-sdk:11.2.0'
    implementation 'com.facebook.android:facebook-share:11.2.0'
}

🌀 3.构建项目

使用 Facebook 登录 SDK 时,如果未禁用事件自动记录功能,那么系统将自动记录和收集应用事件,以用于 Facebook 分析。

💥 配制清单文件

在 AndroidManifest.xml 中设置 ContentProvider,其中 {2992757927647074(APP_id)} 是你的应用编号

<provider android:authorities="com.facebook.app.FacebookContentProvider{2992757927647074}"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true"/>

💥 分享类型

用户必须安装 7.0 或更高版本的原生 Android 版 Facebook 应用才能分享。

🌀 链接

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .build();

🌀 照片

Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
        .setBitmap(image)
        .build();
SharePhotoContent content = new SharePhotoContent.Builder()
        .addPhoto(photo)
        .build();

🌀 视频

Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
        .setLocalUrl(videoUrl)
        .build();
ShareVideoContent content = new ShareVideoContent.Builder()
        .setVideo(video)
        .build();

🌀 多媒体(同时包含照片和视频)

用户可以从你的应用向 Facebook 分享同时包含照片和视频的内容。请注意以下事项:

  • 用户需要安装 7.1 或更高版本的原生 Android 版 Facebook 应用。
  • 用户每次可以分享最多包含 6 个照片和视频元素的内容。
SharePhoto sharePhoto1 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
SharePhoto sharePhoto2 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
ShareVideo shareVideo1 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();
ShareVideo shareVideo2 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();

ShareContent shareContent = new ShareMediaContent.Builder()
    .addMedium(sharePhoto1)
    .addMedium(sharePhoto2)
    .addMedium(shareVideo1)
    .addMedium(shareVideo2)
    .build();

ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

🔥 开始测试

💥 准备工作

    private ShareDialog shareDialog;
    private CallbackManager callbackManager;
    public void setShareFaceBook(String quote, String contentUrl) {
        if (callbackManager == null) {
            callbackManager =  CallbackManager.Factory.create();
        }
        shareDialog = new ShareDialog(this);
        //注册分享状态监听回调接口
        shareDialog.registerCallback(callbackManager, facebookCallback);
        if (shareDialog.canShow(ShareLinkContent.class)) {
            ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setQuote(quote)
                    .setContentUrl(Uri.parse(contentUrl))
                    .build();
            shareDialog.show(linkContent);
        }
    }
    private FacebookCallback facebookCallback = new FacebookCallback() {

        @Override
        public void onSuccess(Object o) {
            MLog.e("onSuccess");
        }

        @Override
        public void onCancel() {
            MLog.e("onCancel");
        }

        @Override
        public void onError(FacebookException error) {
            MLog.e("onError");
        }
    };

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

💥 调用

setShareFaceBook("三人行必有我师焉;择其善者而从之,其不善者而改之","https://shuaici.blog.csdn.net/");

💥 结果

日志打印结果:E/-SCC-: onSuccess

这里的图片是Facebook自己抓取的,分享的内容上面有小锁,是因为我选的仅限自己可见。

🔥 注意事项

在使用分享时,不要在应用内有偿引导用户分享,否则会被Facebook那边警告并下架应用,然后需要邮件申诉等才能解决。

🔥 传送门

💥 分享文档传送门

💥 创建应用传送门

💥 应用事件测试传送门

💥 GithubSDKDemo传送门

帅次

2021/10/29  阅读:30  主题:自定义主题1

作者介绍

帅次

公众号:帅次