文档章节

Android友推实现社交分享功能

boonya
 boonya
发布于 2016/07/21 09:53
字数 2223
阅读 35
收藏 0
点赞 0
评论 0

1.申请AppKey

/*如果您已经在友推添加过App并已生成AppKey,可跳过本步骤直接进入3.2继续。

申请方法:访问友推网站后台,登录后进入应用列表,添加需要集成友推组件的 App,添加成功后可获取应用的 AppKey。*/

2.申请社交平台appkey

/*集成前您需要为您的应用在各大社交网站的开放平台申请账号并通过审核,否则只能调用系统的分享菜单,无法跟踪分享的回调事件及统计*/
  
平台                 网址
微信                  http://open.weixin.qq.com
新浪微博              http://open.weibo.com
腾讯微博              http://dev.t.qq.com
QQ空间、QQ            http://open.qq.com/
微信好友              http://open.weixin.qq.com
人人                  http://dev.renren.com
豆瓣(暂未支持)        http://developers.douban.com/
FaceBook(暂未支持)    https://developers.facebook.com
Twitter(暂未支持)     https://dev.twitter.com

3.SDK集成使用流程

/*
1.引用友推库项目-> 2.注册需要分享的平台 -> 3.AndroidManifest.xml注册权限、activity ->4.初始化友推并调用
  
引用友推库项目
  
将youtui-lib项目库和应用工程放在同一个目录下
  
在 Package Explorer 中右键点击工程的根目录,选择 Properties(属性),然后点击,在Android选项点击Add添加youtui-lib*/

4.注册需要分享的平台

/*1.配置各分享平台key,该配置文件为youtui_sdk.xml,配置完放入工程的assets文件夹。
  
2.如果需要分享到哪个平台就将该平台的Enable属性设置为true.
  
3.如果需要将某个平台排列到前面,只需要改变它在youtui_sdk.xml文件中的位置即可。*/
  
<?xml version="1.0" encoding="utf-8"?>
<KeyInfo>
<!-- 分享平台的注册信息,一定要填入在相应平台注册的正确信息,不然应用无法完成授权,  也无法进行分享,enable填写true或者false属性决定是否分享该平台-->
<!-- 友推sdk注册地址 : http://youtui.mobi/ -->
<YouTui AppKey="" />
  
<!-- 微信和朋友圈注册:https://open.weixin.qq.com/ -->
<Wechat AppId="" Enable="" />
<WechatMoments AppId="" Enable="" />
  
<!-- 新浪微博注册地址:http://open.weibo.com/ -->
<SinaWeibo AppKey="" AppSecret="" Enable="" RedirectUrl="" />
  
<!-- QQ,QQ空间,腾讯微博注册地址:http://open.qq.com/ -->
<QQ AppId="" AppKey="" Enable="" />
<QZone AppId="" AppKey="" Enable="" />
<TencentWeibo AppId="" AppKey="" Enable="" />
  
<!-- 人人注册地址: http://dev.renren.com/ -->
<Renren AppKey="" AppId="" Enable="" SecretKey="" />
<ShortMessage Enable="" />
<Email Enable="" />
<!-- 调用系统分享,适用于暂时没有申请到key的分享,该分享不会获得积分,也不会被统计到 -->
<More Enable="true"/>
</KeyInfo>

5.注册APP内部使用权限

/*在AndroidManifest.xml 注册权限*/
<!-- 检测网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   
<!-- 获取mac地址作为用户的备用唯一标识 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   
<!-- 获取用户手机的IMEI,用来唯一的标识用户。 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
   
<!-- 写入SDcard权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   
<!--打开关闭sd卡权限--!>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
   
<!--网络权限--!>
<uses-permission android:name="android.permission.INTERNET" />
   
<!-- 用于读取sd卡图片 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   
<!-- 用于人人SSO登陆 -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
   
<!-- 用于人人SSO登陆 -->
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
   
<!-- 用于人人SSO登陆 -->
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

6.在 AndroidManifest.xml 注册需要的Activity

<!-- 微信分享需要注册该activity -->
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent" >
</activity>
  
<!-- qq回调需要注册该activity -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
  
<!-- qq授权需要注册该activity -->
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
  
<!-- 请将1101255276换成开发者自己应用的腾讯开放平台 Appid-->
<data android:scheme="tencent1101255276" />
</intent-filter>
</activity>
  
<!-- 人人授权需要注册的activity -->
<activity
android:name="com.renn.rennsdk.oauth.OAuthActivity"
android:configChanges="orientation|navigation|keyboardHidden" />
  
<!-- 新浪微博分享回调需要设置 -->
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
  
<!-- 分享界面 -->
<activity
android:name="cn.bidaround.ytcore.activity.ShareActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 应用授权 activity-->
<activity
android:name="cn.bidaround.ytcore.login.AuthActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 友推积分activity -->
<activity
android:name="cn.bidaround.point.PointActivity" />
<!-- 友推渠道号,应用名(英文或拼音)+"_yt",如:“jd_yt”,用于识别通过友推下载的应用,请正确填写否则无法正确统计 -->
<meta-data
android:name="YOUTUI_CHANNEL"
android:value="yourappname_yt" >
</meta-data>

7.微信和朋友圈回调设置

/*如果需要分享微信和朋友圈,必需建一个 应用包名+ .wxapi 的包,在该包下建 WXEntryActivity.java,将该类继承cn.bidaround.youtui.wxapi.WXEntryActivity即可(里面不用写代码)*/
  
public class WXEntryActivity extends cn.bidaround.youtui.wxapi.WXEntryActivity {
}

8.初始化友推

/*开发者请在自己的程序开始,最好是在MainActivity的onCreate方法调用YtTemplate.init(this)初始化友推sdk,这样友推sdk才能进行后续调用(否则分享等操作会出现空指针异常),例如:*/
  
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    YtTemplate.init(this);/*初始化友推*/
    initView();
}
/*应用退出时:
  
在您项目的出口Activity的 onDestroy 方法的第一行插入下面的代码 YtTemplate.release(this); 此方法用于释放内存,统计用户使用情况,一旦调用了release,就必须重新调用init才能使用友推的功能,否则会出现空指针异常;*/

9.创建ShareData实例

调用该实例的set方法设置自己需要分享的数据,关于该实例具体内容见下文,如果只是分享应用则只需要设置 setIsAppShare(true) 就可以分享应用在友推后台填写的信息和下载链接。
  
ShareData 包含的字段:
  
       "isAppShare"
       "text"
       "imagePath"
       "imageUrl"
       "description"
       "title"
       "target_url"
  
/*判断是否为分享应用
待分享的文字,短信要小于70个字符,微博要小于140个字符,如果需要分享链接,最好将链接url放在最后
待分享的本地图片地址,分享图片的话需要在本地和网络图片中选一,如果都有则优先分享本地图片
待分享网络图片url,分享图片的话需要在本地和网络图片中选一,如果都有则优先分享本地图片
待分享内容的描述
待分享内容的标题
待分享内容的跳转链接*/
  
通过创建该类实例,调用实例的set方法设置这些参数,例如:
  
ShareData shareData = new ShareData();
  
shareData.isAppShare = false;/*设置为true则分享的信息从友推后台填写的应用信息中读取,可动态更新,后面的值不用设置。*/
  
shareData.setDescription("友推积分组件");
  
shareData.setTitle("友推分享");
  
shareData.setText("通过友推积分组件,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的
  
后台统计数据,除了本身具备的分享功能外,开发者也可将积分功能单独集成在已有分享组件的app上,快来试
  
试吧 http://youtui.mobi");
  
shareData.setTarget_url("http://youtui.mobi");
  
shareData.setImageUrl("http://youtui.mobi/media/image/youtui.png");
  
shareData.setImagePath("http://cdnup.b0.upaiyun.com/media/image/default.png");

10.调用友推分享推荐组件

public void onClick(View v) {
    if(v.getId()==R.id.popup_bt){
        /*调用友推分享推荐组件,YouTuiViewType类的常量为分享样式参数,目前支持白色列表和黑色网格两种*/
        /*创建分享的模板,第一个参数为activity,第二个参数为分享窗口样式,第三个参数为是否需要积分*/
        YtTemplate blackTemp = new YtTemplate(this, YouTuiViewType.BLACK_POPUP,false);  //黑色网格样式不需要积分活动
        /*YtTemplate blackTemp = new YtTemplate(this, YouTuiViewType.WHITE_LIST,ture);*/ //白色列表样式需要积分活动
          
    ShareData shareData = new ShareData();
    shareData.isAppShare = false;//设置为true则分享的信息从友推后台填写的应用信息中读取,可动态更新后面的值不用设置。
    shareData.setDescription("友推积分组件");
    shareData.setTitle("友推分享");
    shareData.setText("通过友推积分组件,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的后台统计数据,除了本身具备的分享功能外,开发者也可将积分功能单独集成在已有分享组件的app上,快来试试吧 http://youtui.mobi");
    shareData.setTarget_url("http://youtui.mobi");
    shareData.setImageUrl("http://youtui.mobi/media/image/youtui.png");
    shareData.setImagePath("http://cdnup.b0.upaiyun.com/media/image/default.png");
  
    blackTemp.setShareData(shareData);//设置默认的分享数据;shareData 设置参看4.6
    //**如果要为某个平台设置不一样的分享信息。则单独设置*/
    //blackTemp.addData(YtPlatform.PLATFORM_QQ, shareData);
    //调出分享窗口
    blackTemp.show();
          
    //如果需要自定义分享事件,可以创建监听事件,然后在回调中处理
    YtShareListener listener1 = new YtShareListener() {         
        @Override
        public void onSuccess(ErrorInfo arg0) {
                  
        }
              
        @Override
        public void onPreShare() {
                  
        }
              
        @Override
        public void onError(ErrorInfo arg0) {
                  
        }
              
        @Override
        public void onCancel() {
                  
        }
    };
    //给新浪微博添加分享监听
    blackTemp.addListener(YtPlatform.PLATFORM_SINAWEIBO, listener1);
    //给QQ添加分享监听
    //blackTemp.addListener(YtPlatform.PLATFORM_QQ, listener2);
      
    }
}

 

本文转载自:http://www.oschina.net/code/snippet_1787442_37882

共有 人打赏支持
boonya
粉丝 72
博文 214
码字总数 43922
作品 0
成都
高级程序员
如何快速开发分享功能

工具/原料 第一步 第二步 第三步 经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域

bidaround
2014/06/17
214
1
app分享功能开发

最近在开发一个社交平台的app需要用到分享功能,本来想自己开发的,在网上花了很长时间查了很多教程结果却不尽人意,无意中看到还有类似的开源组件友推,结合自己的开发经验,把一些集成步骤...

我要编程
2014/08/12
192
5
分享到微信

在Android手机app上加入分享到微信的功能步骤: 1.进入友推官网http://youtui.mobi/user/reg注册并申请应用key 2.申请微信平台appkey:https://open.weixin.qq.com/ 3.引入友推项目库(下载友...

bidaround
2014/08/21
1K
1
app推广渠道数据统计分析以及个性化安装为什么要选择shareinstall?

shareinstall是一个集成SDK工具,它能够兼容Android和iOS,可以实现对app推广过程中的访问量、注册量、活跃、安装量以及留在网页上的时间长短进行统计。同时能够解决现实中遇到的免填邀请码安...

h07094223
05/24
0
0
社会化分享组件友推服务评测

评测环境 WIFI网络下: 2G网络下: 基础参数: 集成过程 客户端集成 1. 在友推官网注册,添加要集成友推sdk的 app信息,并获取appkey。 2.下载最新版的友推sdk包,包里提供了集成demo。 3.申...

bidaround
2014/07/25
79
1
友推分享组件 iOS 版本发布

经过数个月的努力,友推Android版本已经达8000+的开发者在使用,覆盖用户数达到几百万,应开发者的要求,友推推出了IOS版本。友推分享组件ios版本继承Android版本的优点和功能,支持微信、腾...

bidaround
2014/11/12
3K
3
友推首创支持截屏涂鸦标记分享功能

友推新版发布: 首创推出截屏保涂鸦标记分享功能,通过截屏涂鸦标记功能,更方便用户间的沟通分享,通过在图片上的创作加工,产生更多有趣、有分享价值的内容。 在分享的过程中,很多用户会截...

bidaround
2014/07/22
1K
1
Android使用友盟集成QQ、微信、微博等第三方登录

前言 最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的。为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟。这里记录一下完整的...

慕前端7069444
05/21
0
0
app分享功能使用友推分享信息到微信

近接到一个项目要求分享到微信和微博,查找网上后,推荐使用友推。 1. 在友推官网注册,添加要集成友推sdk的 app信息,并获取appkey。 2.下载最新版的友推sdk包,包里提供了集成demo。 3.申请...

bidaround
2014/07/28
111
2
友推首创支持截屏涂鸦标记分享功能,社交分享组件又一玩家

近日,国内新晋的移动应用组件服务提供商友推发布了新版本,宣布首创推出截屏涂鸦标记分享功能,通过截屏涂鸦标记功能,更方便用户间的沟通分享,通过在图片上的创作加工,产生更多有趣、有分...

bidaround
2014/07/23
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JEESZ分布式框架--单点登录集成方案

JEESZ分布式框架单点登录集成方案 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS) ,并且只有一个登录入口. SSO的体系中有下面三种角色: 1) Us...

明理萝
刚刚
0
1
【易错】一级缓存、二级缓存介绍与常见问题(四)

一般来说,可以在5个方面进行缓存的设计: 1.最底层可以配置的是mysql自带的query cache, 2.mybatis的一级缓存,默认情况下都处于开启状态,只能使用自带的PerpetualCache,无法配置第三方缓...

大白来袭
5分钟前
0
0
rancher安装kubernetes

参考https://rancher.com/quick-start/ 环境: Ubuntu 16.04 Docker versions are 1.12.6, 1.13.1 or 17.03.2 1、docker安装https://docs.docker.com/install/linux/docker-ce/ubuntu/#insta......

杰仪
5分钟前
0
0
几维安全Javascript代码混淆(js加密)在线使用说明

几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆、字符串加密、属性加密、调用转换等多项保护措施,提高攻击者分析Javascr...

工作的事
7分钟前
0
0
解决dokuwiki创建中文词条文件乱码问题

若直接创建中文词条,打开本地文件夹\dokuwiki\data\pages你会发现,中文字段显示的是URL乱码,需要改一下utf8格式,方法如下:(linux系统亲测有效) 打开 .dokuwiki\conf\local.php 添加一行...

Rhymo-Wu
10分钟前
0
0
设置圆角长条progressbar背景色

1、首先在Drawable下面新建一个xml文件,将这段代码复制进去 <?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-......

王先森oO
10分钟前
0
0
Java语言学习(九):异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。常见的三种异常类型有: 检查性异常,如打开一个不存在的文件 运行时异常,如数组越界 错误,如栈溢出 ...

海岸线的曙光
13分钟前
0
0
深入分析golang多值返回以及闭包的实现

一、前言 golang有很多新颖的特性,不知道大家的使用的时候,有没想过,这些特性是如何实现的?当然你可能会说,不了解这些特性好像也不影响自己使用golang,你说的也有道理,但是,多了解底...

万建宁
14分钟前
0
0
img与background-image之间的区别

1.img <img src="图片来源" alt="图片无法显示时显示图片说明性文字" style="设置样式属性" /> img标签虽然不是块状元素,但是可以设置宽高,占位, img设置width后height会自适应匹配,如果...

爱喝水的小熊
16分钟前
0
0
Swift - 添加提示音

func createSound() { //建立的SystemSoundID对象 var soundID:SystemSoundID = 123 //获取声音地址 let path = Bundle.main.path(forResource: "3quan......

west_zll
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部