GameKit is a native extension that allows the use of iOS GameKit framework. The extension allows your game to setup real time Game Center matches for up to 4 players, send and receive custom data between players, and enable voice chat during gameplay. It implements a subset of the iOS GameKit framework.
http://airextensions.net/shop/extensions/game-kit-by-vitapoly
Sample
var gamekit:GameKit = new GameKit(); // Authenticate the local player, but listen to the events first: gamekit.addEventListener(GameKit.LOCAL_PLAYER_AUTHENTICATED_EVENT, function(e:Event):void { trace("LOCAL_PLAYER_AUTHENTICATED_EVENT"); }); gamekit.addEventListener(GameKit.LOCAL_PLAYER_NOT_AUTHENTICATED_EVENT, function(e:Event):void { trace("LOCAL_PLAYER_NOT_AUTHENTICATED_EVENT"); }); gamekit.authenticateLocalPlayer(); //Get info about local player after successful authentication: var localPlayer:LocalPlayer = gamekit.getLocalPlayer(); trace(localPlayer.displayName); for (var friend:Player in localPlayer.friends) trace("friend: " + friend.displayName); //Show native Game Center interface: gamekit.showGameCenter(); //Start a real time match, but listen to events first: gamekit.addEventListener(GameKit.MATCH_MAKER_FAILED_EVENT, function(e:ErrorEvent):void { debug("MATCH_MAKER_FAILED_EVENT: " + e.errorID + ", " + e.text); }); gamekit.addEventListener(GameKit.MATCH_MAKER_CANCELLED_EVENT, function(e:Event):void { debug("MATCH_MAKER_CANCELLED_EVENT"); }); gamekit.addEventListener(GameKit.MATCH_MAKER_FOUND_MATCH_EVENT, function(e:MatchFoundEvent):void { debug("MATCH_MAKER_FOUND_MATCH_EVENT: " + JSON.stringify(e)); match = e.match; // save the match somewhere if (match.expectedPlayerCount == 0) startGame(); // start game if not expecting anymore players }); // bring up native match making interface for a match with 2 to 4 players gamekit.startRealTimeMatch(2, 4); // Send data to other players during game: var data:ByteArray = new ByteArray(); data.writeUTFBytes("hello"); // send a reliable packet to all players match.sendDataToAll(data, true); // send an unreliable packet to the match's first player match.sendData(match.players[0], data, false); // Receive data from other players: match.addEventListener(RealTimeMatch.RECEIVED_DATA_EVENT, function(e:DataReceivedEvent):void { debug("RealTimeMatch.RECEIVED_DATA_EVENT from " + e.player.playerID + ": " + e.data.toString()); }); // Start a voice chat with other players: var chat:VoiceChat = match.getVoiceChat("all"); // join the voice chat so the player can hear other players chat.join(); // set talk to true so other players can hear this player chat.talk = true; // Disconnect and properly dispose the match: match.disconnect(); match.dispose(); // releases the native match object