My Favorite iOS 7 APIs Part 3 : CoreMotion (iPhone 5S only)

The new M7 coprocessor in the iPhone 5S makes pedometer apps trivial:

[code lang="csharp"]
if(CMStepCounter.IsStepCountingAvailable)
{
var counter = new CMStepCounter();
//Last 8 hours
counter.QueryStepCount(NSDate.FromTimeIntervalSinceNow(-8 * 60 * 60), NSDate.Now, NSOperationQueue.CurrentQueue, StepQueryHandler);
}

void StepQueryHandler(int nssteps, NSError error)
{
Console.WriteLine(nssteps);
}
[/code]

more ...

3D Buildings Not Showing in Your iOS App?

I totally forgot a frustrating detail about showing 3D buildings in iOS 7 : it doesn't work in the simulator! You have to use a hardware device!

more ...

My Favorite iOS 7 APIs: Multipeer Connectivity

Multipeer Connectivity allows you to discover and share data with other iOS devices within Bluetooth radio range or on the same WiFi subnet. It is much easier to use than Bonjour.

I wrote a simple MPC chat program in Xamarin.iOS.

There's necessarily a few hundred lines of code, but …

more ...

Dynamic Type in iOS 7: Not Quite as "Dynamic" as You Might Think

One of the nice features in iOS 7 for old fogeys such as myself is that the user can use the general Settings to increase and decrease the fonts used in apps. This is called "Dynamic Type." Judging by developer forums, I'm not the only one who thought that this …

more ...

Xamarin Code for iBeacons

Did I mention how easy it is to track an iBeacon using Xamarin?

[code lang="csharp"]
locationManager = new CLLocationManager();
var beaconId = new NSUuid("E437C1AF-36CE-4BBC-BBE2-6CE802977C46");
var beaconRegion = new CLBeaconRegion(beaconId, "My Beacon");
locationManager.RegionEntered += (s, e) => {
if(e.Region.Identifier == "My Beacon")
{
Console.WriteLine("Found My Beacon");
//Fire up ranging
locationManager …

more ...

My Favorite iOS 7 APIs Part 1: iBeacons and Multipeer Connectivity

Since Xamarin provides full native capabilities, developers don't need to wait for us to exploit iOS 7's awesome new APIs, such as:

  • iBeacon: This, to my mind, is the stealth API of the release. An iBeacon is a Bluetooth device (just iOS devices for now, but Apple says they'll release …

more ...

3D Maps in iOS 7 with Xamarin

It's trivially simple to show 3D maps in iOS 7:

[code lang="csharp"]
var target = new CLLocationCoordinate2D(37.7952, -122.4028);
var viewPoint = new CLLocationCoordinate2D(37.8009, -122.4100);
//Enable 3D buildings
mapView.ShowsBuildings = true;
mapView.PitchEnabled = true;

var camera = MKMapCamera.CameraLookingAtCenterCoordinate(target, viewPoint, 500);
mapView.Camera = camera;
[/code]

MKMapCamera

more ...

Full Screen Content and EdgesForExtendedLayout in iOS 7

One of the difference that jumps out dramatically to a programmer -- especially those of us who typically build our UIs in code rather than using a visual design surface -- is the new "full-screen content" concept.

This is particularly evident with UINavigationControllers. This picture shows the difference between the default …

more ...

Breaking Bad Ending Prediction

Going on record with my Breaking Bad prediction:

EAAAAEqhoq0ty5977EFCIguikrRVYzZsL4CiNXNK7VKcLs8Ik5lmrtsI3cJPo19bq2HBZavatk0EalFyeqQx6w2K6RxIuLoRbuddMJ4qSiZgQ8l3VjB1JGUw1ucskXUxL/ZL7HFRGY0424JY/MH4pirH4yCJ/ORGW7fSyiPQNtEDkh2s5Qs8QivN0ueJi1p/v2c4AV7vHYpSqfBf7e6AFQ1DPsMsHOJf05kIvh7BUp/LKssRFoL9jGQ2uqT1R7FnAv9icRbpUOVIDZ74N63JAhGOuye9uNv2dYAb53H53RxWN9b2Em1kXlnKoflf2rEqa6UCNvVvPy+kgMuKQuAEy+/ut70=

Decrypt with:

var key = new Rfc2898DeriveBytes("BreakingBadEndingPrediction", "o6806642kbM7c5");
var bytes = Convert.FromBase64String(cipherText);
using (var msDecrypt = new MemoryStream(bytes))
{
aesAlg = new RijndaelManaged();
aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
aesAlg.IV = ReadByteArray(msDecrypt);
var …
more ...

Kiteboarding: Four Days Since Our Last Tiger Shark Attack

I am holding a bar while floating in a murky bay, slowly drifting towards a shipping channel. If I pull on the bar, 6 things can happen, only 1 of which is good. Not to mention the tiger shark. The tiger shark doesn't care whether I pull the bar or …

more ...