zoukankan      html  css  js  c++  java
  • 用自定义协议调用自己的程序

    译自:“LaunchingYour Own Application via a Custom URL Scheme

    iPhone SDK中最酷的功能之一是一个应用程序能够把自己和自定义的URL协议绑定,这个URL协议可用于启动该应用程序(通过浏览器或者iPhone上的另一个程序)。创建这样的绑定并不难,难的是你忍不住要在你的程序里用它!

    首先,你需要说明你想如何在程序中响应这个URL。最简单的自定义协议的方法是“唤醒”,而且可以通过URL把信息传递给程序,这样,程序被唤醒后能做更多的事情。

    注册自定义URL协议

    首先需要向iPhone注册一个自定义URL协议。这是在你的项目文件夹的info.plist文件进行的(就是你改变应用程序图标的同一个文件)。

    默认,Xcode在图形窗口中打开info.pllist,当然也可以直接用文本模式打开——对有的人来说这反而更简单。

    Step1. 右键,选择“Add Row”

    http://img.ph.126.net/0Iph-Hv_YPrI43zgkCotkw==/644859171660999084.png

    Step2. Key值选择“URL types”

    http://img.ph.126.net/9PtAWSrlCfLNZ5_W6Z_TnQ==/2651494280631266664.png

    Step3. 打开“Item 1″,然后为该key增加一个URL identifier。可以是任何值,但建议用“反域名”(例如 “com.myapp”)。

    http://img.ph.126.net/Rc90ogDPreD62FS2WYalvg==/2492460918789746022.png

    Step4. 在“Item1”下再加一行。

    http://img.ph.126.net/5EsyS1mPVhrFhctSYRU2dw==/2568459162501622413.png

    Step5. 选择“URL Schemes” 作为Key。

    http://img.ph.126.net/ba_lQpRIWvTcxfhB1FSJMg==/2723551874669194374.png

    Step6. 输入你的URL协议名 (例如“myapp://” 应写做“myapp”)。如果有必要,你可以在这里加入多个协议。

    http://img.ph.126.net/JaWpOJRaxAZdGwSM5ctwag==/2511601217206070303.png

    注意:如果以文本模式打开info.plist,你会看到文件中添加了如下内容:

    CFBundleURLTypes

        CFBundleURLSchemes

          myapp

        CFBundleURLName

        com.yourcompany.myapp

    处理URL

    现在,URL已经注册好了。任何人都可以用打开URL的方式通过你的协议去启动一个应用程序。

    例如:

    myapp://

    myapp://some/path/here

    myapp://?foo=1&bar=2

    myapp://some/path/here?foo=1&bar=2

    iOS SDK将向UIApplicationDelegate发送一条消息,启动和上述URL绑定的应用程序。

    如果你想进行自定义处理,在你的delegate中实现该消息,例如:

    - (BOOL)application:(UIApplication *)applicationhandleOpenURL:(NSURL*)url {   // Do something withthe url here }

    通常,我们会从参数中解析出URL以便在视图中显示或者存储到UserPreference。下面的例子把URL存储为User Preference的url变量中:

    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

    {

        if (!url) {  return NO; }

        NSString *URLString = [urlabsoluteString];

        [[NSUserDefaultsstandardUserDefaults] setObject:URLString forKey:@"url"];

        [[NSUserDefaultsstandardUserDefaults] synchronize];

        return YES;

    }

    - (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL *)url {     if (!url) {  returnNO; }      NSString *URLString= [urlabsoluteString];     [[NSUserDefaults standardUserDefaults] setObject:URLStringforKey:@"url"];     [[NSUserDefaults standardUserDefaults] synchronize];     return YES; }

    现在,你已经知道如何唤醒你的程序并向其传递参数了。Enjoy!



  • 相关阅读:
    提升request模块的效率--线程池
    selenium的用法
    SVN 常用命令
    SVN 常见问题及解决方法
    Makefile 详解
    开心一刻(一)
    Vim配置及其他注意事项
    彩虹表
    C++学习之STL(二)String
    C++学习之STL(一)vector
  • 原文地址:https://www.cnblogs.com/encounter/p/2188459.html
Copyright © 2011-2022 走看看