最近在开发一个社交平台的app需要用到分享功能,本来想自己开发的,在网上花了很长时间查了很多教程结果却不尽人意,无意中看到还有类似的开源组件友推,结合自己的开发经验,把一些集成步骤和问题整理成文档奉献给大家,希望能帮助各位开发者提高开发效率。
集成步骤:
第一步:
进入友推官网申请appkey http://youtui.mobi/user/reg
第二步:
下载最新版的友推sdk包,包里提供了集成demo。
第三步:
集成前您需要为您的应用在需要集成的社交网站开放平台申请账号(一般一个工作日可完成审核),否则只能调用系统的分享菜单,无法跟踪分享的回调事件及统计。
QQ、QQ空间的可以使用友推提供的appkey,新浪微博、腾讯微博的也可以使用友推提供的appkey(但无法使用SSO免登,消息来源显示友推),微信、人人网的须要自己应用申请。
第四步:
1.引用友推库项目-> 2.注册需要分享的平台 -> 3.AndroidManifest.xml注册权限、activity ->4.初始化友推并调用
4.1 引用友推库项目
将youtui-lib项目库和应用工程放在同一个目录下,在 Package Explorer 中右键点击工程的根目录,选择 Properties(属性),然后点击,在Android选项点击Add添加youtui-lib。
4.2注册需要分享的平台
1.配置各分享平台key,该配置文件为youtui_sdk.xml,配置完放入工程的assets文件夹。
2.如果需要分享到哪个平台就将该平台的Enable属性设置为true.
3.如果需要将某个平台排列到前面,只需要改变它在youtui_sdk.xml文件中的位置即可。
4.QQ、QQ空间的可以使用友推提供的appkey,新浪微博、腾讯微博的也可以使用友推提供的appkey(但无法使用SSO免登,消息来源显示友推),微信、人人网的须要自己应用申请。
各平台需要注意的事项:
新浪微博:
SSO免登,新浪微博需要验证应用签名,请一定要在新浪开放平台管理中心应用信息 -> 基本信息 -> Android签名包名信息 配置该信息
每次包名变化或者使用的.keystore变化都会导致应用签名变化,请重新到新浪微博开放平台设置。
运行Demo时如果重新编译,因为使用的.keystore文件变化也会导致应用签名变化,导致Demo新浪微博分享无法正常工作,请运行Demo时使用Demo工程包中提供的debug.keystore替换C:\Users\Administrator\.android中的debug.keystore文件
微信和朋友圈:
微信和朋友圈也需要验证应用签名,请在微信开放平台管理中心修改应用 -> 开发信息配置。
QQ和QQ空间:
QQ和QQ空间使用的是腾讯开放平台api,请在腾讯开放平台申请账号和注册应用,请不要使用QQ互联(用于网站账号登录)的配置,虽然都是腾讯的,但是两个平台并不通用,除了需要在youtui_sdk.xml配置信息,还需要在manifest文件中的android:scheme中的tencent后的一串数字换成自己应用的appid。
4.3 在AndroidManifest.xml 注册权限
4.4在 AndroidManifest.xml 注册需要的Activity
4.5微信和朋友圈回调设置
4.6初始化友推
4.7创建 ShareData 实例,调用该实例的set方法设置需要分享的数据
4.8调用友推分享推荐组件
这样就成功集成了友推的分享推荐功能了,用户点击推荐分享按钮后,界面如下:demo下载 (android)
一些要注意到的地方:
1) v4包版本冲突,解决方法在lib工程和应用工程使用同一个版本的v4包
2) 社交平台jar包冲突,如果开发者前面引入过分享平台的开发包,并且和友推sdk使用的开发包冲突,请删除原先导入的包
3) youtui_sdk.xml填写错误,导致解析异常,无法读取开发者注册信息,请务必正确填写
4) 新浪微博分享时显示出错了或sso package or sign error,请检查在新浪申请的应用Android签名设置是否正确,当使用的keystore变化时,注意到新浪开发平台修改应用签名
5)我应用的注册用户 分享之后 得到的积分 可以增加到 我的应用的用户积分系统里吗
答:应用在友推后台创建了分享送积分的活动,应用用户分享后获得的积分默认是只增加到活动的积分里面的。如果需要增加到应用的积分系统里,需要在集成的时装在应用分享成功的事件中加方法来处理。应用用户分享获得积分的过程中并不用额外注册,是记录到用户的卡号、设备号里的。
6)qq和qq空间分享完返回时有问题?
答:qq和qq空间分享完返回时需要使用一个参数appid(在腾讯开放平台申请)
该参数定义在manifest.xml文件的
<!-- qq授权需要注册该activity --><activityandroid: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" />
<data android:scheme="tencent你的appid" />
</intent-filter>
</activity>
如果该处不设置,qq和qq空间的回调会无效,如果有几个应用把该处设置为同样的id会导致分享完从qq返回时并不是直接回到应用,而是要出现一个选择框从这几个应用中选择
7)出现“NullPoint YouTuiAcceptor.getFileName”
答:出现该问题是因为渠道号未配置 ,在manifest.xml 配置<!-- 友推渠道号,应用名(英文或拼音)+"_yt",如:“jd_yt”,用于识别通过友推活动下载的应用,请正确填写,否则无法正确统计 --><meta-dataandroid:name="YOUTUI_CHANNEL"android:value="你的apk名字_yt" ></meta-data>
8)为什么demo中微信和新浪微博无法分享,微信甚至不能调出微信界面?
答:微信和新浪微博需要验证应用签名,demo在重新编译后应用签名变化导致微信和新浪微博分享无法正常工作,解决方法为打开eclipse的preferences-build找到default debug keystore路径,然后用demo工程中的debug.keystore文件替换默认的debug keystore,然后再进行编译,这样生成的demo应该就可以进行微信和新浪微博的分享了
9)微信分享配置好key和分享信息后点了还是没反应
微信需要验证应用签名,所以要使用分享的话需要先在微信开发者平台配置应用签名.如果不知道自己应用签名是多少,可以在微信开发者平台的资源中心-资源下载-Android资源下载里面下载签名生成工具,然后使用该工具查看自己的应用签名,然后在管理中心-修改应用中设置应用的签名。