私は最近、OS X用のシステムサービスを書くことに興味を持ってきましたが、私はサービスを宣伝するアプリケーションがないので、私はスタンドアロンシステムサービスを作成する必要があります。 System Servicesに関するAppleのドキュメントはそのままですが、スタンドアロンサービスに関するドキュメントは存在しません。Xcodeでスタンドアロンシステムサービスを適切にレイアウトするにはどうすればよいですか?
これまでのところ、バンドルパッケージからビルドされたXcodeプロジェクトは、HashifyService.h
とHashifyService.m
という2つのソースがあります。ここで私が持っているテストコードは次のとおりです。
- (void) doServiceWork:(NSPasteboard *)pboard
userData:(NSString *)userData
error:(NSString **)error {
NSLog(@"Actually in the service now");
NSString *pboardString;
NSArray *types;
NSLog(@"do test magic service! (pboard: %@, types: %@)", pboard, [pboard types]);
NSString* outputString = @"It Worked";
types = [NSArray arrayWithObject:NSStringPboardType];
[pboard declareTypes:types owner:nil];
[pboard setString:outputString forType:NSStringPboardType];
[outputString release];
return;
}
、これが私のInfo.plist
でNSServices
エントリです:
<dict>
<key>NSMenuItem</key>
<dict>
<key>Menu item title</key>
<string>HashifyTest</string>
</dict>
<key>NSMessage</key>
<string>doServiceWork</string>
<key>NSPortName</key>
<string>HashifyService</string>
<key>NSReturnTypes</key>
<array>
<string>NSStringPboardType</string>
</array>
<key>NSSendTypes</key>
<array>
<string>NSStringPboardType</string>
</array>
</dict>
私はその後、サービスバンドルを構築し、それを適切に検出し、Iれる~/Library/Services/
に置きますサービスを使用するオプションが与えられています。ただし、サービスをアクティブにすると、エラーが発生し、コンソールにログに記録されます。
私は間違っていますか?
このチュートリアルを確認してください。基本的には、あなたのバンドルの拡張子を ".services"として指定し、フォーカスを得るのを防ぐplistキーを追加する必要があります。 http://www.notesfromandy.com/2013/04/05/writing-a-service-bundle/ –