Scripting Bridge

Hallo,
nach einigen Monaten schreibe ich jetzt mal wieder etwas aus der Welt der Mac-Programmierer. Und zwar möchte ich über meine Erfahrungen mit der Scripting Bridge berichten.
Mit Mac OS X 10.5 stellte Apple eine neue Technologie mit dem Namen Scripting Bridge zur Verfügung. Das ObjC Framework macht es möglich, AppleScript Befehle in ObjC Syntax zu fassen. Das soll wohl langfristig gesehen den Umweg über AppleEvents ersetzen.
Und im Prinzip funktioniert das ganze auch sehr einfach. Zuerst führt man ein in der Dokumentation vorgegebenen Befehl im Terminal aus, und man bekommt eine Header-Datei geliefert. Diese importiert man dann einfach in eine bestehende Klasse. Außerdem muss das Scripting Bridge Framework als bestehendes Framework einmalig zum Xcode Projekt hinzugefügt werden.

Kontrollieren der Applikation:

1.) ObjectiveC

Natürlich wird die Applikation durch ein Objekt dargestellt. Nehmen wir iTunes als Beispiel an:

Im Header können wir die App als Instanzvariable Deklarieren:

@interface AppContrller:NSObject {
iTunesApplication *app;

}

In der Implementation wird dann das Objekt erzeugt:

-(id)init {
self = [super init];

app = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; //iTunesApplication ist eine Subklasse von SBApplication

}

-(void)dealloc {
[app release];
[super dealloc];

}

2.) Zwei Methoden:

Nun möchte ich noch zeigen, wie man iTunes pausiert und den Namen des Aktuellen Titels herausfindet.

Der Header sieht nun so aus:

@interface AppContrller:NSObject {
iTunesApplication *app;

}

-(void)pause;
-(NSString *)name;
-(BOOL)isPaused; //Wird nicht erklärt, bitte selbst denken ;-)

Die Methoden Werden folgendermaßen implementiert:

-(void)pause {
if (![app isRunning])
return;
if (![self isPaused])
[app playpause];

}

-(NSString *)name {
if (![app isRunning])
return nil;
iTunesTrack *track = [app currentTrack];
return [track name];

}

-(BOOL)isPaused {
return NO;

}

Explore posts in the same categories: Apple, Apple Developer Connection, Mac, Software

Tags: , , , , ,

You can comment below, or link to this permanent URL from your own site.

Comment: