Push, dominios asociados, keychain y modos de fondo - configurar los derechos de iOS a través de app.config.ts y complementos de configuración para que Expo prebuild escriba el archivo .entitlements correcto antes de EAS Build o TestFlight.
import * as SecureStore from "expo-secure-store";await SecureStore.setItemAsync("refresh_token", token, { keychainAccessible: SecureStore.WHEN_UNLOCKED, // accessGroup: "group.com.example.shopapp", // cuando la extensión debe leer el mismo secreto});
Los identificadores de grupos de aplicaciones deben coincidir entre la app principal y las extensiones (widgets).
El compartir de keychain requiere un grupo de acceso idéntico en los derechos de ambos destinos.
Los derechos son pares clave-valor en YourApp.entitlements que el código de Apple firma en la IPA. Controlan APIs:
<!-- Fragmento generado - no editar manualmente bajo CNG --><key>com.apple.developer.associated-domains</key><array> <string>applinks:shop.example.com</string></array><key>aps-environment</key><string>development</string> <!-- production en compilaciones de App Store -->
// Prefiere campos de configuración de alto nivel cuando Expo los documentaios: { associatedDomains: ["applinks:example.com"] }// Usa ios.entitlements para claves sin campos de primera claseios: { entitlements: { "com.apple.developer.networking.networkextension": ["app-proxy-provider"], },}// O un complemento de configuración local con withEntitlementsPlist
Ver Config Plugins - withEntitlementsPlist es la salida de emergencia.
Editar Signing & Capabilities en Xcode bajo CNG - se sobrescribe en prebuild. Solución: solo app.config.ts.
Falta el prefijo applinks: - el dominio asociado se ignora silenciosamente. Solución:applinks:host.example.com.
Esperar que OTA agregue push o dominios - los derechos son nativos. Solución: nuevo eas build.
UIBackgroundModes sin implementación - rechazo de Directriz 2.5.4. Solución: elimina los modos no utilizados.
Expo Go para control de calidad de enlace universal - ID de agrupamiento incorrecto. Solución: cliente dev con tu bundleIdentifier.
El widget lee keychain pero sin grupo de aplicaciones - la extensión no puede ver datos de la app principal. Solución: identificadores group. coincidentes - ver App Extensions & Widgets.
eas build ejecuta prebuild (a menos que ios/ esté confirmado) y firma con credenciales que coinciden con las capacidades de App ID habilitadas en el portal de desarrollador de Apple.
La capacidad del portal debe estar ACTIVADA y la configuración debe declarar el derecho.
¿Qué hay de iCloud o HealthKit?
Habilita en el portal de desarrollador de Apple, agrega derecho a través de complemento de configuración, proporciona notas de revisión y justificación de uso.
HealthKit requiere necesidad de característica explícita - los derechos especulativos desencadenan rechazo.