expo-duooomi-app/plugins/withIOSMemoryOptimization.js

51 lines
1.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const { withInfoPlist, withEntitlementsPlist } = require('@expo/config-plugins')
/**
* iOS 内存和渲染优化配置
* 针对大量图片/视频场景优化性能
*/
const withIOSMemoryOptimization = (config) => {
// 1. 配置 Info.plist
config = withInfoPlist(config, (config) => {
const infoPlist = config.modResults
// 启用 Metal 渲染(硬件加速)
infoPlist.UIRequiresPersistentWiFi = false
// 优化视图渲染
infoPlist.UIViewControllerBasedStatusBarAppearance = true
// 允许后台任务(用于图片预加载)
if (!infoPlist.UIBackgroundModes) {
infoPlist.UIBackgroundModes = []
}
if (!infoPlist.UIBackgroundModes.includes('fetch')) {
infoPlist.UIBackgroundModes.push('fetch')
}
// 优化 WKWebView 内存使用
infoPlist.WKWebViewOnly = true
// 允许文件访问(用于缓存)
infoPlist.NSAllowsArbitraryLoads = false
console.log('✅ withIOSMemoryOptimization: Info.plist 已优化')
return config
})
// 2. 配置 Entitlements如果需要
config = withEntitlementsPlist(config, (config) => {
const entitlements = config.modResults
// 启用数据保护(优化磁盘缓存)
entitlements['com.apple.developer.default-data-protection'] = 'NSFileProtectionComplete'
console.log('✅ withIOSMemoryOptimization: Entitlements 已优化')
return config
})
return config
}
module.exports = withIOSMemoryOptimization