次のコードを使用して、Twitter.app からツイートを送信しています。
NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]);
ユーザーがtwitter.appを持っていない場合、カスタムメッセージを表示するために、次のエラーを処理するにはどうすればよいですか?
try catch を試しましたが、うまくいきません。ありがとう
次のコードを使用して、Twitter.app からツイートを送信しています。
NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]);
ユーザーがtwitter.appを持っていない場合、カスタムメッセージを表示するために、次のエラーを処理するにはどうすればよいですか?
try catch を試しましたが、うまくいきません。ありがとう
それを取得[NSApp servicesMenu]
して検索し、その名前のサービスが存在するかどうかを確認してから呼び出します。
例で更新:
NSUInteger itemIndex = [[[NSApp servicesMenu] itemArray] indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
return [[(NSMenuItem*)obj title] isEqualToString:@"Tweet"];
}];
if (itemIndex != NSNotFound)
NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]);
更新 2:
上記は一般的なケースであり、ローカリゼーションとサービス メニューの更新時に問題があります。既知のアプリによって提供されるサービスの特定のケースについては-[NSWorkspace absolutePathForAppBundleWithIdentifier:]
、既知のバンドル ID を持つアプリがシステムに存在するかどうかを確認するために、アプリが存在するかどうかを確認できます。