URL方案在iOS9中不起作用

时间:2016-06-01 07:34:10

标签: ios objective-c url-scheme

我正在开发一个用户确认邮件发送到用户电子邮件的应用程序。 我能够以这种格式接收邮件" http://www.sample.com//Register.aspx?xxx(with参数)"。 现在点击这封邮件我必须在iOS9中启动注册页面。

注意:如果我在safari应用中输入Register.aspx://正在打开但不是来自电子邮件网址。

我在info.plist和代码中做了以下事情 1.info.plist

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>Register.aspx</string>
            </array>
        </dict>
    </array> 
<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>Register.aspx</string>
    </array>

2.在我使用的应用代表中:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

    BOOL canBeOpened = [[UIApplication sharedApplication]
                        canOpenURL:[NSURL URLWithString:@"Register.aspx://"]];

    if (canBeOpened) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Test Message"
                                                        message:@"This is a url scheme"
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];

    }
    else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Test Message"
                                                        message:@"This is not a url scheme"
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];

    }
}

2 个答案:

答案 0 :(得分:4)

您正在注册URL的错误部分作为方案。您提供的示例的标准网址方案为http

第一个冒号之前的URL位是方案(通常为httphttps)。要使用自定义方案,您需要为URL构建新方案并在电子邮件中输出该URL,例如:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>mycoolapp</string>
        </array>
    </dict>
</array> 
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>mycoolapp</string>
</array>

需要包含以下网址的电子邮件:

mycoolapp://www.sample.com/Register.aspx

答案 1 :(得分:4)

iOS 9对URL方案的处理做了一些小改动。您必须使用Info.plist中的LSApplicationQueriesSchemes键将您的应用调用的网址列入白名单。

请检查此链接 :http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes