1

以下のコードを試してみましたが、うまくいきました。また、メールアプリケーションも起動できます。

//Note the below path is coming from bundle identifier of Mail APP 
NSString *path=@"/Applications/Mail.app"
NSURL *mailURL = [NSURL URLWithString:path];
NSError *err=nil;
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:mailURL
                                              options:NSWorkspaceLaunchDefault
                                        configuration: someData
                                                error:&err];

しかし、コンソールに以下のエラーメッセージが表示されます。以下の問題を解決する方法。

CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: /Applications/Mail.app
4

1 に答える 1

1

有効な URL を作成していないため、エラーがスローされます。URL にはスキームが必要です。あなたの場合は file: であるため、正しい URL はfile:///Applications/Mail. 次のように機能するファイル URL を作成する必要があります。

NSString *path=@"/Applications/Mail.app";
NSURL *mailURL = [NSURL fileURLWithPath:path];

ユーザーが Mail.app を別の場所に移動した場合、コードが壊れることに注意してください。また、ユーザーが Apple のメール アプリを使用していない場合、ユーザーにとってもうまく機能しないことに注意してください。

より正しい方法でそれを行う 1 つの可能性がここに示されています: How to launch New Message window in Mail.app from my application

もう 1 つのオプションは、Mail.app を移動したユーザーに対応する、より柔軟な方法で Mail.app の URL を取得することです。アイデアは、バンドル識別子を使用し、次を使用してNSWorkspaceこのアプリケーションを起動するように要求することです

- (BOOL)launchAppWithBundleIdentifier:(NSString *)bundleIdentifier
                          options:(NSWorkspaceLaunchOptions)options
   additionalEventParamDescriptor:(NSAppleEventDescriptor *)descriptor
                 launchIdentifier:(NSNumber **)identifier

(こちらの詳細もご覧くださいhttp://theocacao.com/document.page/183)。

于 2015-05-07T06:49:52.530 に答える