Android 友盟社会化组件-分享实现

本文章链接地址:http://dev.umeng.com/social/android/share/quick-integration

分享快速集成

1 产品概述

友盟社会化组件,可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。

指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博、腾讯微博、人人网分享功能。

注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档、或者下载使用最新版SDK。

2 获取友盟Appkey

如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.

如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击**添加新应用**,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey

3 下载并安装SDK

3.1 下载SDK最新版

3.2 添加代码和资源引用

jar文件对应列表

平台 jar文件
腾讯微博 SocialSDK_TencentWB_1.jar,SocialSDK_TencentWB_2.jar
QQ空间 SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar
微信好友 SocialSDK_WeiXin.jar
QQ SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar

注意

1:QQ和QQ Zone SSO(免登录)引用的jar文件相同。当需要同时支持QQ和QQ Zone的时候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件即可.
2:由于我们对微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出现"Unable to execute dex: Multiple dex files define "问题,请删除libammsdk.jar或者SocialSDK_WeiXin.jar中的一个即可解决问题。

添加资源文件和jar文件有两种方式,请根据您的需求进行选择

方法A:添加工程引用(升级方便,推荐)

解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。

方法B:添加资源到现有项目中

解压SDK压缩包,将文件夹中的‘libs‘和‘res‘文件夹复制到你的项目工程根目录下(如使用‘ADT 17‘以下用户需要手动添加‘libs‘下的jar文件到工程Path中):

3.3 Manifest配置,添加友盟Appkey/Activity/权限


<<SPAN class="title" >manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.umeng.example"
    android:versionCode="1"
    android:versionName="1.0" >

    <</FONT>application
        android:debuggable="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <</FONT>activity
            android:name=".UmengHome"
            android:label="@string/app_name" >
            <<SPAN class="title" >intent-filter>
                <<SPAN class="title" >action android:name="android.intent.action.MAIN" />

                <<SPAN class="title" >category android:name="android.intent.category.LAUNCHER" />
            </<SPAN class="title" >intent-filter>
        </<SPAN class="title" >activity>

        <</FONT>activity
            android:name="com.umeng.socialize.view.ShareActivity"
            android:configChanges="orientation|keyboard"
            android:launchMode="singleTask"
            android:noHistory="true"
            android:theme="@style/Theme.UMDialog"
            android:windowSoftInputMode="stateVisible|adjustResize" >
        </<SPAN class="title" >activity>

        <</FONT>activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >
            <<SPAN class="title" >intent-filter>
                <<SPAN class="title" >action android:name="android.intent.action.VIEW" />

                <<SPAN class="title" >category android:name="android.intent.category.DEFAULT" />
                <<SPAN class="title" >category android:name="android.intent.category.BROWSABLE" />

                <<SPAN class="title" >data android:scheme="tencent100424468" />
            </<SPAN class="title" >intent-filter>
        </<SPAN class="title" >activity>
        <<SPAN class="title" >activity android:name="com.tencent.plus.ImageActivity" />
        <<SPAN class="title" >activity android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:screenOrientation="portrait">
        </<SPAN class="title" >activity>

        <</FONT>meta-data
            android:name="UMENG_APPKEY"
            android:value="xxxxxxxxxxxxxxxxxxxxxx" >
        </<SPAN class="title" >meta-data>

    </<SPAN class="title" >application>

    <<SPAN class="title" >uses-sdk android:minSdkVersion="8" />

    <<SPAN class="title" >uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <<SPAN class="title" >uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <<SPAN class="title" >uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <<SPAN class="title" >uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <<SPAN class="title" >uses-permission android:name="android.permission.INTERNET" />
    <<SPAN class="title" >uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <<SPAN class="title" >uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</<SPAN class="title" >manifest>

如果选用多种UmengSDK产品使用不同Appkey,可为SocialSDK配置单独的appkey,如下:


SocializeConstants.APPKEY = "xxxxxxxxx";

4 打开平台选择面板

4.1 首先在您的Activity中添加如下成员变量并设置分享内容

// 首先在您的Activity中添加如下成员变量
final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share",
                                                                             RequestType.SOCIAL);
// 设置分享内容
mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social");
// 设置分享图片, 参数2为图片的url地址
mController.setShareMedia(new UMImage(getActivity(),
                                      "http://www.umeng.com/images/pic/banner_module_social.png"));
// 设置分享图片,参数2为本地图片的资源引用
//mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));
// 设置分享图片,参数2为本地图片的路径(绝对路径)
//mController.setShareMedia(new UMImage(getActivity(),
//                                BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));

// 设置分享音乐
//UMusic uMusic = new UMusic("http://sns.whalecloud.com/test_music.mp3");
//uMusic.setAuthor("GuGu");
//uMusic.setTitle("天籁之音");
// 设置音乐缩略图
//uMusic.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");
//mController.setShareMedia(uMusic);

// 设置分享视频
//UMVideo umVideo = new UMVideo(
//          "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
// 设置视频缩略图
//umVideo.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");
//umVideo.setTitle("友盟社会化分享!");
//mController.setShareMedia(umVideo);

人人网分享时,如果不设置website,点击¨应用名称¨或者¨图片¨将跳转到人人网主页;如果设置website将跳转到此website的页面。

设置website的方式如下:

mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");

4.2 通过某个按钮或其他方法弹出分享面板

mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);
yourShareButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // 是否只有已登录用户才能打开分享选择页
        mController.openShare(getActivity(), false);
    }
});


5 验证效果

编译并运行后,点击添加分享功能的View出现如下页面,那么说明你已经集成成功基本的分享功能和平台了!但是,为了使您的用户有更好的分享体验,以及您的应用有更多的分享量,更好地在社交平台上传播,我们建议您按照下面的指引进行SSO(免登录)和新平台的设置。

   
选择分享平台面板 分享编辑页

SSO名词解释 : SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
例如用户已经登录新浪微博客户端,使用SSO授权登录时则不需要用户手动输入用户名、密码,直接点击登录即可, 因此可成为免登录.

6 各平台SSO(免登录)配置

6.1 如果有使用任一平台的SSO授权或者集成了facebook平台, 则必须在对应的activity中实现onActivityResult方法, 并添加如下代码

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

    UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode) ;
    if(ssoHandler != null){
       ssoHandler.authorizeCallBack(requestCode, resultCode, data);
    }
}

6.2 分享到微信和朋友圈

6.2.1 添加微信和朋友圈所依赖的jar文件

1.解压已下载的SDK.zip文件,将SocialSDK_WeiXin.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
2.在libs目录中找到SocialSDK_WeiXin.jar文件,鼠标右键-->Add to Build Path.

6.2.2 添加如下集成代码

// wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
String appID = "wx967daebe835fbeac";
// 微信图文分享必须设置一个url
String contentUrl = "http://www.umeng.com/social";
// 添加微信平台,参数1为当前Activity, 参数2为用户申请的AppID, 参数3为点击分享内容跳转到的目标url
UMWXHandler wxHandler = mController.getConfig().supportWXPlatform(getActivity(),appID, contentUrl);
//设置分享标题
wxHandler.setWXTitle("友盟社会化组件很不错");
// 支持微信朋友圈
UMWXHandler circleHandler = mController.getConfig().supportWXCirclePlatform(getActivity(),appID, contentUrl) ;
circleHandler.setCircleTitle("友盟社会化组件还不错...");

微信和朋友圈支持纯文字,纯图片(点击查看大图),图文,音乐,视频分享。
注意 
此版本兼容了微信支付的功能,请更新SocialSDK_WeiXin.jar文件。

6.2.3 微信和微信朋友圈的回调

如果在您的项目中集成了微信或者微信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。

<</FONT>activity
   android:name=".wxapi.WXEntryActivity"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:exported="true"
   android:screenOrientation="portrait" />

然后将SDK包中weixin目录下的wxapi文件夹拷贝到您的工程的包目录下, 然后修改WXEntryActivity的完整路径即可。
例如social_sdk_example的包名为com.umeng.soexample,因此将wxapi文件夹拷贝到com.umeng.soexample下,最终WXEntryActivity的 完整路径为com.umeng.soexample.wxapi.WXEntryActivity。
其中分享的回调接口SnsPostListener的onComplete方法的第二个参数代表分享的状态码,当值为200时表示分享成功;其余的值则为分享失败。

微信集成相关说明

1.微信集成注意以下几点

  • 正确填写AppID.
  • 工程的包名必须同申请应用的包名一致。
  • 开发者的应用需要通过审核。开发者在申请应用必须要通过微信官网的审核才能进行调试.

2.Demo中集成的微信无法使用?

原因:Demo中使用的微信AppID绑定的签名信息和你打包时所用的签名信息不一致,导致无法响应. 解决办法有两个,您任选其一:

  • 申请一个测试Demo中AppID.(申请地址).
    填写"包名"时请使用Demo的包名"com.umeng.soexample".
    填写"签名"使用签名生成工具(签名工具)生成,签名时填写Demo的包名.
    获取微信AppID后替换Demo中的使用的AppID.
  • 使用SDK中的 debug.keystore编译运行Demo工程.

6.3 分享给QQ好友

6.3.1 添加QQ分享所依赖的jar文件

  1. 解压已下载的SocialSDK.zip文件,SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
  2. 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,鼠标右键-->Add to Build Path.
  3. 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件.
  4. 请在QQ互联填写签名:移动应用信息->平台信息->apk签名.(签名地址)

6.3.2 添加如下集成代码

//为了避免每次都从服务器获取APP ID、APP KEY,请设置APP ID跟APP KEY。
//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,
//参数3为开发者在QQ互联申请的APP kEY,参数4为点击分享nerve跳转的URL地址
mController.getConfig().supportQQPlatform(getActivity(),"APP ID","APP KEY","http://www.umeng.com/social");

注意:

1.此版本集成了QQ的最新jar文件,请更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件。
2.QQ分享内容为音乐,视频的时候,其形式必须为url;图片支持url和本地图片类型。
3.QQ SSO授权不会在onActivityResult方法内被调用。
4.未安装手机QQ客户端的情况下,QQ不支持纯图片分享。
5.未安装手机QQ客户端的情况下,QQ取消授权不执行相关回调。
6.QQ和QQ空间授权,对于同一个应用同一个账号返回的uid,openid相同。 7.为了防止QQ授权出现不可预测的问题,请保证添加QQ平台只执行一次(只调用一次mController.getConfig().supportQQPlatform)!

6.4 SSO(免登录)分享到QQ空间

6.4.1 添加QQ空间所依赖的jar文件

如果已经添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,则不需要再次添加.
1. 解压已下载的SocialSDK.zip文件,SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
2. 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,鼠标右键-->Add to Build Path.
3. 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件.
4. 请在QQ互联填写签名:移动应用信息->平台信息->apk签名.(签名地址)

6.4.2 在集成代码中添加如下代码

//为了避免每次都从服务器获取APP ID、APP KEY,请设置APP ID跟APP KEY
mController.getConfig().setSsoHandler( new QZoneSsoHandler(Activity activity, "APP ID", "APP KEY") );

注意:

1.本次集成了QZone的最新jar包,升级时请注意更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件。
2.在进行QZone SSO授权时,请在AndroidManifest.xml中配置相应的Activity。具体参加上文AndroidManifest.xml文件配置。
3.QZone不支持纯图片分享。
4.无手机QQ客户端的情况下,QQ取消授权不执行相关回调。
5.QQ和QQ空间授权,对于同一个应用同一个账号返回的uid,openid相同。

6.5 SSO(免登录)分享到新浪微博

**注意一定保证在新浪微博上填写应用签名,原因参考:http://support.umeng.com/1955/

6.5.1 将SDK目录下的src覆盖到项目工程根目录下,确保已添加‘com/sina/sso/RemoteSSO.aidl‘.

6.5.2 在代码中添加如下代码

//设置新浪SSO handler
mController.getConfig().setSsoHandler(new SinaSsoHandler());

6.6 SSO(免登录)分享到腾讯微博

6.6.1 添加腾讯微博SSO所依赖的jar文件

1.解压已下载的SocialSDK.zip文件,将SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
2.在libs目录中找到SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar文件,鼠标右键-->Add to Build Path.

6.6.2 在集成代码中添加如下代码

//设置腾讯微博SSO handler
mController.getConfig().setSsoHandler(new TencentWBSsoHandler());

注意:

1.手机中必须安装微博客户端V3.8.1及以上的版本才支持SSO功能.
2.腾讯微博的SSO没有回调。由于腾讯微博SSO没有提供回调,因此腾讯微博SSO不会在onActivityResult方法内被调用(腾讯微博的流程不经过onActivityResult方法).

7 应用信息注册地址列表

下面是Social SDK不同平台应用信息注册网站的地址:

平台 网址
新浪微博 http://open.weibo.com
腾讯微博 http://dev.t.qq.com
QQ空间 http://connect.qq.com/intro/login/
微信好友 http://open.weixin.qq.com
FaceBook https://developers.facebook.com
Twitter https://dev.twitter.com
人人 http://dev.renren.com
豆瓣 http://developers.douban.com/

8 混淆

为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.


-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**

-libraryjars libs/SocialSDK_QQZone_2.jar

-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable

-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**

-keep public class com.umeng.socialize.* {*;}
-keep public class javax.**
-keep public class android.webkit.**

-keep class com.facebook.**
-keep class com.umeng.scrshot.**
-keep public class com.tencent.** {*;}
-keep class com.umeng.socialize.sensor.**

-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}

-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}

-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}

-keep public class [your_pkg].R$*{ public static final int *; }
时间: 2024-10-14 10:32:34

Android 友盟社会化组件-分享实现的相关文章

Windows Phone 8下 友盟社会化组件SDK2.0的使用。

由于项目的需要,要将友盟的社会化组件SDK由0.9更新至2.0. 版本变化比较大. 1.很多类以及命名空间已经取消了. 如UmengSocialSDK.Net.Request命名空间, UmengSocial类等. 2.微信会话和朋友圈已整合成一个. 老版本两者分别是两个类,此处已经整合为一个.(WP8.1下暂时无法分享至微信.朋友圈) 分享内容支持三种:Link链接.Text文字.Picture图片 具体查看官方文档:http://dev.umeng.com/social/windows-ph

Android友盟社会化分享,那些我踩过的坑

按照sdk的demo进行集成后,碰到几个大坑.现在总结下这些坑同时给出我的解决方法. 1.点击qq或空间分享,出现应用无响应(ANR)的情况. ?解决方法:?查查是否分享的图片参数是否已经设置,没有设置会出现ANR,设置后可以正常分享.title.url.content等参数尽量都设置一下,以防出现其他莫名奇妙问题 2.微信分享不成功.现象是点击微信或朋友圈分享后,出现微信的界面,提示请稍候,然后一闪而过消失.查看logcat出现错误: ## get sso Handler, requestCo

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件 上一篇博客给大家介绍了如何分析网页并且使用jsoup这个库对html代码进行解析,本篇博客继续给大家介绍如何集成友盟社会化组件,如何使用SDK提供的API轻松实现多平台的社会化分享,官网的文档和Demo看起来很头疼的有木有,小巫在集成这个社会化的组件也有点烦躁,所以也需要各位耐心看下面的博文把友盟社会化组件集成到你的应用中去.为什么要选择友盟呢,这里也是答应了小喵的,要帮忙集成他们的服务,所以也顺带帮他们写一篇这样的博文,千

Android集成友盟社会化分享功能

1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博.腾讯微博.人人网分享功能. 注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档.或者下载使用最新版SDK. 2.  获取友盟Appkey 如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它. 如果你尚未在友盟注册开

IOS友盟 社会化分享 &gt; 社会化iOS组件 &gt; 分享集成

由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置QQ.微信AppID之后调用下面的方法,[UMSocialConfig hiddenNotInstallPlatforms:@[UMShareToQQ, UMShareToQzone, UMShareToWechatSession, UMShareToWechatTimeline]]; 这个接口只对默认分享面板平台有隐藏功能,自定义分享面板或登录按钮需要自己处理 友盟分享sdk5.2.1已经兼容ipv6,请大家升级sdk,避免无法通

友盟SDK实现分享

友盟SDK文档已经写得很详细了,这边整理笔记,先过一遍流程: 1??注册友盟账号以获取Appkey,下面以分享到微信为例 2??申请第三方账号是因为要进行分享.授权这样的操作肯定是要通过第三方的审核(这样来源可以显示成自己App的icon).如果只是做个demo的话友盟提供了一些平台的测试账号: 3??适配iOS9系统做了几个处理,解决“您的设备未安装微信”的问题 4??下载并安装SDK,可以上代码了 1.在 AppDelegate文件内设置你的AppKey 2.配置第三方APPID#impor

友盟社会化Android组件之第三方登录

前段时间公司需要,逐步了新浪微博.腾讯qq.微信等授权登录验证的问题.如果要一个个申请,看文档写代码也是很多流程的.干脆用友盟社会化Android组件之第三方登录.友盟是集成了这些平台,还有其他主流的平台的.我在这里主要讲一下友盟里面微博登录.先看看友盟是怎么介绍自已的. 一.友盟社会化分享介绍 友盟社会化分享组件,帮助移动应用快速具备微信分享,微博分享.登录.评论.喜欢等社会化组件功能,助力产品推广,并提供实时.全面的社会化数据统计分析服务,是国内最大的社会化分享SDK. 支持各大社交平台 精

iOS友盟社会化分享完全攻略

1 简介 现如今几乎所有人都有社交账号和社交App,而分享功能也几乎随处可见.本文的目的在于介绍分享功能的基本实现.使用的是友盟的社会化分享组件,这样就不用一个一个对接各个平台的接口,可以使用一套接口来实现多个平台的分享功能.本文以分享到微信.QQ.微博为例. 2 开发者账号 这里说的不是创建苹果的开发者账号,而是创建友盟和各个要分享到的平台的开发者账号.和苹果开发者账号一样,要使用友盟的服务,要分享到各个平台,都需要对应的开发者账号去获取key. 2.1 友盟开发者账号及key 打开友盟的首页

Android 友盟分享 新浪微博分享为什么每次跳到登录界面就登不上了 错误C403

============问题描述============ Android 友盟分享 新浪微博分享为什么每次跳到登录界面就登不上了 错误C403 ============解决方案1============ 引用 楼主 zpq19870824 的回复: Android 友盟分享 新浪微博分享为什么每次跳到登录界面就登不上了 错误C403 没用过,帮你顶一下吧...