Files
MapLibreParticleLab/platform/darwin/src/NSBundle+MLNAdditions.mm

55 lines
2.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import "NSBundle+MLNAdditions.h"
#import "MLNSettings.h"
const MLNExceptionName MLNBundleNotFoundException = @"MLNBundleNotFoundException";
@implementation NSBundle (MLNAdditions)
+ (instancetype)mgl_frameworkBundle {
NSBundle *bundle = [self bundleForClass:[MLNSettings class]];
#ifndef MLN_CUSTOM_COMBINED_BUNDLE
if (![bundle.infoDictionary[@"CFBundlePackageType"] isEqualToString:@"FMWK"]) {
// For static frameworks, the bundle is the containing application
// bundle but the resources are in Mapbox.bundle.
NSString *bundlePath = [bundle pathForResource:@"Mapbox" ofType:@"bundle"];
if (bundlePath) {
bundle = [self bundleWithPath:bundlePath];
} else {
[NSException raise:MLNBundleNotFoundException
format:@"The MapLibre framework bundle could not be found. If using MapLibre "
@"iOS as a static framework, make sure that MapLibre bundle is copied "
@"into the root of the app bundle."];
}
}
#endif
return bundle;
}
+ (nullable NSString *)mgl_frameworkBundleIdentifier {
return self.mgl_frameworkInfoDictionary[@"CFBundleIdentifier"];
}
+ (nullable NSDictionary<NSString *, id> *)mgl_frameworkInfoDictionary {
NSBundle *bundle = self.mgl_frameworkBundle;
return bundle.infoDictionary;
}
+ (nullable NSString *)mgl_applicationBundleIdentifier {
NSString *bundleIdentifier = [NSBundle mainBundle].bundleIdentifier;
#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED < 120200)) || \
(defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && (__MAC_OS_X_VERSION_MAX_ALLOWED < 101404))
// Before SDK 12.2 (bundled with Xcode 10.2): There’s no main bundle identifier when running in a
// unit test bundle. 12.2 and after: the above bundle identifier is: com.apple.dt.xctest.tool
if (!bundleIdentifier) {
bundleIdentifier = [NSBundle bundleForClass:[MLNSettings class]].bundleIdentifier;
}
#endif
return bundleIdentifier;
}
@end