自定义URL方案

时间:2014-02-06 12:58:01

标签: ios objective-c url-scheme

我想用myapp:// something?id = 123打开应用程序,当安装了应用程序的用户访问http://myapp.com/something?id=123时,如果用户没有应用程序,则在浏览器中打开网址。

另外, Bundle URL Scheme 是否可以以数字?

开头

我当前的info.plist档案

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>myapp</string>
            </array>
            <key>CFBundleURLName</key>
            <string>com.organizationname.myapp</string>
        </dict>
    </array>
    ....

</dict>
</plist>

修改

以下是我的情景。

我在电子邮件中收到了一个网址(例如http://techfuzionwithsam.wordpress.com)。当我在我的iPhone上点击该URL时,我想打开我的应用程序,如果安装,否则打开浏览器

2 个答案:

答案 0 :(得分:1)

电子邮件中的初始链接需要将其发送到可以将其重定向到应用或网站的网页。只需在页面上包含此JavaScript:

setTimeout(function() {
    if (!document.webkitHidden)
        window.location = "http://www.myotherurl.com";
}, 250);
window.location = "myapp://something?id=123";

答案 1 :(得分:1)

首先,您应该在您的网页http://myapp.com/something上添加一条声明:

setTimeout(function() {
    if (!document.webkitHidden)
        window.location = "http://myapp.com/download";
}, 200);
window.location = "myapp://something?id=123";

除了确保您的应用可以正确执行外,还应在应用中添加一些声明,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    ...

    NSString *outSideUrl = launchOptions[UIApplicationLaunchOptionsSourceApplicationKey];
    if (outSideUrl) {
        // ...
    } else {
        // ...
    }
    return YES;
}