@mikekhristo/expo-tiktok-opensdk
Version:
Expo module for TikTok OpenSDK (Fork of tiktok-opensdk-react-native)
69 lines (58 loc) • 2.54 kB
text/typescript
import { ConfigPlugin, createRunOncePlugin, withPlugins, withInfoPlist, withAndroidManifest, AndroidConfig } from '@expo/config-plugins';
const { addMetaDataItemToMainApplication, getMainApplicationOrThrow } = AndroidConfig.Manifest;
const pkg = require('../../package.json');
interface TikTokOpenSDKPluginProps {
iosClientKey: string;
androidClientKey: string;
iosUniversalLink?: string;
scheme?: string;
redirectScheme?: string;
}
const withTikTokOpenSDKAndroid: ConfigPlugin<TikTokOpenSDKPluginProps> = (config, props) => {
return withAndroidManifest(config, (config) => {
const mainApplication = getMainApplicationOrThrow(config.modResults);
// Add TikTok SDK activities
addMetaDataItemToMainApplication(mainApplication, 'com.bytedance.sdk.appKey', props.androidClientKey);
return config;
});
};
const withTikTokOpenSDKIOS: ConfigPlugin<TikTokOpenSDKPluginProps> = (config, props) => {
return withPlugins(config, [
[
withInfoPlist,
(config) => {
config.modResults.LSApplicationQueriesSchemes = config.modResults.LSApplicationQueriesSchemes || [];
if (!config.modResults.LSApplicationQueriesSchemes.includes('tiktokopensdk')) {
config.modResults.LSApplicationQueriesSchemes.push('tiktokopensdk');
}
if (!config.modResults.LSApplicationQueriesSchemes.includes('tiktoksharesdk')) {
config.modResults.LSApplicationQueriesSchemes.push('tiktoksharesdk');
}
if (!config.modResults.LSApplicationQueriesSchemes.includes('snssdk1180')) {
config.modResults.LSApplicationQueriesSchemes.push('snssdk1180');
}
if (!config.modResults.LSApplicationQueriesSchemes.includes('musically')) {
config.modResults.LSApplicationQueriesSchemes.push('musically');
}
config.modResults.TikTokClientKey = props.iosClientKey;
if (props.iosUniversalLink) {
config.modResults.TikTokUniversalLink = props.iosUniversalLink;
}
if (props.scheme) {
config.modResults.TikTokRedirectScheme = props.scheme;
}
if (props.redirectScheme) {
config.modResults.TikTokRedirectScheme = props.redirectScheme;
}
return config;
},
],
]);
};
const withTikTokOpenSDK: ConfigPlugin<TikTokOpenSDKPluginProps> = (config, props) => {
return withPlugins(config, [
[withTikTokOpenSDKAndroid, props],
[withTikTokOpenSDKIOS, props],
]);
};
export = createRunOncePlugin(withTikTokOpenSDK, pkg.name, pkg.version);