UNPKG

react-native-acoustic-connect-beta

Version:

BETA: React native plugin for Acoustic Connect

88 lines 4.69 kB
import { type ConfigPlugin } from '@expo/config-plugins'; import type { ExpoConfig } from '@expo/config-types'; import { type ConnectPluginProps } from './withConnectNSE'; /** * Generates the Info.plist content for the ConnectNCE target. * * The NSExtensionAttributes mirror the canonical bare-workflow reference * (Examples/bare-workflow/ios/ConnectNCE/Info.plist), which itself mirrors the * iOS-SDK NCE 1:1: * - UNNotificationExtensionCategory: the category identifiers the Connect * APNs payload routes rich-media notifications through. Must match the * category the SDK/Collector sets — keep in sync with the iOS-SDK NCE. * - UNNotificationExtensionDefaultContentHidden=false: keep the default * system body alongside the custom content view. * - UNNotificationExtensionInitialContentSizeRatio=1.0: start full-height; * the SDK content controller resizes to fit the rendered media. * * RCTNewArchEnabled is intentionally omitted: the NCE links the Connect SDK * only — no React Native runtime is present in the extension process. (The * bare-workflow reference carries it as an Xcode-template leftover; the * plugin-generated target drops it, consistent with the NSE template.) */ export declare function buildNCEInfoPlist(): string; /** Generates the entitlements plist content for the ConnectNCE target. */ export declare function buildNCEEntitlements(appGroupIdentifier: string): string; /** * Returns the Ruby snippet to inject into the Expo-generated Podfile for the * ConnectNCE target. Thin wrapper over the shared * {@link buildConnectPodTargetBlock} (single source of truth for the * AcousticConnect pod-resolution helper), parameterised with the NCE marker, * helper name, and target name. */ export declare function buildPodfileBlock(): string; /** * Injects the ConnectNCE Podfile block into `podfileContent` if not already * present (idempotent, guarded by PODFILE_MARKER). */ export declare function injectPodfileBlock(podfileContent: string): string; /** * Adds the ConnectNCE Xcode target (app_extension) to the project. * * Sibling to withNSEXcodeProject; the only differences are the target name, * the Swift source file (NotificationViewController.swift), the NCE Info.plist * (content-extension NSExtension keys), and skipping BOTH extension targets' * configs when mirroring host build settings. * * Idempotent: if a target named ConnectNCE already exists, skips target * creation but still (re)writes the source files. */ export declare function withNCEXcodeProject(config: ExpoConfig, appGroupIdentifier: string, swiftContent: string): ExpoConfig; /** * Injects the ConnectNCE Podfile target block via withDangerousMod. * Guarded by a marker comment — re-runs are no-ops. * * Throws a clear, actionable error when the Podfile does not exist at * mod-execution time, instead of silently returning — a silent skip would * ship an NCE whose `import Connect` cannot resolve. */ export declare function withNCEPodfile(config: ExpoConfig): ExpoConfig; /** * Expo Config Plugin mod that provisions a Notification Content Extension * (NCE) Xcode target named `ConnectNCE`. * * Applies three mutations — all idempotent: * 1. Host app entitlements: merges App Group into * `com.apple.security.application-groups` (reuses the NSE host-entitlements * mod — the host shares one App Group across app + NSE + NCE; the merge is * a no-op when the NSE mod already added it). * 2. Xcode project: adds ConnectNCE target + files (skips if already present). * 3. Podfile: injects `target 'ConnectNCE'` block (guarded by marker comment). * * `config._internal.projectRoot` is required (injected by Expo CLI during * `expo prebuild`); an actionable error is thrown if absent rather than * silently falling back to `process.cwd()`. * * NSE coupling (intentional, tracked for refactor): this mod deliberately * reuses three pieces of withConnectNSE — `withNSEEntitlements` (the host App * Group is shared across app + NSE + NCE), `buildConnectPodTargetBlock` (one * source for the pod-resolution helper), and `getHostBuildSettingForConfig` * (the per-config mirroring logic). The composition always runs withConnectNSE * before withConnectNCE, so the shared host entitlement and the * PBXTargetDependency/PBXContainerItemProxy sections already exist when this * runs. Extracting a shared `withConnectExtension` base for NSE + NCE is * tracked as a follow-up refactor (see PR description) rather than done here, * to keep the already-landed NSE mod stable. */ export declare const withConnectNCE: ConfigPlugin<ConnectPluginProps>; //# sourceMappingURL=withConnectNCE.d.ts.map