Listing 1:Einleiten einer Fehlerbehandlung bei Verbindungsproblemen zum Server

- (IBAction)send:(id)sender {
    NSURL *myURL = [NSURL URLWithString:@"http://server.example.com/?action"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
        timeoutInterval:60];
    
    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    /* TO DO:CHECK AUF STATUS CODES */
    self.failcounter++;
    if (self.failcounter < 5) {
        NSURL *myURL = [NSURL URLWithString:@"http://server.example.com/?action"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
            cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
            timeoutInterval:60];

        [[NSURLConnection alloc] initWithRequest:request delegate:self];
    }
    else {
        //Error Handling
    }
}


Listing 2: Beispiel iOS LocationManager in AppDelegate.m (Ausschnitt)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //Initalisierung des CLLocationManagers
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    //Der AppDelegate implementiert das CLLocationManagerDelegate-Protokoll
    locationManager.delegate = self;
    //Die property purpose zeigt dem User an wofr die App die Location braucht.
    locationManager.purpose = NSLocalizedString(@"Hoccer needs you location to find out which devices are next to you. Otherwise Hoccer wont work.", @"locationPurpose"); 
    //Setzt die Genauigkeit (hier etwa 100m)
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    //Startet die Abfrage des Orts
    [locationManager startUpdatingLocation];
    return YES;
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog(@"Neuer Ort: %f %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
}


Listing 3: LocationManager-Klasse unter Android

//Dank fr Untersttzung: Arne Handt

import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;

public class MyLocationManager implements LocationListener {

    private final LocationManager mLocationManager;

    // beziehen der Dienste ber System anhand eines Context-Objekts (context)
    public MyLocationManager(Context pContext) {

        mLocationManager = (LocationManager)pContext.getSystemService(Context.LOCATION_SERVICE);
    }

    public void deactivate() {
        mLocationManager.removeUpdates(this);
    }

    public boolean activate() {

        // zuerst Satz von Kriterien definieren
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(false);
        criteria.setPowerRequirement(Criteria.POWER_LOW);

        // dann passenden Provider besorgen
        String provider = mLocationManager.getBestProvider(criteria, true);

        if (provider != null) {
            // und dann der location request

            long minTime = 1000; // minimum time interval in Millisekunden
            float minDistance = 100; // minimum distance interval in Meter
            mLocationManager.requestLocationUpdates(provider, minTime, minDistance, this);
            return true;
        }
        return false;
    }

    @Override
    public void onLocationChanged(Location location) {
        // hier knnte die Location ausgewertet werden
        Log.v("MyLocationManager", location.toString());
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

}
