| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- const { withInfoPlist, withAndroidManifest } = require('expo/config-plugins');
- /**
- * Local Expo Config Plugin for @uiw/react-native-alipay
- * Configures iOS URL Schemes and Android queries for Alipay SDK
- */
- const withAlipay = (config, { alipayScheme = 'alipay' } = {}) => {
- // iOS: Add URL Scheme for Alipay callback
- config = withInfoPlist(config, (config) => {
- if (!config.modResults.CFBundleURLTypes) {
- config.modResults.CFBundleURLTypes = [];
- }
- // Check if alipay scheme already exists
- const existingScheme = config.modResults.CFBundleURLTypes.find(
- (urlType) => urlType.CFBundleURLSchemes && urlType.CFBundleURLSchemes.includes(alipayScheme)
- );
- if (!existingScheme) {
- config.modResults.CFBundleURLTypes.push({
- CFBundleURLName: 'alipay',
- CFBundleURLSchemes: [alipayScheme],
- });
- }
- // Add LSApplicationQueriesSchemes for Alipay
- if (!config.modResults.LSApplicationQueriesSchemes) {
- config.modResults.LSApplicationQueriesSchemes = [];
- }
- const alipaySchemes = ['alipay', 'alipays', 'alipayshare'];
- alipaySchemes.forEach((scheme) => {
- if (!config.modResults.LSApplicationQueriesSchemes.includes(scheme)) {
- config.modResults.LSApplicationQueriesSchemes.push(scheme);
- }
- });
- return config;
- });
- // Android: Add queries for Alipay package
- config = withAndroidManifest(config, (config) => {
- const manifest = config.modResults.manifest;
- if (!manifest.queries) {
- manifest.queries = [];
- }
- // Add package query for Alipay
- const alipayPackage = { package: [{ $: { 'android:name': 'com.eg.android.AlipayGphone' } }] };
-
- // Check if already exists
- const hasAlipayQuery = manifest.queries.some(
- (q) => q.package && q.package.some((p) => p.$ && p.$['android:name'] === 'com.eg.android.AlipayGphone')
- );
- if (!hasAlipayQuery) {
- manifest.queries.push(alipayPackage);
- }
- return config;
- });
- return config;
- };
- module.exports = withAlipay;
|