Files
hackathon-v-escape-4ff8b5a6…/frontend/node_modules/expo-application/ios/ApplicationModule.swift
marianesaldana 80dbd947e5 Initial commit
2026-05-23 08:59:34 -06:00

50 lines
1.8 KiB
Swift

// Copyright 2018-present 650 Industries. All rights reserved.
import ExpoModulesCore
public class ApplicationModule: Module {
public func definition() -> ModuleDefinition {
Name("ExpoApplication")
Constants {
let infoPlist = Bundle.main.infoDictionary
return [
"applicationName": infoPlist?["CFBundleDisplayName"],
"applicationId": infoPlist?["CFBundleIdentifier"],
"nativeApplicationVersion": infoPlist?["CFBundleShortVersionString"],
"nativeBuildVersion": infoPlist?["CFBundleVersion"]
]
}
AsyncFunction("getIosIdForVendorAsync") { () -> String? in
return UIDevice.current.identifierForVendor?.uuidString
}
AsyncFunction("getInstallationTimeAsync") { () -> Double in
guard let urlToDocumentsFolder = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last else {
throw UrlDocumentDirectoryException()
}
do {
let fileAttributes = try FileManager.default.attributesOfItem(atPath: urlToDocumentsFolder.path)
// Uses required reason API based on the following reason: C617.1
if let installDate = fileAttributes[FileAttributeKey.creationDate] as? Date {
return installDate.timeIntervalSince1970 * 1000
}
throw DateCastException()
} catch {
throw InstallationTimeException()
}
}
AsyncFunction("getApplicationReleaseTypeAsync") { () -> Int in
let mainProvisioningProfile = EXProvisioningProfile.main()
return mainProvisioningProfile.appReleaseType().rawValue
}
AsyncFunction("getPushNotificationServiceEnvironmentAsync") { () -> String? in
let mainProvisioningProfile = EXProvisioningProfile.main()
return mainProvisioningProfile.notificationServiceEnvironment()
}
}
}