Ios 将可可转化为可可触感-

Ios 将可可转化为可可触感-,ios,cocoa-touch,cocoa,Ios,Cocoa Touch,Cocoa,在过去的几个小时里,我一直在开发SNRLastFMEngine,使其对iOS友好,但现在已经陷入停顿。我的问题在于,有一个函数似乎只使用Mac OS的cocoa应用程序中可用的函数 功能如下: - (void)_registerCustomURLSchemeHandler { // Register for Apple Events NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];

在过去的几个小时里,我一直在开发SNRLastFMEngine,使其对iOS友好,但现在已经陷入停顿。我的问题在于,有一个函数似乎只使用Mac OS的cocoa应用程序中可用的函数

功能如下:

- (void)_registerCustomURLSchemeHandler
{
    // Register for Apple Events
    NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
    [em setEventHandler:self andSelector:@selector(getURL:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
    // Set Sonora as the default handler
    NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
    LSSetDefaultHandlerForURLScheme((CFStringRef)kCustomURLScheme, (CFStringRef)bundleID);
}
其中kCustomURLScheme是预定义的NSString

然后由一个函数处理:-voidgetURL:NSAppleEventDescriptor*事件,其中包含replyEvent:NSAppleEventDescriptor*replyEvent


我曾考虑添加一个NSNotification observer来处理该事件,但没想到它无法识别事件类或事件ID,而且我不知道如何解释LSSetDefaultHandlerForURLScheme。我对Mac OS应用程序没有任何经验,我确信我错过了更大的前景。我非常感谢任何精通两种语言的人的帮助/指导

在iOS中,您无法在运行时向系统动态注册URL方案

通过在Info.plist文件中使用CFBundleURLTypes属性列出URL方案,您可以告诉iOS您的应用程序可以处理URL方案。它可能以URL类型出现在文件的Xcode显示中


这意味着您的受支持方案列表在您发布应用程序时已预先声明,除非您提交新版本的应用程序,否则无法更改。尝试更改Info.plist文件无效,因为它会破坏文件的签名,并且iOS会拒绝运行该文件。

在iOS中,您无法在运行时向系统动态注册URL方案

通过在Info.plist文件中使用CFBundleURLTypes属性列出URL方案,您可以告诉iOS您的应用程序可以处理URL方案。它可能以URL类型出现在文件的Xcode显示中

这意味着您的受支持方案列表在您发布应用程序时已预先声明,除非您提交新版本的应用程序,否则无法更改。试图更改Info.plist文件将无法工作,因为它将破坏文件的签名,并且iOS将拒绝运行该文件