android集成极光社会化分享攻略

1.简介
本文的主旨是帮助开发者快速使用极光分享,实现分享的基本功能,这样用户就不用集成QQ,微信,新浪微博的接口,只要集成极光分享就能够实现多个平台的分享功能。html

2. 开发者账号及appkey
开发者账号指的是极光和QQ,微信新浪微博的开发者账号;要是用极光分享的功能,必需要获取极光和对应第三方平台QQ,微信,新浪微博的appkey和appsecretandroid

2.1 极光开发者账号及appkeygit

打开极光官网(https://www.jiguang.cn/),点击注册按钮注册开发者账号;在极光 控制台上建立应用,获得 appkey。详情参考控制台使用指南;若是以前已经使用了 JPush,能够直接延用老的 appkey。github

2.2 申请微信appIDapi

登录微信开发者平台,进入管理中心,点击建立移动应用,根据提示填写应用的基本信息以及平台信息微信

wechat_platform.png

提交审核,审核经过后便可得到 appID 和 appsecret进行开发。 须要特别注意的是在申请时填写的包名和签名必须与你开发的应用相对应,不然会致使微信平台没法分享。填写的签名经过签名生成工具得到。微信开发

2.3 申请新浪微博appkeyapp

登录新浪微博开放平台,进入微连接 ->移动应用,点击当即接入建立应用 ;根据提示填写应用信息建立新应用ide

clipboard.png

提交审核,审核经过后便可得到 appkey 和 appsecret。 须要特别注意的是在申请时填写的包名和签名必须与你开发的应用相对应。填写的签名经过签名生成工具获取。工具

2.4 申请QQ的appID

登陆腾讯开放平台,应用接入,根据须要选择 Android 应用或者 iOS 应用, 点击建立应用,根据提示填写应用信息,

clipboard.png

填写相关应用信息并提交审核,应用未经过审核前只能使用测试帐号。

3. 集成分享SDK
把SDK集成到android工程里有两种方法,一是经过jcenter自动集成,二是手动集成; 为了方便这里主要讲的是用jcenter自动集成,若是须要手动集成请参考官方文档。

3.1 使用jcenter集成

使用 jcenter 自动集成的开发者,不须要在项目中添加 jar 和 so,jcenter 会自动完成依赖。主要步骤以下:

在 gradle 配置 jcenter。
配置 JGShareSDK.xml。
配置微信回调(如不须要分享到微信,可跳过)。
配置项目签名。
参考 example 工程或者接口文档使用 JShare SDK。

3.1.1 在 gradle 配置 jcenter

  • 确认 android studio 的 Project 根目录的主 gradle 中配置了 jcenter 支持。(新建 project 默认配置就支持)

buildscript {
    repositories {
        jcenter()
    }
    ......
}

allprojects {
    repositories {
        jcenter()
    }
}
  • 在 module 的 gradle 中添加依赖和 AndroidManifest 的替换变量。

android {
    ......
    defaultConfig {
        applicationId "com.xxx.xxx" //极光控制台建立应用时填写的应用包名.
        ......

        ndk {
            //选择要添加的对应 cpu 类型的.so 库。
            abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a'
            // 还能够添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [
            JSHARE_PKGNAME : applicationId,
            JPUSH_APPKEY : "你的 appkey", //极光控制台建立应用获得的 AppKey.
            JPUSH_CHANNEL : "developer-default", //暂时填写默认值便可.
            TENCENT_APPID: "QQ 开发者应用的 appID",//腾讯开放平台注册应用获得的 appId
        ]
        ......
    }
    ......
}
dependencies {
    ......
    compile 'cn.jiguang.sdk:jshare:1.1.0'  // 此处以 JShare 1.1.0 版本为例。
    compile 'cn.jiguang.sdk:jshare-qqmodel:1.1.0'  // 此处以 jshare-qqmodel 1.1.0 版本为例。
    compile 'cn.jiguang.sdk:jshare-wechatmodel:1.1.0'  // 此处以 jshare-wechatmodel 1.1.0 版本为例。
    compile 'cn.jiguang.sdk:jshare-sinamodel:1.1.0'  // 此处以 jshare-sinamodel 1.1.0 版本为例。
    compile 'cn.jiguang.sdk:jcore:1.1.3'  // 此处以 JCore 1.1.3版本为例。
    ......
}

注 : 配置完gradle后,须要使用 Android studio 的 sync project with gradle files 功能同步工程设置;若是 android Studio 出现如下提示:

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.

则在 Project 根目录的 gradle.properties 文件中添加:

android.useDeprecatedNdk=true

3.1.2 配置 JGShareSDK.xml

配置 JGShareSDK.xml 的主要步骤为:

  • 复制或者新建 JGShareSDK.xml 到工程目录的 asset 目录下。 assets文件夹在main的根目录下

  • 把 JGShareSDK.xml 中相关的 AppKey、AppSecret 替换成本身在第三方平台建立的应用获得的信息。

  • 根据须要配置各个平台,不须要的平台能够删除。

JGShareSDK.xml 示例

<?xml version="1.0" encoding="utf-8"?>
<DevInfor>

    <!-- 若是不须要支持某平台,可缺省该平台的配置-->

    <SinaWeibo
        AppKey="新浪微博的AppKey"
        AppSecret="新浪微博的AppSecret"
        RedirectUrl="微博开放平台填写的受权回调页"/>

    <QQ
        AppId="QQ 的 AppId"
        AppKey="QQ 的 AppKey"/>

    <Wechat
        AppId="微信的 AppId"
        AppSecret="微信的 AppSectet"/>

</DevInfor>

3.1.3 配置微信平台回调

  • 在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自WeChatHandleActivity(例如应用程序的包名为 cn.jiguang.share.demo,则新添加的类以下图所示)

clipboard.png

注意: 若是复写了 onCreate 方法、onNewIntent 方法,那么必须调用父类方法,否者没法获取分享结果,例如:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
}
  • 并在 manifest 文件里面加上 exported 属性,设置为 true,例如:

<activity
    android:name=".wxapi.WXEntryActivity"
    android:exported="true" />

3.1.4 配置项目签名

Android Studio 图形界面签名配置

进入 Project Structure,选择您集成 JShare 的项目,具体配置如图:

clipboard.png

clipboard.png

Android Studio 手动配置签名

  • 在项目的 build.gradle 的 android 内部新增签名配置,例如:

signingConfigs {
        debug {
              storeFile file("jshare.jks") //签名文件路径
              storePassword "sdkteam"
              keyAlias "jshare"
              keyPassword "sdkteam" //签名密码
        }
        release {
             storeFile file("jshare.jks") //签名文件路径
             storePassword "sdkteam"
             keyAlias "jshare"
             keyPassword "sdkteam" //签名密码
        }
    }
  • 而后在项目的 build.gradle的buildTypes 使用签名配置,例如:

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
            signingConfig signingConfigs.debug
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }

4. 测试确认集成是否成功

  • 确认所须要的文件已经添加进工程

  • 确认 Androidmanifest.xml 已经正确配置

  • 确认 JGShareSDK.xml 已经正确配置

  • 根据以下日志肯定配置了什么平台,当输出以下日志表示各个平台已经集成成功

[PlatformManager] platform Wechat has configured
[PlatformManager] platform SinaWeibo has configured
[PlatformManager] platform QQ has configured

5. 编写分享代码
在项目的application中调用init接口初始化 sdk

public class Myapplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        JShareInterface.init(this);
    }
}

在MainActivity中编写代码

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btn_share).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //建立分享参数
                ShareParams shareParams = new ShareParams();
                //设置分享的数据类型
                shareParams.setShareType(Platform.SHARE_TEXT);
                shareParams.setText("分享的文本!!");
                shareParams.setTitle("分享的标题!!");
                //调用分享接口share ,分享到QQ平台。
                JShareInterface.share(QQ.Name, shareParams, new PlatActionListener() {
                    @Override
                    public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
                        Log.d(TAG, "onComplete");
                    }

                    @Override
                    public void onError(Platform platform, int i, int i1, Throwable throwable) {
                        Log.d(TAG, "onError");

                    }

                    @Override
                    public void onCancel(Platform platform, int i) {
                        Log.d(TAG, "onCancel");

                    }
                });
            }
        });

    }
}

运行成功后,点击share按钮,便可分享文本到QQ平台。

相关参考文档

JShare Android SDK 集成指南
JShare Android API 接口文档