项目的demo,已放入github,可以点击下载。
顾名思义,url scheme 相当于给app绑定一个identifier,然后在app外面通过调用这个identifier来调起app,可以实现跨app(沙盒)之间的通信,本demo实现了,在浏览器中点击一个button,然后激活本地的app。
step:
先运行一次project
将project里面的invokeApp.html,拖入到浏览器里面
点击浏览器的“点击唤醒app”按钮,唤起app
关键代码如下:
//plist
<array>
<dict>
<key>CFBundleURLName</key>
<string>jimbp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>invoke</string>
</array>
</dict>
</array>
上面一段plist表现出来就是:
//注意[[NSAppleEventManager sharedAppleEventManager] setEven….];这个代码一定要放在applicationWillFinishLaunching里面
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
}
- (void)handleURLEvent:(NSAppleEventDescriptor*)event
withReplyEvent:(NSAppleEventDescriptor*)replyEvent{
NSString *url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
NSAlert *alert = [[NSAlert alloc] init];
alert.messageText = @"唤醒的url";
alert.informativeText = url;
[alert addButtonWithTitle:@"ok"];
[alert setAlertStyle:NSAlertStyleWarning];
NSModalResponse returnCode = [alert runModal];
NSLog(@"----%zi",returnCode);
}