Seamless API integration that bridges uni-app's universal APIs with Toutiao's platform-specific implementations through protocols and shims, ensuring consistent behavior across platforms.
The API module automatically initializes uni-app runtime with Toutiao-specific API adaptations and platform configurations. The module exports the result of initialization, not the function itself.
/**
* Pre-initialized uni-app runtime with Toutiao-specific shims and protocols
* This is the default export from the API module
*/
declare const initUni: any;Usage Example:
import initUni from "@dcloudio/uni-mp-toutiao/api";
// No need to call initUni() - it's already initialized
// The import automatically sets up API mappings and platform-specific behavior
// uni-app APIs are now ready to work with Toutiao platform
uni.login({ success: console.log });Platform-adapted navigation functions that handle Toutiao-specific routing and page management.
interface NavigationProtocols {
/** Navigate to a new page */
navigateTo: (options: NavigateToOptions) => void;
/** Redirect to a page, closing current page */
redirectTo: (options: RedirectToOptions) => void;
/** Preview images with Toutiao-specific options */
previewImage: (options: PreviewImageOptions) => void;
}
interface NavigateToOptions {
url: string;
success?: () => void;
fail?: (error: any) => void;
}
interface RedirectToOptions {
url: string;
success?: () => void;
fail?: (error: any) => void;
}
interface PreviewImageOptions {
urls: string[];
current?: string;
success?: () => void;
fail?: (error: any) => void;
}System and device information APIs adapted for Toutiao platform capabilities.
interface SystemProtocols {
/** Get system information asynchronously */
getSystemInfo: (options: SystemInfoOptions) => void;
/** Get system information synchronously */
getSystemInfoSync: () => SystemInfo;
/** Get base system information via tt.getSystemInfoSync() */
getBaseSystemInfo: () => BaseSystemInfo;
}
interface SystemInfoOptions {
success?: (result: SystemInfo) => void;
fail?: (error: any) => void;
}
interface SystemInfo {
brand: string;
model: string;
pixelRatio: number;
screenWidth: number;
screenHeight: number;
windowWidth: number;
windowHeight: number;
statusBarHeight: number;
language: string;
version: string;
system: string;
platform: string;
SDKVersion: string;
}
interface BaseSystemInfo {
platform: string;
system: string;
version: string;
}Device-specific functionality with Toutiao platform adaptations and limitations.
interface DeviceProtocols {
/** Start accelerometer with interval configuration */
startAccelerometer: (options: AccelerometerOptions) => void;
/** Scan QR/barcodes (excludes onlyFromCamera and scanType) */
scanCode: (options: ScanCodeOptions) => void;
/** Connect WebSocket (method parameter not supported) */
connectSocket: (options: SocketOptions) => void;
}
interface AccelerometerOptions {
interval?: 'game' | 'ui' | 'normal';
success?: () => void;
fail?: (error: any) => void;
}
interface ScanCodeOptions {
success?: (result: ScanResult) => void;
fail?: (error: any) => void;
// Note: onlyFromCamera and scanType not supported on Toutiao
}
interface ScanResult {
result: string;
scanType: string;
charSet: string;
path: string;
}
interface SocketOptions {
url: string;
protocols?: string[];
success?: () => void;
fail?: (error: any) => void;
// Note: method parameter not supported on Toutiao
}User authentication and information APIs with Toutiao-specific parameters and scopes.
interface UserProtocols {
/** User login with scopes and timeout options */
login: (options: LoginOptions) => void;
/** Get user information with language and timeout options */
getUserInfo: (options: UserInfoOptions) => void;
}
interface LoginOptions {
scopes?: string[];
timeout?: number;
success?: (result: LoginResult) => void;
fail?: (error: any) => void;
}
interface LoginResult {
code: string;
anonymousCode?: string;
}
interface UserInfoOptions {
withCredentials?: boolean;
lang?: string;
timeout?: number;
success?: (result: UserInfo) => void;
fail?: (error: any) => void;
}
interface UserInfo {
userInfo: {
nickName: string;
avatarUrl: string;
gender: number;
city: string;
province: string;
country: string;
language: string;
};
rawData: string;
signature: string;
encryptedData: string;
iv: string;
}Payment processing with dynamic method mapping for Toutiao platform variations.
interface PaymentProtocols {
/** Payment processing with dynamic method mapping */
requestPayment: PaymentProtocol;
}
interface PaymentProtocol {
/** Dynamic method name: 'pay' if tt.pay exists, otherwise 'requestPayment' */
name: string;
args: {
/** Parameter mapping: 'orderInfo' if using tt.pay, 'data' if using fallback */
orderInfo: string;
};
}
interface PaymentOptions {
/** Payment data (maps to 'data' when using fallback) */
orderInfo?: string;
/** Alternative payment data field */
data?: string;
success?: (result: PaymentResult) => void;
fail?: (error: any) => void;
}
interface PaymentResult {
[key: string]: any;
}Protocol Implementation:
// Actual protocol configuration
const requestPayment = {
name: tt.pay ? 'pay' : 'requestPayment',
args: {
orderInfo: tt.pay ? 'orderInfo' : 'data',
},
};Note: Uses tt.pay if available, otherwise falls back to requestPayment. When using fallback, orderInfo parameter is mapped to data.
Global error event management for application-wide error handling.
interface ErrorProtocols {
/** Add global error event listener */
onError: (callback: (error: string) => void) => void;
/** Remove global error listeners */
offError: (callback?: (error: string) => void) => void;
}Usage Example:
import initUni from "@dcloudio/uni-mp-toutiao/api";
// API runtime is already initialized on import
// Set up global error handling
uni.onError((error) => {
console.error('Global error:', error);
// Send error to logging service
});
// Handle specific errors
uni.offError(); // Remove all error listenersService provider detection for platform-specific functionality.
interface ProviderShims {
/** Detect available service providers */
getProvider: (options: ProviderOptions) => void;
}
interface ProviderOptions {
service: 'oauth' | 'share' | 'payment' | 'push';
success?: (result: ProviderResult) => void;
fail?: (error: any) => void;
}
interface ProviderResult {
service: string;
provider: string[];
}Supported Providers:
['toutiao']['toutiao']['toutiao']['toutiao']Usage Example:
import initUni from "@dcloudio/uni-mp-toutiao/api";
// API runtime is already initialized on import
// Check available payment providers
uni.getProvider({
service: 'payment',
success(result) {
console.log('Payment providers:', result.provider);
// Result: ['toutiao']
}
});
// Check OAuth providers
uni.getProvider({
service: 'oauth',
success(result) {
console.log('OAuth providers:', result.provider);
// Result: ['toutiao']
}
});Some APIs have parameter differences that are automatically handled:
orderInfo → data mapping when using fallback methodonlyFromCamera and scanType parametersmethod parameterAPIs that have multiple implementation methods on Toutiao:
// Payment API resolution
if (tt.pay) {
// Use tt.pay method
tt.pay(options);
} else {
// Fall back to tt.requestPayment with parameter mapping
tt.requestPayment({ data: options.orderInfo, ...otherOptions });
}All APIs integrate with Toutiao's global tt object:
tt.createApp, tt.createPage, tt.createComponenttt.EventChannel for event communication__PLATFORM__ === 'mp-toutiao'__GLOBAL__ === 'tt'