当用户选择使用自定义网址打开附件时,我希望能够从电子邮件应用中调用我的应用。似乎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中添加条目之前,我从电子邮件应用程序中收到以下消息; 向info.plist添加条目后,电子邮件应用程序将打开一个空白页面,但不会调用任何应用程序委托方法。
我已经看过几个类似的问题,但我没有尝试过任何解决问题的方法。
答案 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
。