Gönner-Abo

Ab CHF 5.– im Monat

👉🏼 Wir benötigen deine Unterstützung! Unterstütze macprime mit einem freiwilligen Gönner-Abo und mache die Zukunft unseres unabhängigen Apple-Mediums aus der Schweiz mit möglich.

macprime unterstützen

xcode WLAN Spots anzeigen

 

xcodeneuling

Das mag wohl sein, ich habe die herkömlichen sachen ja auch schon gemacht, die überall als einstieg angeboten werden. Angefangen mit HelloWorld :) Jetzt wollte ich etwas anderes versuchen. Und habe ehrlich nicht gedacht, dass es so schwierig sein könnte. Aber nur weil es schwer ist kann ich is ja dennoch probieren. Die grundlagen verbessere ich weiter mit keinen beispielen aus diversen büchern.

und ja, ich haben diesen Artikel über die bannung der wifi apps schon vorher gelesen. da ich mein app nicht in den store laden möchte wird es wohl auch so gehen :) über einen bekannten kann ich die sachen auch auf meinem iphone bringen. das reicht mir schon.

habe grade noch etwas zu der api gefunden. http://code.google.com/p/iphone-wireless/wiki/Apple80211Functions

Profilfoto von flexo

flexo

@xcodeneuling: aha, du wolltest tatsächlich für das iPhone die App schreiben! Dachte immer für OS X, sonst hätte ich dir den Link auch geben können ;-) Dort findest du ja alles für einen Scanner.

Natürlich müsstest du es in einer UITableView anzeigen lassen und nicht in einem Label ;-) Die Tabelle empfand ich am Anfang als sehr verwirrend gelöst im Vergelich z.B. zu C# oder VB. Deshalb vorher ein Beispiel anschauen.

 

xcodeneuling

Habe mit der Tabelle auch schwierigkeiten. Beispiele die ich habe benutzen alle eine .plist und bekommen von dieser die Daten für die Table. Wie ich das jetzt mit dem WLAN scanner mache weiss ich grade garnicht :(

Hättest du einen Ansatz oder eine Lösung für mich? Ich weiss das wenn ich es selber mache ich auch mehr davon lerne, aber im moment komme ich garnicht voran.

Profilfoto von flexo

flexo

Versuchst ja auch gleich einen sehr hohen Berg zu erklimmen in Flip-Flops ;-) Versuch mal die Basics wie Knöpfe/Tabellen etc. Auch wenn es ein sinnloses Programm ist wirst du Freude haben wenn es läuft!

Ein gutes Tutorial gibts hier: http://www.x02100.de/blog/014_Der_UITableView.html Die Podcasts sind sehr zu empfehlen. Können per iTunes bequem gedownloadet werden.

Grundsätzlich: die Tabelle fragt dich nach den Einträgen!

Folgende Methode fragt “dich” wie viele Einträge es gibt in der aktuellen Tabelle (hier gibt es 5): - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 5; }

In der folgenden Methode fragt er dich dann nach jedem einzelnen Eintrag. Da wir bei der oberen Methode 5 angegeben haben, wird er die Methode 5x aufrufen: - (UITableViewCell )tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { / hier müssen wir die Zelle (der Eintrag) erstellen */ return cell; }

 

xcodeneuling

Das hat mir schon sehr geholfen. Der Videocast war sehr gut, besser zu verstehen als in den büchern die ich hier rumliegen hab :)

Also ich habe jetzt eine Tabelle die ich über ein Array mit Daten fülle. Ist es möglich die SSIDs von WLANs, die beim Scannen gefunden werden in ein Array zu packen und damit dann die Tabelle zu füllen?

Das Problem was ich habe ist, wie gelange ich an die SSIDs?

btw. habe mir die Lizenz für 99$ besorgt und Teste die Anwendungen nun auf meinem iPhone, ich muss wirklich sagen, dass es mir nochmals einen Motivationsschub gegeben hat. Es ist ein gutes Gefühl die soeben erstellte Anwendung auf dem einegen iPhone abzuspielen :) Auch ist es so besser für das WLAN scannen, weil ich nicht sicher bin ob der Simulator diese Funktion bietet.

Profilfoto von flexo

flexo

Folgende Methode aufrufen: Apple80211Scan(struct Apple80211 *handle, CFArrayRef *list, CFDictionaryRef *parameters);

Im Array “list” steht die Information: list The (returned) CFArrayRef of CFDictionaryRefs containing information on each discovered network

Die Simulation dürfte dies wohl nicht können.

Ja, es ist wirklich ganz spannend wenn das Programm auf dem iPhone läuft anstatt im Simulator. Auch wenn es nur ein “Pippifax”-Programm ist.

 

xcodeneuling

Also, ich habe nun diese Methode dort aufgerufen, wo ich vorher die Tabelle mit Daten gefüllt habe. list als NSArray deklariert und es startet ohne fehler. Allerdings erscheint keine Tabelle. So sieht es im code aus:

- (id)initWithStyle:(UITableViewStyle)style {
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
    if ((self = [super initWithStyle:style])) {
        //dataArray = [[NSArray alloc]initWithObjects:@"SSID1",@"SSID2",@"Wlan",@"Test",@"Automa",@"Bla", nil];
        int Apple80211Scan(struct Apple80211 *handle, CFArrayRef *list, CFDictionaryRef *parameters);
        dataArray = list;
        
    }
    return self;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
    cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
    
    return cell;
}

Irgendwie sieht es auch für mich nicht richtig aus.

Profilfoto von flexo

flexo

Also der Ort für den Aufruf würde ich nicht dort hinein tun. Mach doch eine neue Methode. Diese kannst du dann später auch aufrufen z.B. mit einem Refresh-Knopf.

Im Programm rufst du die Methode in viewDidLoad auf.

Du kannst dir den Inhalt des Arrays ausgeben lassen in der Konsole mit NSLog (jaja, debuggen geht auch): NSLog(@”list%@”, list); Immer interessant ist auch die Anzahl Elemente im Array: NSLog(@”list count: %i”, [list count]);

Wenn du die Zeile dataArray = [[NSArray alloc]initWithObjects:@”SSID1”…. “entkommentierst”, erscheint dann etwas?

Also so wie ich das sehe, rufst du die Methode etwas falsch auf. Sollte eher so sein: Apple80211Scan(airportHandle,&results;,parameters);

Wobei du airportHandle und parameters irgendwo definieren musst.
Interessant ist diese Datei: http://code.google.com/p/iphone-wireless/source/browse/trunk/Stumbler/MSNetworksManager.m Besonders die Methode - (void)scan (so eine Methode solltest du auch haben). Wobei der Code halt etwas umfangreich ist und vielleicht etwas schwer zu verstehen.

Falls du sicher bist, dass etwas im Array ist, hilft dir vielleicht dies weiter mit der Tabelle: http://code.google.com/p/iphone-wireless/source/browse/trunk/Stumbler/MSNetworkDetailsView.m

Evt. schaue ich mir dies auch mal an, dann kann ich dir auch richtig helfen :-)

Anmelden um neue Antworten zu verfassen

Allegra Leser! Nur angemeldete Nutzer können bei diesem Beitrag Antworten hinterlassen. Jetzt kostenlos registrieren oder mit bestehendem Benutzerprofil anmelden.