-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(qqsdk): add qqsdk plugin (#1689)
- Loading branch information
Showing
1 changed file
with
263 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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<any>} Returns a Promise that resolves with the success return, or rejects with an error. | ||
*/ | ||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
ssoLogin(options: QQShareOptions): Promise<any> { | ||
return; | ||
} | ||
|
||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
logout(): Promise<any> { | ||
return; | ||
} | ||
|
||
/** | ||
* Detect if the QQ application or TIM application is installed on the device. | ||
* | ||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error. | ||
*/ | ||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
checkClientInstalled(options: QQShareOptions): Promise<any> { | ||
return; | ||
} | ||
|
||
/** | ||
* shareText | ||
* @param options | ||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error. | ||
*/ | ||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
shareText(options: QQShareOptions): Promise<any> { | ||
return; | ||
} | ||
|
||
/** | ||
* shareImage | ||
* @param options | ||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error. | ||
*/ | ||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
shareImage(options: QQShareOptions): Promise<any> { | ||
return; | ||
} | ||
|
||
/** | ||
* shareNews | ||
* @param options | ||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error. | ||
*/ | ||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
shareNews(options: QQShareOptions): Promise<any> { | ||
return; | ||
} | ||
|
||
/** | ||
* shareAudio | ||
* @param options | ||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error. | ||
*/ | ||
@Cordova({ | ||
callbackOrder: 'reverse' | ||
}) | ||
shareAudio(options: QQShareOptions): Promise<any> { | ||
return; | ||
} | ||
} |