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

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

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

2.1 极光开发者帐号及appkey

打开极光官网(https://www.jiguang.cn/),点击注册按钮注册开发者帐号;在极光 控制台上创建应用,得到 appkey。详情参考控制台使用指南;如果之前已经使用了 JPush,可以直接延用老的 appkey。

2.2 申请微信appID

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

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

提交审核,审核通过后即可获得 appID 和 appsecret进行开发。 需要特别注意的是在申请时填写的包名和签名必须与你开发的应用相对应,否则会导致微信平台无法分享。填写的签名通过签名生成工具获得。

2.3 申请新浪微博appkey

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

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

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

2.4 申请QQ的appID

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

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

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

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,则新添加的类如下图所示)

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

注意: 如果复写了 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 的项目,具体配置如图:

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

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

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 接口文档

相关推荐