openURL没有从邮件应用程序调用

时间:2013-11-15 22:48:33

标签: ios email openurl

当用户选择使用自定义网址打开附件时,我希望能够从电子邮件应用中调用我的应用。似乎IOS确实识别了注册,但仍然没有调用应用程序代理来打开URL。

我已将我的应用注册为支持自定义网址,方法是将其添加到info.plist;

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.plain-text</string>
            <string>public.text</string>
        </array>
        <key>UTTypeDescription</key>
        <string>TecNotes Data File</string>
        <key>UTTypeIdentifier</key>
        <string>com.bringardner.textext</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>testext</string>
            <key>public.mime-type</key>
            <string>application/vnd.testext+xml</string>
        </dict>
    </dict>
</array>

这是应用程序委托的代码;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// Override point for customization after application launch.
if( launchOptions == nil) {
    NSLog(@"nil options");
} else {
    NSLog(@"Have options");
    NSObject *obj = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
    NSLog(@"url? %@",obj);
}

 return YES;
}

-(BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
NSLog(@"handle %@",url);
return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"open %@",url);

    return YES;
}

-(BOOL) application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"willFinishLaunchingWithOptions ");
    return YES;
}

在info.plist中添加条目之前,我从电子邮件应用程序中收到以下消息; email error 向info.plist添加条目后,电子邮件应用程序将打开一个空白页面,但不会调用任何应用程序委托方法。 After image

我已经看过几个类似的问题,但我没有尝试过任何解决问题的方法。

3 个答案:

答案 0 :(得分:1)

你的文件有扩展名* .testext,而在上面的UTI定义中我看到.textext另外,我能够使用空投样本https://developer.apple.com/Library/ios/samplecode/sc2273/Introduction/Intro.html

实现自定义UTI

答案 1 :(得分:0)

您是否按照上面的空投示例进行了操作。几乎所有东西都能让它发挥作用。这就是我所遵循的,它对我来说非常有效。让我知道如果它不起作用我可以粘贴更多信息

答案 2 :(得分:0)

在您的应用中打开电子邮件附件时,会调用方法application:openURL:options,而不是application:openURL:sourceApplication:annotation