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

相關文章
相關標籤/搜索