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

来源:互联网 发布:儿童编程软件下载 编辑:程序博客网 时间:2024/05/02 02:48

分享

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

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

二、注册回调

private static FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>() {        @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应用链接生成工具,生成应用链接
这里写图片描述
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<AppInviteDialog.Result> appInviteCallback =            new FacebookCallback<AppInviteDialog.Result>() {                @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<String> inviteTokens = Arrays.asList(inviteTokenStrs);          GameRequestDialog requestDialog = new GameRequestDialog(m_mainActivity);        requestDialog.registerCallback(m_facebookCallbackManager,            new FacebookCallback<GameRequestDialog.Result>() {            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);    }
1 0