ASIdentifierManager is not found in iOS12












5















I m writing here cos I'm really stuck and can't find an answer.



We have a small framework who can collect IDFA inside.
For IDFA collection first at all we checks NSClassFromString(@"ASIdentifierManager")



The problem is:



Imagine we have a client and this client released version for iOS10-iOS12.
And this client gets IDFA for iOS10 and iOS11, but for all iOS12 there is no IDFA at all! After logs checked we have found that NSClassFromString(@"ASIdentifierManager") is nil only for iOS12..



How the client could add a framework for iOS10, 11 but not for iOS12?



On the other hand, another client is doing well with iOS12.










share|improve this question

























  • Have you tried the @import AdSupport; or link against the framework in project?

    – Itachi
    Nov 15 '18 at 7:42











  • We have #include <AdSupport/AdSupport.h>. And again - the same build works for iOS10, 11. But not for iOS12. Looks like client somehow exclude linking exactly for iOS12 - but how

    – Andrey Gagan
    Nov 15 '18 at 10:15


















5















I m writing here cos I'm really stuck and can't find an answer.



We have a small framework who can collect IDFA inside.
For IDFA collection first at all we checks NSClassFromString(@"ASIdentifierManager")



The problem is:



Imagine we have a client and this client released version for iOS10-iOS12.
And this client gets IDFA for iOS10 and iOS11, but for all iOS12 there is no IDFA at all! After logs checked we have found that NSClassFromString(@"ASIdentifierManager") is nil only for iOS12..



How the client could add a framework for iOS10, 11 but not for iOS12?



On the other hand, another client is doing well with iOS12.










share|improve this question

























  • Have you tried the @import AdSupport; or link against the framework in project?

    – Itachi
    Nov 15 '18 at 7:42











  • We have #include <AdSupport/AdSupport.h>. And again - the same build works for iOS10, 11. But not for iOS12. Looks like client somehow exclude linking exactly for iOS12 - but how

    – Andrey Gagan
    Nov 15 '18 at 10:15
















5












5








5


1






I m writing here cos I'm really stuck and can't find an answer.



We have a small framework who can collect IDFA inside.
For IDFA collection first at all we checks NSClassFromString(@"ASIdentifierManager")



The problem is:



Imagine we have a client and this client released version for iOS10-iOS12.
And this client gets IDFA for iOS10 and iOS11, but for all iOS12 there is no IDFA at all! After logs checked we have found that NSClassFromString(@"ASIdentifierManager") is nil only for iOS12..



How the client could add a framework for iOS10, 11 but not for iOS12?



On the other hand, another client is doing well with iOS12.










share|improve this question
















I m writing here cos I'm really stuck and can't find an answer.



We have a small framework who can collect IDFA inside.
For IDFA collection first at all we checks NSClassFromString(@"ASIdentifierManager")



The problem is:



Imagine we have a client and this client released version for iOS10-iOS12.
And this client gets IDFA for iOS10 and iOS11, but for all iOS12 there is no IDFA at all! After logs checked we have found that NSClassFromString(@"ASIdentifierManager") is nil only for iOS12..



How the client could add a framework for iOS10, 11 but not for iOS12?



On the other hand, another client is doing well with iOS12.







ios objective-c frameworks ios12 idfa






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 11:18







Andrey Gagan

















asked Nov 14 '18 at 10:30









Andrey GaganAndrey Gagan

661811




661811













  • Have you tried the @import AdSupport; or link against the framework in project?

    – Itachi
    Nov 15 '18 at 7:42











  • We have #include <AdSupport/AdSupport.h>. And again - the same build works for iOS10, 11. But not for iOS12. Looks like client somehow exclude linking exactly for iOS12 - but how

    – Andrey Gagan
    Nov 15 '18 at 10:15





















  • Have you tried the @import AdSupport; or link against the framework in project?

    – Itachi
    Nov 15 '18 at 7:42











  • We have #include <AdSupport/AdSupport.h>. And again - the same build works for iOS10, 11. But not for iOS12. Looks like client somehow exclude linking exactly for iOS12 - but how

    – Andrey Gagan
    Nov 15 '18 at 10:15



















Have you tried the @import AdSupport; or link against the framework in project?

– Itachi
Nov 15 '18 at 7:42





Have you tried the @import AdSupport; or link against the framework in project?

– Itachi
Nov 15 '18 at 7:42













We have #include <AdSupport/AdSupport.h>. And again - the same build works for iOS10, 11. But not for iOS12. Looks like client somehow exclude linking exactly for iOS12 - but how

– Andrey Gagan
Nov 15 '18 at 10:15







We have #include <AdSupport/AdSupport.h>. And again - the same build works for iOS10, 11. But not for iOS12. Looks like client somehow exclude linking exactly for iOS12 - but how

– Andrey Gagan
Nov 15 '18 at 10:15














1 Answer
1






active

oldest

votes


















2














This may not answer your question completely, just text what I know and my guess.



First, the dynamic frameworks won't be loaded in your app process until you use it, such as the frameworks under the directory which are available in iOS with simulator device.



> cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
> # Now there are plenty of frameworks here.
> file AdSupport.framework/AdSupport
Mach-O 64-bit dynamically linked shared library x86_64


How to use it? TLDR, call it with [ASIdentifierManager sharedManager] in your app anywhere, link against the framework firstly and compile it successfully, of course.



Second, what's the difference between using NSClassFromString() directly and calling [ASIdentifierManager sharedManager] anywhere?



For the former case, your application won't load the AdSupport framework bundle since there are not symbol named ASIdentifierManager in your executable program when the os kernel loads your program, it can be proved by print your app main bundle path and find the app executable file, try to nm <path/to/executable_app> | grep "ASIdentifierManager", nothing will be found in result since you didn't use it.



For the latter one, try to grep the same symbol in the executable program, there it is.




Note: it's not os kernel loads the frameworks by nm result list but the kernel loads the frameworks containing the symbols, check out more info about the dynamic loader dyld.




Third, NSClassFromString only checks the loaded classes, if the AdSupport framework doesn't be loaded, it returns nil without trying to load the framework containing the target class.



Forth, it's impossible to recall the difference between in iOS 10/11 and iOS 12 until you paste out more context about the IDFA and AdSupport framework usage in your project. Here is my one guess, some of the dependent libraries use the AdSupport framework in the early version but iOS 12, you have to try to dump the symbol list between in iOS 11 and iOS 12 and compare the result.



Fifth, I'm not sure what you want, maybe you're trying to avoid importing AdSupport framework explicitly, how about initializing a NSBundle by framework path and call the -(BOOL)load of NSBundle class, then you could get the Class object with NSClassFromString.



UPDATE:



NSString *strFrameworkPath = nil;

#if TARGET_OS_SIMULATOR
strFrameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"];
#else
// Assume that the AdSupport and Foundation framework are in the same directory.
strFrameworkPath = [NSBundle bundleForClass:NSPredicate.class].bundlePath;
strFrameworkPath = [strFrameworkPath stringByDeletingLastPathComponent];
#endif

strFrameworkPath = [strFrameworkPath stringByAppendingPathComponent:@"AdSupport.framework"];
NSAssert([[NSFileManager defaultManager] fileExistsAtPath:strFrameworkPath], @"Invalid framework bundle path!");

NSBundle *bundle = [NSBundle bundleWithPath:strFrameworkPath];

if (!bundle.isLoaded) {
NSError *error = nil;

if (![bundle loadAndReturnError:&error]) {
DDLogError(@"Load framework bundle %@ with error %@", bundle, error);
}
}

DDLogDebug(@"bundle: %@", bundle.bundlePath);
DDLogDebug(@"class: %@", NSClassFromString(@"ASIdentifierManager"));


You may need to enhance the compatibility of kinds of the device for products, for more details about the NSBundle usage, check out the official documentation here.






share|improve this answer


























  • Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

    – Andrey Gagan
    Nov 19 '18 at 10:14











  • NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

    – Andrey Gagan
    Nov 19 '18 at 10:33













  • Updated, you may need to enhance the compatibility of kinds of the device for products.

    – Itachi
    Nov 20 '18 at 2:42











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53298053%2fasidentifiermanager-is-not-found-in-ios12%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2














This may not answer your question completely, just text what I know and my guess.



First, the dynamic frameworks won't be loaded in your app process until you use it, such as the frameworks under the directory which are available in iOS with simulator device.



> cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
> # Now there are plenty of frameworks here.
> file AdSupport.framework/AdSupport
Mach-O 64-bit dynamically linked shared library x86_64


How to use it? TLDR, call it with [ASIdentifierManager sharedManager] in your app anywhere, link against the framework firstly and compile it successfully, of course.



Second, what's the difference between using NSClassFromString() directly and calling [ASIdentifierManager sharedManager] anywhere?



For the former case, your application won't load the AdSupport framework bundle since there are not symbol named ASIdentifierManager in your executable program when the os kernel loads your program, it can be proved by print your app main bundle path and find the app executable file, try to nm <path/to/executable_app> | grep "ASIdentifierManager", nothing will be found in result since you didn't use it.



For the latter one, try to grep the same symbol in the executable program, there it is.




Note: it's not os kernel loads the frameworks by nm result list but the kernel loads the frameworks containing the symbols, check out more info about the dynamic loader dyld.




Third, NSClassFromString only checks the loaded classes, if the AdSupport framework doesn't be loaded, it returns nil without trying to load the framework containing the target class.



Forth, it's impossible to recall the difference between in iOS 10/11 and iOS 12 until you paste out more context about the IDFA and AdSupport framework usage in your project. Here is my one guess, some of the dependent libraries use the AdSupport framework in the early version but iOS 12, you have to try to dump the symbol list between in iOS 11 and iOS 12 and compare the result.



Fifth, I'm not sure what you want, maybe you're trying to avoid importing AdSupport framework explicitly, how about initializing a NSBundle by framework path and call the -(BOOL)load of NSBundle class, then you could get the Class object with NSClassFromString.



UPDATE:



NSString *strFrameworkPath = nil;

#if TARGET_OS_SIMULATOR
strFrameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"];
#else
// Assume that the AdSupport and Foundation framework are in the same directory.
strFrameworkPath = [NSBundle bundleForClass:NSPredicate.class].bundlePath;
strFrameworkPath = [strFrameworkPath stringByDeletingLastPathComponent];
#endif

strFrameworkPath = [strFrameworkPath stringByAppendingPathComponent:@"AdSupport.framework"];
NSAssert([[NSFileManager defaultManager] fileExistsAtPath:strFrameworkPath], @"Invalid framework bundle path!");

NSBundle *bundle = [NSBundle bundleWithPath:strFrameworkPath];

if (!bundle.isLoaded) {
NSError *error = nil;

if (![bundle loadAndReturnError:&error]) {
DDLogError(@"Load framework bundle %@ with error %@", bundle, error);
}
}

DDLogDebug(@"bundle: %@", bundle.bundlePath);
DDLogDebug(@"class: %@", NSClassFromString(@"ASIdentifierManager"));


You may need to enhance the compatibility of kinds of the device for products, for more details about the NSBundle usage, check out the official documentation here.






share|improve this answer


























  • Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

    – Andrey Gagan
    Nov 19 '18 at 10:14











  • NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

    – Andrey Gagan
    Nov 19 '18 at 10:33













  • Updated, you may need to enhance the compatibility of kinds of the device for products.

    – Itachi
    Nov 20 '18 at 2:42
















2














This may not answer your question completely, just text what I know and my guess.



First, the dynamic frameworks won't be loaded in your app process until you use it, such as the frameworks under the directory which are available in iOS with simulator device.



> cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
> # Now there are plenty of frameworks here.
> file AdSupport.framework/AdSupport
Mach-O 64-bit dynamically linked shared library x86_64


How to use it? TLDR, call it with [ASIdentifierManager sharedManager] in your app anywhere, link against the framework firstly and compile it successfully, of course.



Second, what's the difference between using NSClassFromString() directly and calling [ASIdentifierManager sharedManager] anywhere?



For the former case, your application won't load the AdSupport framework bundle since there are not symbol named ASIdentifierManager in your executable program when the os kernel loads your program, it can be proved by print your app main bundle path and find the app executable file, try to nm <path/to/executable_app> | grep "ASIdentifierManager", nothing will be found in result since you didn't use it.



For the latter one, try to grep the same symbol in the executable program, there it is.




Note: it's not os kernel loads the frameworks by nm result list but the kernel loads the frameworks containing the symbols, check out more info about the dynamic loader dyld.




Third, NSClassFromString only checks the loaded classes, if the AdSupport framework doesn't be loaded, it returns nil without trying to load the framework containing the target class.



Forth, it's impossible to recall the difference between in iOS 10/11 and iOS 12 until you paste out more context about the IDFA and AdSupport framework usage in your project. Here is my one guess, some of the dependent libraries use the AdSupport framework in the early version but iOS 12, you have to try to dump the symbol list between in iOS 11 and iOS 12 and compare the result.



Fifth, I'm not sure what you want, maybe you're trying to avoid importing AdSupport framework explicitly, how about initializing a NSBundle by framework path and call the -(BOOL)load of NSBundle class, then you could get the Class object with NSClassFromString.



UPDATE:



NSString *strFrameworkPath = nil;

#if TARGET_OS_SIMULATOR
strFrameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"];
#else
// Assume that the AdSupport and Foundation framework are in the same directory.
strFrameworkPath = [NSBundle bundleForClass:NSPredicate.class].bundlePath;
strFrameworkPath = [strFrameworkPath stringByDeletingLastPathComponent];
#endif

strFrameworkPath = [strFrameworkPath stringByAppendingPathComponent:@"AdSupport.framework"];
NSAssert([[NSFileManager defaultManager] fileExistsAtPath:strFrameworkPath], @"Invalid framework bundle path!");

NSBundle *bundle = [NSBundle bundleWithPath:strFrameworkPath];

if (!bundle.isLoaded) {
NSError *error = nil;

if (![bundle loadAndReturnError:&error]) {
DDLogError(@"Load framework bundle %@ with error %@", bundle, error);
}
}

DDLogDebug(@"bundle: %@", bundle.bundlePath);
DDLogDebug(@"class: %@", NSClassFromString(@"ASIdentifierManager"));


You may need to enhance the compatibility of kinds of the device for products, for more details about the NSBundle usage, check out the official documentation here.






share|improve this answer


























  • Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

    – Andrey Gagan
    Nov 19 '18 at 10:14











  • NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

    – Andrey Gagan
    Nov 19 '18 at 10:33













  • Updated, you may need to enhance the compatibility of kinds of the device for products.

    – Itachi
    Nov 20 '18 at 2:42














2












2








2







This may not answer your question completely, just text what I know and my guess.



First, the dynamic frameworks won't be loaded in your app process until you use it, such as the frameworks under the directory which are available in iOS with simulator device.



> cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
> # Now there are plenty of frameworks here.
> file AdSupport.framework/AdSupport
Mach-O 64-bit dynamically linked shared library x86_64


How to use it? TLDR, call it with [ASIdentifierManager sharedManager] in your app anywhere, link against the framework firstly and compile it successfully, of course.



Second, what's the difference between using NSClassFromString() directly and calling [ASIdentifierManager sharedManager] anywhere?



For the former case, your application won't load the AdSupport framework bundle since there are not symbol named ASIdentifierManager in your executable program when the os kernel loads your program, it can be proved by print your app main bundle path and find the app executable file, try to nm <path/to/executable_app> | grep "ASIdentifierManager", nothing will be found in result since you didn't use it.



For the latter one, try to grep the same symbol in the executable program, there it is.




Note: it's not os kernel loads the frameworks by nm result list but the kernel loads the frameworks containing the symbols, check out more info about the dynamic loader dyld.




Third, NSClassFromString only checks the loaded classes, if the AdSupport framework doesn't be loaded, it returns nil without trying to load the framework containing the target class.



Forth, it's impossible to recall the difference between in iOS 10/11 and iOS 12 until you paste out more context about the IDFA and AdSupport framework usage in your project. Here is my one guess, some of the dependent libraries use the AdSupport framework in the early version but iOS 12, you have to try to dump the symbol list between in iOS 11 and iOS 12 and compare the result.



Fifth, I'm not sure what you want, maybe you're trying to avoid importing AdSupport framework explicitly, how about initializing a NSBundle by framework path and call the -(BOOL)load of NSBundle class, then you could get the Class object with NSClassFromString.



UPDATE:



NSString *strFrameworkPath = nil;

#if TARGET_OS_SIMULATOR
strFrameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"];
#else
// Assume that the AdSupport and Foundation framework are in the same directory.
strFrameworkPath = [NSBundle bundleForClass:NSPredicate.class].bundlePath;
strFrameworkPath = [strFrameworkPath stringByDeletingLastPathComponent];
#endif

strFrameworkPath = [strFrameworkPath stringByAppendingPathComponent:@"AdSupport.framework"];
NSAssert([[NSFileManager defaultManager] fileExistsAtPath:strFrameworkPath], @"Invalid framework bundle path!");

NSBundle *bundle = [NSBundle bundleWithPath:strFrameworkPath];

if (!bundle.isLoaded) {
NSError *error = nil;

if (![bundle loadAndReturnError:&error]) {
DDLogError(@"Load framework bundle %@ with error %@", bundle, error);
}
}

DDLogDebug(@"bundle: %@", bundle.bundlePath);
DDLogDebug(@"class: %@", NSClassFromString(@"ASIdentifierManager"));


You may need to enhance the compatibility of kinds of the device for products, for more details about the NSBundle usage, check out the official documentation here.






share|improve this answer















This may not answer your question completely, just text what I know and my guess.



First, the dynamic frameworks won't be loaded in your app process until you use it, such as the frameworks under the directory which are available in iOS with simulator device.



> cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
> # Now there are plenty of frameworks here.
> file AdSupport.framework/AdSupport
Mach-O 64-bit dynamically linked shared library x86_64


How to use it? TLDR, call it with [ASIdentifierManager sharedManager] in your app anywhere, link against the framework firstly and compile it successfully, of course.



Second, what's the difference between using NSClassFromString() directly and calling [ASIdentifierManager sharedManager] anywhere?



For the former case, your application won't load the AdSupport framework bundle since there are not symbol named ASIdentifierManager in your executable program when the os kernel loads your program, it can be proved by print your app main bundle path and find the app executable file, try to nm <path/to/executable_app> | grep "ASIdentifierManager", nothing will be found in result since you didn't use it.



For the latter one, try to grep the same symbol in the executable program, there it is.




Note: it's not os kernel loads the frameworks by nm result list but the kernel loads the frameworks containing the symbols, check out more info about the dynamic loader dyld.




Third, NSClassFromString only checks the loaded classes, if the AdSupport framework doesn't be loaded, it returns nil without trying to load the framework containing the target class.



Forth, it's impossible to recall the difference between in iOS 10/11 and iOS 12 until you paste out more context about the IDFA and AdSupport framework usage in your project. Here is my one guess, some of the dependent libraries use the AdSupport framework in the early version but iOS 12, you have to try to dump the symbol list between in iOS 11 and iOS 12 and compare the result.



Fifth, I'm not sure what you want, maybe you're trying to avoid importing AdSupport framework explicitly, how about initializing a NSBundle by framework path and call the -(BOOL)load of NSBundle class, then you could get the Class object with NSClassFromString.



UPDATE:



NSString *strFrameworkPath = nil;

#if TARGET_OS_SIMULATOR
strFrameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"];
#else
// Assume that the AdSupport and Foundation framework are in the same directory.
strFrameworkPath = [NSBundle bundleForClass:NSPredicate.class].bundlePath;
strFrameworkPath = [strFrameworkPath stringByDeletingLastPathComponent];
#endif

strFrameworkPath = [strFrameworkPath stringByAppendingPathComponent:@"AdSupport.framework"];
NSAssert([[NSFileManager defaultManager] fileExistsAtPath:strFrameworkPath], @"Invalid framework bundle path!");

NSBundle *bundle = [NSBundle bundleWithPath:strFrameworkPath];

if (!bundle.isLoaded) {
NSError *error = nil;

if (![bundle loadAndReturnError:&error]) {
DDLogError(@"Load framework bundle %@ with error %@", bundle, error);
}
}

DDLogDebug(@"bundle: %@", bundle.bundlePath);
DDLogDebug(@"class: %@", NSClassFromString(@"ASIdentifierManager"));


You may need to enhance the compatibility of kinds of the device for products, for more details about the NSBundle usage, check out the official documentation here.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 20 '18 at 2:44

























answered Nov 16 '18 at 7:19









ItachiItachi

2,67011945




2,67011945













  • Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

    – Andrey Gagan
    Nov 19 '18 at 10:14











  • NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

    – Andrey Gagan
    Nov 19 '18 at 10:33













  • Updated, you may need to enhance the compatibility of kinds of the device for products.

    – Itachi
    Nov 20 '18 at 2:42



















  • Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

    – Andrey Gagan
    Nov 19 '18 at 10:14











  • NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

    – Andrey Gagan
    Nov 19 '18 at 10:33













  • Updated, you may need to enhance the compatibility of kinds of the device for products.

    – Itachi
    Nov 20 '18 at 2:42

















Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

– Andrey Gagan
Nov 19 '18 at 10:14





Man, thank you so much for this answer! I really appreciate it. Could you point the sample code with NSBundle and -(BOOL)load?

– Andrey Gagan
Nov 19 '18 at 10:14













NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

– Andrey Gagan
Nov 19 '18 at 10:33







NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/Frameworks/AdSupport.framework"]; BOOL success = [b load];

– Andrey Gagan
Nov 19 '18 at 10:33















Updated, you may need to enhance the compatibility of kinds of the device for products.

– Itachi
Nov 20 '18 at 2:42





Updated, you may need to enhance the compatibility of kinds of the device for products.

– Itachi
Nov 20 '18 at 2:42




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53298053%2fasidentifiermanager-is-not-found-in-ios12%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Florida Star v. B. J. F.

Danny Elfman

Retrieve a Users Dashboard in Tumblr with R and TumblR. Oauth Issues