diff --git a/src/@ionic-native/plugins/qqsdk/index.ts b/src/@ionic-native/plugins/qqsdk/index.ts new file mode 100644 index 000000000..a4ddf819c --- /dev/null +++ b/src/@ionic-native/plugins/qqsdk/index.ts @@ -0,0 +1,263 @@ +import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; +import { Injectable } from '@angular/core'; + +export interface QQShareOptions { + + /** + * The clinet type, QQ or TIM + * Default is QQ + */ + client?: number; + + /** + * The Share Sence + * Default is QQ + */ + scene?: number; + + /** + * The text for shareText + */ + text?: string; + + /** + * The url for share news or audio + */ + url?: string; + + /** + * The title for share image,news or audio + */ + title?: string; + + /** + * The description for share image,news or audio + */ + description?: string; + + /** + * The image for share image,news or audio + * Image supports three types: + * 1. Network URL + * 2. Base64 + * 3. Absolute file path + */ + image?: string; + + /** + * The URL for audio + */ + flashUrl?: string; +} + +/** + * @name QQSDK + * @description + * This Plugin is a wrapper around the Tencent QQ SDK for Android and iOS. Provides access to QQ ssoLogin, QQ Sharing, QQZone Sharing etc. + * + * Requires Cordova plugin: `cordova-plugin-qqsdk`. For more info, please see the [QQSDK plugin docs](https://github.com/iVanPan/Cordova_QQ). + * + * @usage + * ```typescript + * import { QQSDK, QQShareOptions } from '@ionic-native/qqsdk'; + * + * constructor(private qq: QQSDK) { } + * + * ... + * + * + * const options: QQShareOptions = { + * client: this.qq.ClientType.QQ, + * scene: this.qq.Scene.QQ, + * title: 'This is a title for cordova-plugin-qqsdk', + * url: 'https://cordova.apache.org/', + * image: 'https://cordova.apache.org/static/img/cordova_bot.png', + * description: 'This is Cordova QQ share description', + * flashUrl: 'http://stream20.qqmusic.qq.com/30577158.mp3', + * }; + * + * const clientOptions: QQShareOptions = { + * client: this.qq.ClientType.QQ, + * }; + * + * const shareTextOptions: QQShareOptions = { + * client: this.qq.ClientType.QQ, + * text: 'This is Share Text', + * scene: this.qq.Scene.QQ, + * }; + * + * this.qq.ssoLogin(clientOptions) + * .then(result => { + * // Success + * console.log('token is ' + result.access_token); + * console.log('userid is ' + result.userid); + * console.log('expires_time is ' + new Date(parseInt(result.expires_time)) + ' TimeStamp is ' + result.expires_time); + * }) + * .catch(error => { + * console.log(error); // Failed + * }); + * + * this.qq.logout() + * .then(() => { + * console.log('logout success'); + * }) + * .catch(error => { + * console.log(error); + * }); + * + * this.qq.checkClientInstalled(clientOptions) + * .then(() => { + * console.log('Installed'); + * }) + * .catch(() => { + * console.log('Not Installed'); + * }); + * + * this.qq.shareText(shareTextOptions) + * .then(() => { + * console.log('shareText success'); + * }) + * .catch(error => { + * console.log(error); + * }); + * + * this.qq.shareImage(options) + * .then(() => { + * console.log('shareImage success'); + * }) + * .catch(error => { + * console.log(error); + * }); + * } + * + * this.qq.shareNews(options) + * .then(() => { + * console.log('shareNews success'); + * }) + * .catch(error => { + * console.log(error); + * }); + * } + * + * this.qq.shareAudio(options) + * .then(() => { + * console.log('shareAudio success'); + * }) + * .catch(error => { + * console.log(error); + * }); + * + * ``` + * + * @interfaces + * QQShareOptions + */ +@Plugin({ + pluginName: 'QQSDK', + plugin: 'cordova-plugin-qqsdk', + pluginRef: 'QQSDK', + repo: 'https://github.com/iVanPan/Cordova_QQ', + platforms: ['Android', 'iOS'], + install: 'ionic cordova plugin add cordova-plugin-qqsdk --variable QQ_APP_ID=YOUR_QQ_APPID', + installVariables: ['QQ_APP_ID'], +}) +@Injectable() +export class QQSDK extends IonicNativePlugin { + + /** + * QQ Share Scene + * @type {{QQ: number; QQZone: number; Favorite: number}} + */ + Scene = { + QQ: 0, + QQZone: 1, + Favorite: 2 + }; + /** + * client type: QQ application or TIM application + * @type {{QQ: number; TIM: number}} + */ + ClientType = { + QQ: 0, + TIM: 1 + }; + + /** + * open QQ or TIM client perform ssoLogin + * @param options + * @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error. + */ + @Cordova({ + callbackOrder: 'reverse' + }) + ssoLogin(options: QQShareOptions): Promise { + return; + } + + @Cordova({ + callbackOrder: 'reverse' + }) + logout(): Promise { + return; + } + + /** + * Detect if the QQ application or TIM application is installed on the device. + * + * @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error. + */ + @Cordova({ + callbackOrder: 'reverse' + }) + checkClientInstalled(options: QQShareOptions): Promise { + return; + } + + /** + * shareText + * @param options + * @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error. + */ + @Cordova({ + callbackOrder: 'reverse' + }) + shareText(options: QQShareOptions): Promise { + return; + } + + /** + * shareImage + * @param options + * @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error. + */ + @Cordova({ + callbackOrder: 'reverse' + }) + shareImage(options: QQShareOptions): Promise { + return; + } + + /** + * shareNews + * @param options + * @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error. + */ + @Cordova({ + callbackOrder: 'reverse' + }) + shareNews(options: QQShareOptions): Promise { + return; + } + + /** + * shareAudio + * @param options + * @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error. + */ + @Cordova({ + callbackOrder: 'reverse' + }) + shareAudio(options: QQShareOptions): Promise { + return; + } +}