Launching Your Own Application via a Custom URL Scheme(在短信链接中打开你的程序并且给你的程序发送消息)

本文介绍如何使用iOS SDK中的自定义URL方案功能,实现通过URL启动应用并传递参数,增强应用的可交互性和用户体验。通过简单的步骤注册自定义URL方案,并在应用启动时处理接收到的URL,可以实现从浏览器或另一应用直接唤醒并执行特定操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

URL:http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html


One of the coolest features of the iPhone SDK is an application’s ability to “bind” itself to a custom URL scheme and for that scheme to be used to launch itself from either a browser or from another application on the iPhone. Creating this kind of binding is so simple, its almost criminal not to use it in your application!

Before you get started, you need to figure out how you want you application to respond to the URL. The simplest way to use custom schemes is to just “wake up”; but it is also possible to pass information to the application via the URL, and in so doing, enable the application to do different things when woken up.

Registering Custom URL Schemes

Regardless of what you want to do once your application is started, the first step is to register a custom URL scheme with the iPhone. This is done via the info.plist file located in your application’s project folder (NOTE: this is the same file you would change to define a custom icon).

By default, when opened, XCode will edit the file in a graphical UI. It is possible to edit the info.plist file directly in Text mode which may be easier for some people.

Step 1. Right-Click and “Add Row”

screen-capture.png

Step 2. Select “URL types” as the Key

screen-capture-1.png

Step 3. Expand “Item 1″ and provide a value for the URL identifier. This can be any value, but the convention is to use a “reverse domain name” (ex “com.myapp”).

screen-capture-2.png

Step 4. Add another row, this time to “Item 1″.

screen-capture-3.png

Step 5. Select “URL Schemes” as the Key.

screen-capture-4.png

Step 6. Enter the characters that will become your URL scheme (e.g. “myapp://” would be “myapp”). It is possible for more than one scheme to be registered by adding to this section though that would be strange thing to do.

screen-capture-6.png

NOTE: If you open the info.plist file in a text editor you will see the following has been added to the file …

CFBundleURLTypes
 
    CFBundleURLSchemes
 
      myapp
 
    CFBundleURLName
    com.yourcompany.myapp

Optionally Handle the URL

Now that the URL has been registered. Anyone can start the application by opening a URL using your scheme.

Here are a few examples …

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

The iPhone SDK, when launching the application in response to any of the URLs above, will send a message to the UIApplicationDelegate.

If you want to provide a custom handler, simply provide an implementation for the message in your delegate. For example:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{
  // Do something with the url here
}

A common technique is to parse the URL passed in and pull from it the parameters that will be used by various views in the application and store them in the User Preference. Below is an example where we store the URL as a value parameter “url” in just such a manner …

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

Now you have everything you need to enable others to wake-up your application and even pass it information! Enjoy!


Note:

当用上述方法唤醒你的程序时,你的程序可以接收到这个URL,但如果你用URL打开你的程序的话,这个时候就不行了。还需要如下操作一下:

-application:handleOpenURL: only gets called if your application is open and in the background. If your app's launching from a URL, -application:didFinishLaunchingWithOptions: gets called instead. You can get the URL out of that options dictionary with its UIApplicationLaunchOptionsURLKey key, like this:

- (void)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)options
{
    NSURL *url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
    if(url) // the app was launched from a URL, so we might as well hand this off
    {
        [self application:app handleOpenURL:url];
    }


    // etc.
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值