-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.config.js
More file actions
123 lines (122 loc) · 4.23 KB
/
Copy pathapp.config.js
File metadata and controls
123 lines (122 loc) · 4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Dynamic Expo config — replaces app.json
// Keys are injected from environment variables / EAS Secrets at build time.
//
// Required EAS Secrets:
// eas secret:create --scope project --name REVENUECAT_IOS_KEY --value <ios_key>
// eas secret:create --scope project --name REVENUECAT_ANDROID_KEY --value <android_key>
// eas secret:create --scope project --name ADMOB_APP_ID_IOS --value ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX
// eas secret:create --scope project --name ADMOB_APP_ID_ANDROID --value ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX
//
// Local development (no EAS):
// export REVENUECAT_IOS_KEY=appl_...
// export ADMOB_APP_ID_IOS=ca-app-pub-3940256099942544~1458002511 (Google test App ID)
export default {
expo: {
name: 'OutWeather',
slug: 'microweather',
scheme: 'outweather',
version: '1.1.0',
orientation: 'portrait',
icon: './assets/icon.png',
userInterfaceStyle: 'automatic',
splash: {
image: './assets/splash.png',
resizeMode: 'contain',
backgroundColor: '#0f172a',
},
assetBundlePatterns: ['**/*'],
ios: {
supportsTablet: true,
bundleIdentifier: 'com.antigravity.outweather',
infoPlist: {
UIBackgroundModes: ['location', 'fetch', 'remote-notification'],
},
entitlements: {
'com.apple.security.application-groups': ['group.com.outweather.app'],
},
},
android: {
versionCode: 2,
adaptiveIcon: {
foregroundImage: './assets/adaptive-icon.png',
backgroundColor: '#0f172a',
},
package: 'com.antigravity.outweather',
permissions: [
'ACCESS_COARSE_LOCATION',
'ACCESS_FINE_LOCATION',
'ACCESS_BACKGROUND_LOCATION',
'FOREGROUND_SERVICE',
'RECEIVE_BOOT_COMPLETED',
'NOTIFICATIONS',
'android.permission.ACCESS_COARSE_LOCATION',
'android.permission.ACCESS_FINE_LOCATION',
'android.permission.health.READ_STEPS',
'android.permission.health.READ_DISTANCE',
'android.permission.health.READ_TOTAL_CALORIES_BURNED'
],
},
web: {
favicon: './assets/favicon.png',
},
plugins: [
'expo-asset',
'expo-font',
'expo-notifications',
'expo-location',
'expo-secure-store',
'@react-native-community/datetimepicker',
[
'expo-build-properties',
{
android: {
minSdkVersion: 26,
},
},
],
// Google Mobile Ads — must appear before the build runs native config
[
'react-native-google-mobile-ads',
{
androidAppId: process.env.ADMOB_APP_ID_ANDROID || 'ca-app-pub-3940256099942544~3347511713',
iosAppId: process.env.ADMOB_APP_ID_IOS || 'ca-app-pub-3940256099942544~1458002511',
// Delay measurement (ATT prompt) — recommended for iOS privacy compliance
delay_app_measurement_init: true,
// User tracking usage description shown in iOS ATT prompt
user_tracking_usage_description:
'This allows OutWeather to show you relevant ads that support free access to weather data.',
// Set to false for GDPR/CCPA if you implement a proper CMP
android_request_tracking_id: false,
},
],
[
'react-native-android-widget',
{
widgets: [
{
name: 'WeatherWidget',
label: 'OutWeather Activity',
minWidth: '180dp',
minHeight: '110dp',
description: 'Shows your activity score at a glance',
previewImage: './assets/widget_preview.png',
resizeMode: 'horizontal|vertical',
widgetFeatures: 'reconfigurable',
updatePeriodMillis: 1800000,
},
],
},
],
],
extra: {
eas: {
projectId: '847feb51-37ae-4836-9e4d-0275b3cb1dbe',
},
sentryDsn: process.env.SENTRY_DSN,
// RevenueCat keys — injected at build time from EAS Secrets / env vars.
// null → purchases disabled gracefully (no Pro granted — see SubscriptionContext)
revenueCatAndroidKey: process.env.REVENUECAT_ANDROID_KEY || null,
revenueCatIosKey: process.env.REVENUECAT_IOS_KEY || null,
},
},
};