* feat(native): Capacitor mobile app shell with native features Adds iOS + Android native app via Capacitor WebView wrapper pointing at the live deployment. Includes push notifications, biometric auth, camera with offline photo queue, offline detection, status bar theming, keyboard handling, and deep linking. Zero server-side refactoring required -- web deploys update the app instantly. * docs(native): add developer documentation for iOS and Android --------- Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>
377 lines
14 KiB
Plaintext
Executable File
377 lines
14 KiB
Plaintext
Executable File
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 60;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; };
|
|
4D22ABE92AF431CB00220026 /* CapApp-SPM in Frameworks */ = {isa = PBXBuildFile; productRef = 4D22ABE82AF431CB00220026 /* CapApp-SPM */; };
|
|
50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; };
|
|
504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; };
|
|
504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; };
|
|
504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; };
|
|
504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; };
|
|
50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = "<group>"; };
|
|
50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = "<group>"; };
|
|
504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
|
504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
|
504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
|
504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; };
|
|
958DCC722DB07C7200EA8C5F /* debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = debug.xcconfig; path = ../debug.xcconfig; sourceTree = SOURCE_ROOT; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
504EC3011FED79650016851F /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
4D22ABE92AF431CB00220026 /* CapApp-SPM in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin PBXGroup section */
|
|
504EC2FB1FED79650016851F = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
958DCC722DB07C7200EA8C5F /* debug.xcconfig */,
|
|
504EC3061FED79650016851F /* App */,
|
|
504EC3051FED79650016851F /* Products */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
504EC3051FED79650016851F /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
504EC3041FED79650016851F /* App.app */,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
504EC3061FED79650016851F /* App */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
50379B222058CBB4000EE86E /* capacitor.config.json */,
|
|
504EC3071FED79650016851F /* AppDelegate.swift */,
|
|
504EC30B1FED79650016851F /* Main.storyboard */,
|
|
504EC30E1FED79650016851F /* Assets.xcassets */,
|
|
504EC3101FED79650016851F /* LaunchScreen.storyboard */,
|
|
504EC3131FED79650016851F /* Info.plist */,
|
|
2FAD9762203C412B000D30F8 /* config.xml */,
|
|
50B271D01FEDC1A000F3C39B /* public */,
|
|
);
|
|
path = App;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
504EC3031FED79650016851F /* App */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */;
|
|
buildPhases = (
|
|
504EC3001FED79650016851F /* Sources */,
|
|
504EC3011FED79650016851F /* Frameworks */,
|
|
504EC3021FED79650016851F /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = App;
|
|
packageProductDependencies = (
|
|
4D22ABE82AF431CB00220026 /* CapApp-SPM */,
|
|
);
|
|
productName = App;
|
|
productReference = 504EC3041FED79650016851F /* App.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
504EC2FC1FED79650016851F /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
LastSwiftUpdateCheck = 0920;
|
|
LastUpgradeCheck = 0920;
|
|
TargetAttributes = {
|
|
504EC3031FED79650016851F = {
|
|
CreatedOnToolsVersion = 9.2;
|
|
LastSwiftMigration = 1100;
|
|
ProvisioningStyle = Automatic;
|
|
};
|
|
};
|
|
};
|
|
buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */;
|
|
compatibilityVersion = "Xcode 8.0";
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
en,
|
|
Base,
|
|
);
|
|
mainGroup = 504EC2FB1FED79650016851F;
|
|
packageReferences = (
|
|
D4C12C0A2AAA248700AAC8A2 /* XCLocalSwiftPackageReference "CapApp-SPM" */,
|
|
);
|
|
productRefGroup = 504EC3051FED79650016851F /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
504EC3031FED79650016851F /* App */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
504EC3021FED79650016851F /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */,
|
|
50B271D11FEDC1A000F3C39B /* public in Resources */,
|
|
504EC30F1FED79650016851F /* Assets.xcassets in Resources */,
|
|
50379B232058CBB4000EE86E /* capacitor.config.json in Resources */,
|
|
504EC30D1FED79650016851F /* Main.storyboard in Resources */,
|
|
2FAD9763203C412B000D30F8 /* config.xml in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
504EC3001FED79650016851F /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
504EC3081FED79650016851F /* AppDelegate.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin PBXVariantGroup section */
|
|
504EC30B1FED79650016851F /* Main.storyboard */ = {
|
|
isa = PBXVariantGroup;
|
|
children = (
|
|
504EC30C1FED79650016851F /* Base */,
|
|
);
|
|
name = Main.storyboard;
|
|
sourceTree = "<group>";
|
|
};
|
|
504EC3101FED79650016851F /* LaunchScreen.storyboard */ = {
|
|
isa = PBXVariantGroup;
|
|
children = (
|
|
504EC3111FED79650016851F /* Base */,
|
|
);
|
|
name = LaunchScreen.storyboard;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXVariantGroup section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
504EC3141FED79650016851F /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
baseConfigurationReference = 958DCC722DB07C7200EA8C5F /* debug.xcconfig */;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
CLANG_WARN_COMMA = YES;
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"DEBUG=1",
|
|
"$(inherited)",
|
|
);
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
MTL_ENABLE_DEBUG_INFO = YES;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
};
|
|
name = Debug;
|
|
};
|
|
504EC3151FED79650016851F /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
CLANG_WARN_COMMA = YES;
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_COMPILATION_MODE = wholemodule;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
|
VALIDATE_PRODUCT = YES;
|
|
};
|
|
name = Release;
|
|
};
|
|
504EC3171FED79650016851F /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
baseConfigurationReference = 958DCC722DB07C7200EA8C5F /* debug.xcconfig */;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
INFOPLIST_FILE = App/Info.plist;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
MARKETING_VERSION = 1.0;
|
|
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
|
PRODUCT_BUNDLE_IDENTIFIER = ltd.openrangeconstruction.compass;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
504EC3181FED79650016851F /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
INFOPLIST_FILE = App/Info.plist;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = ltd.openrangeconstruction.compass;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
504EC3141FED79650016851F /* Debug */,
|
|
504EC3151FED79650016851F /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
504EC3171FED79650016851F /* Debug */,
|
|
504EC3181FED79650016851F /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
|
|
/* Begin XCLocalSwiftPackageReference section */
|
|
D4C12C0A2AAA248700AAC8A2 /* XCLocalSwiftPackageReference "CapApp-SPM" */ = {
|
|
isa = XCLocalSwiftPackageReference;
|
|
relativePath = "CapApp-SPM";
|
|
};
|
|
/* End XCLocalSwiftPackageReference section */
|
|
|
|
/* Begin XCSwiftPackageProductDependency section */
|
|
4D22ABE82AF431CB00220026 /* CapApp-SPM */ = {
|
|
isa = XCSwiftPackageProductDependency;
|
|
package = D4C12C0A2AAA248700AAC8A2 /* XCLocalSwiftPackageReference "CapApp-SPM" */;
|
|
productName = "CapApp-SPM";
|
|
};
|
|
/* End XCSwiftPackageProductDependency section */
|
|
};
|
|
rootObject = 504EC2FC1FED79650016851F /* Project object */;
|
|
}
|