CCFURLResponder 0.0.1

CCFURLResponder 0.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
released最后发布2014年12月

未命名维护。



  • Alan K. Duncan创建

从收到的URL中创建NSNotification对象。iOS应用程序可以接收和处理URL请求。使用application:openURL:sourceApplication:annotation:方法要求iOS应用程序代理打开由URL标识的资源。此机制通常用于允许应用程序通过自定义协议相互通信。

但是,如何将URL消息转换为应用程序中的操作?CCFURLResponder允许开发者注册一个或多个它可以处理的URL模式,并将这些模式转换为可以发布到NSNotificationCenterNSNotification对象。

URL模式语法

目前,CCFURLResponder知道如何处理4种路径组件,即。这些分别用patterns中的ili表示。对于文本路径组件,我们尝试匹配确切的文本。对于其他模式组件类型,我们尝试通配匹配。每个模式组件都必须有一个密钥(如s:YourKeyName),因为模式匹配的值将作为该密钥名下的值插入到NSNotification userInfo字典中。明白了吗?

一些模式示例

模式/l:(animal)MyAnimalDomainKey/s:MyAnimalNameKey/f:MyAverageWeightKey将与形式为ccfurlresponder://animal/platypus/8.0的URL匹配

模式/s:MyColorNameKey/f:MyRedKey/f:MyGreenKey/f:MyBlueKey将匹配类似ccfurlresponder://Pure%20red/1.0/0.0/0.0的URL

如何注册模式

在应用程序的生命周期早期注册模式,例如这样

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSError *error = nil;
    NSString *pattern = @"l:(animal)CCFAnimalDomain/s:CCFAnimal/f:CCFAverageWeight/i:CCFAverageLifeExpectancy";
    if( ![CCFURLResponder registerSchemeWithPattern:pattern forNotificationName:@"CCFAnimalNotification" error:&error] )
        NSLog(@"%s - error registering pattern %@,%@",__FUNCTION__,error, error.userInfo);
    //  register another pattern
    pattern = @"l:(color)CCFColorDomain/s:CCFEnglishWord/s:CCFFrenchWord";
    if( ![CCFURLResponder registerSchemeWithPattern:pattern forNotificationName:@"CCFColorNotification" error:&error] )
        NSLog(@"%s - error registering pattern %@,%@",__FUNCTION__,error, error.userInfo);
    return YES;
}

如何响应传入的URL请求

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    if( !url ) { return NO; }
    //  bail quickly if this is just ccfurlresponder://open
    if( [[url host] isEqualToString:@"open"] )
        return YES;
    if( [[url scheme] isEqualToString:@"ccfurlresponder"] ) {
        [CCFURLResponder processURL:url];
    }
    return YES;
}

请注意,这些示例假定您的应用程序已注册了URL方案“ccfurlresponder”。您在Xcode的目标中设置此方案。

入门指南

最好的方法是下载仓库并构建示例应用程序,该应用程序包含一些可点击的链接的网页视图。您可以检查HTML文件test_doc.html以了解URL的格式。

接下来,查看应用程序代理以了解我们如何注册URL模式和路由传入请求。

最后,主视图控制器CCFViewController展示了如何响应该生成的NSNotification消息。

注意事项

当您注册一个模式时,我们不会检查冲突。第一个模式获胜。我们迟早会解决这个问题。或者您可以帮助我们。此外,这可能在 Mac OS 上工作;只是还没有进行测试。