[Android]Cocos2d-x集成facebook sdk 4.x(三)

分享

一、配置
在 AndroidManifest.xml 中设置 ContentProvider,代码如下:

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

二、注册回调

private static FacebookCallback shareCallback = new FacebookCallback() {
        @Override
        public void onCancel() {
            executeCallBack(1,"分享取消", null);
            System.out.println("cocos2d-x------------------------------>SHARE CANCELED");
        }

        @Override
        public void onError(FacebookException error) {
            executeCallBack(1,"分享错误", null);
            System.out.println("cocos2d-x------------------------------>SHARE ERROR");
        }

        @Override
        public void onSuccess(Sharer.Result result) {
            executeCallBack(0,"分享成功", null);
            System.out.println("cocos2d-x------------------------------>SHARE SUCCEED");
        }
    };

ShareDialog shareDialog = new ShareDialog(m_mainActivity);
shareDialog.registerCallback(m_facebookCallbackManager, shareCallback);

三、内容建模
facebook支持分享链接、照片、视频、多媒体等等,在这里只介绍链接分享。用户通过应用将链接分享到 Facebook 时,会包括在帖子中显示的属性:

contentURL:要分享的链接
contentTitle:表示链接中的内容的标题
imageURL:将在帖子中显示的缩略图的网址
contentDescription:通常为 2-4 个句子

//分享链接
 ShareLinkContent linkContent = new ShareLinkContent.Builder()
                                        .setContentTitle(contentTitle)
                                        .setContentDescription(contentDescription)
                                        .setContentUrl(Uri.parse(contentUrl))
                                        .setImageUrl(Uri.parse(imageUrl))
                                        .build();

如果已安装facebook应用,分享时会打开分享对话框,分享对话框会切换到原生 Android 版 Facebook 应用,并在发布帖子后将控制权交还给应用;如果未安装facebook应用,会弹出网页对话框(前提是已获得发布权限),如果未获取到发布权限,需要在分享前向用户请求。

if (ShareDialog.canShow(ShareLinkContent.class)) {
    shareDialog.show(linkContent);
} else if (hasPublishPermission()) {
    ShareApi.share(linkContent, shareCallback);
} else {
    LoginManager.getInstance().logInWithPublishPermissions(m_mainActivity, Arrays.asList("publish_actions"));
}

应用邀请

要发送应用邀请,必须使用 4.0 或以上版本的 Android 版 Facebook SDK。
一、创建应用链接
创建应用链接有一下两种方式:
1. facebook应用链接生成工具,生成应用链接
[Android]Cocos2d-x集成facebook sdk 4.x(三)_第1张图片
2. 标记

<html>
<head>
    <meta property="al:ios:url" content="couchinapp://invite_from_fb?referral=123456789" />
    <meta property="al:ios:app_store_id" content="123456789" />
    <meta property="al:ios:app_name" content="Couchin'" />
    <meta property="al:android:url" content="couchinapp://invite_from_fb?referral=123456789" />
    <meta property="al:android:app_name" content="Couchin" />
    <meta property="al:android:package" content="com.mycompany.couchin" />
    <meta property="al:web:url" content="http://www.couchinapp.com/myapp.html" />
head>
<body>
Couchin App Link
body>
html>

二、应用链接建模
appLinkUrl (必选):接收人点击应用邀请页面的 install/play(安装/试玩)按钮时,所打开的应用链接。
previewImageUrl(可选):预览图片网址。
如果未设置 previewImageURL,邀请将使用应用设置中“应用详情”版块的“推广图片”。如果无可用图片,邀请将不能显示。

AppInviteContent content = new AppInviteContent.Builder()
                                .setApplinkUrl(applinkUrl)
                                .setPreviewImageUrl(imageUrl)
                                .build();
AppInviteDialog.show(m_mainActivity , content);

三、注册回调

private static FacebookCallback appInviteCallback =
            new FacebookCallback() {
                @Override
                public void onSuccess(AppInviteDialog.Result result) {
                    executeCallBack(0,"邀请成功", null);
                    System.out.println("cocos2d-x------------------------->Invite succeed");
                }

                @Override
                public void onCancel() {
                    executeCallBack(1,"邀请取消", null);
                    System.out.println("cocos2d-x------------------------->Invite cancel");
                }

                @Override
                public void onError(FacebookException error) {
                    executeCallBack(1,"邀请错误", null);
                    System.out.println("cocos2d-x------------------------->Invite error" + String.format("Error: %s", error.toString()));
                }
            };

AppInviteDialog appInviteDialog = new AppInviteDialog(m_mainActivity);
appInviteDialog.registerCallback(m_facebookCallbackManager, appInviteCallback);

游戏请求

参考文档
游戏请求可用于吸引新玩家或重新吸引现有玩家。请求可在两种情况下发送:

  1. 接收方是发送方的未授权好友。这种情况适合使用邀请好友。
  2. 接收方是发送方的已授权。这种情况适合使用回合制游戏通知、赠送礼物和寻求帮助等。

邀请好友

一、 获取未授权好友列表
在登录成功后,向facebook请求获取未授权好友。

GraphRequest request = GraphRequest.newMeRequest(
  accessToken,
  new GraphRequest.GraphJSONObjectCallback() {
    @Override
    public void onCompleted(JSONObject object, GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "invitable_friends");
request.setParameters(parameters);
request.executeAsync();

二、邀请口令
邀请口令是长度可变的唯一(按用户和按游戏区分)字符串,在每个好友对象中作为 id 字段的值返回。邀请口令会过期,并可能视游戏会话的不同而不同。
三、发送邀请

public static void sendGameRequestToFriend(String _content, String inviteTokenStr, String _sunmm, String _callidentifier) {
        String[] inviteTokenStrs = inviteTokenStr.split(",");
        List inviteTokens = Arrays.asList(inviteTokenStrs);  
        GameRequestDialog requestDialog = new GameRequestDialog(m_mainActivity);
        requestDialog.registerCallback(m_facebookCallbackManager,
            new FacebookCallback() {
            public void onSuccess(GameRequestDialog.Result result) {
                executeCallBack(0, "邀请成功", null);
            }
            public void onCancel() {
                executeCallBack(1, "邀请取消", null);
            }
            public void onError(FacebookException error) {
                executeCallBack(1, "邀请错误", null);
            }
            }
          );
          GameRequestContent content = new GameRequestContent.Builder()
            .setMessage(_content)
            .setRecipients(inviteTokens)
            .build();
          requestDialog.show(content);
    }

你可能感兴趣的:(sdk,android,facebook,cocos2d-x)