Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added example applications

  • Loading branch information...
commit e3eac02e35c42d8f0f497dd4ecbd2714664991a4 1 parent 1337626
@rsms authored
Showing with 4,903 additions and 0 deletions.
  1. BIN  Peertalk Example/Icon-1024.psd
  2. BIN  Peertalk Example/Icon.icns
  3. +13 −0 Peertalk Example/PTAppDelegate.h
  4. +293 −0 Peertalk Example/PTAppDelegate.m
  5. +19 −0 Peertalk Example/PTExampleProtocol.h
  6. +34 −0 Peertalk Example/Peertalk Example-Info.plist
  7. +7 −0 Peertalk Example/Peertalk Example-Prefix.pch
  8. +29 −0 Peertalk Example/en.lproj/Credits.rtf
  9. +2 −0  Peertalk Example/en.lproj/InfoPlist.strings
  10. +3,702 −0 Peertalk Example/en.lproj/MainMenu.xib
  11. +14 −0 Peertalk Example/main.m
  12. BIN  Peertalk iOS Example/Default@2x.png
  13. BIN  Peertalk iOS Example/Icon-114@2x.png
  14. BIN  Peertalk iOS Example/Icon-114@2x.psd
  15. BIN  Peertalk iOS Example/Icon-144@2x.png
  16. BIN  Peertalk iOS Example/Icon-144@2x.psd
  17. BIN  Peertalk iOS Example/Icon-72.png
  18. BIN  Peertalk iOS Example/Icon-72.psd
  19. +7 −0 Peertalk iOS Example/PTAppDelegate.h
  20. +21 −0 Peertalk iOS Example/PTAppDelegate.m
  21. +11 −0 Peertalk iOS Example/PTViewController.h
  22. +173 −0 Peertalk iOS Example/PTViewController.m
  23. +65 −0 Peertalk iOS Example/Peertalk iOS Example-Info.plist
  24. +14 −0 Peertalk iOS Example/Peertalk iOS Example-Prefix.pch
  25. +2 −0  Peertalk iOS Example/en.lproj/InfoPlist.strings
  26. +64 −0 Peertalk iOS Example/en.lproj/MainStoryboard_iPad.storyboard
  27. +56 −0 Peertalk iOS Example/en.lproj/MainStoryboard_iPhone.storyboard
  28. +18 −0 Peertalk iOS Example/main.m
  29. BIN  etc/peertalk-icon.pdf
  30. +359 −0 peertalk.xcodeproj/project.pbxproj
View
BIN  Peertalk Example/Icon-1024.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk Example/Icon.icns
Binary file not shown
View
13 Peertalk Example/PTAppDelegate.h
@@ -0,0 +1,13 @@
+#import "PTChannel.h"
+
+static const NSTimeInterval PTAppReconnectDelay = 1.0;
+
+@interface PTAppDelegate : NSObject <NSApplicationDelegate, PTChannelDelegate>
+
+@property (assign) IBOutlet NSWindow *window;
+@property (assign) IBOutlet NSTextField *inputTextField;
+@property (assign) IBOutlet NSTextView *outputTextView;
+
+- (IBAction)sendMessage:(id)sender;
+
+@end
View
293 Peertalk Example/PTAppDelegate.m
@@ -0,0 +1,293 @@
+#import "PTAppDelegate.h"
+#import "PTUSBHub.h"
+#import "PTExampleProtocol.h"
+#import <QuartzCore/QuartzCore.h>
+
+@interface PTAppDelegate () {
+ // If the remote connection is over USB transport...
+ NSNumber *connectingToDeviceID_;
+ NSNumber *connectedDeviceID_;
+ NSDictionary *connectedDeviceProperties_;
+ NSDictionary *remoteDeviceInfo_;
+ dispatch_queue_t notConnectedQueue_;
+ BOOL notConnectedQueueSuspended_;
+ PTChannel *connectedChannel_;
+ NSDictionary *consoleTextAttributes_;
+ NSDictionary *consoleStatusTextAttributes_;
+}
+
+@property (readonly) NSNumber *connectedDeviceID;
+@property PTChannel *connectedChannel;
+
+- (void)presentMessage:(NSString*)message isStatus:(BOOL)isStatus;
+- (void)startListeningForDevices;
+- (void)didDisconnectFromDevice:(NSNumber*)deviceID;
+- (void)disconnectFromCurrentChannel;
+- (void)enqueueConnectToLocalIPv4Port;
+- (void)connectToLocalIPv4Port;
+- (void)connectToUSBDevice;
+
+@end
+
+
+@implementation PTAppDelegate
+
+@synthesize window = window_;
+@synthesize inputTextField = inputTextField_;
+@synthesize outputTextView = outputTextView_;
+@synthesize connectedDeviceID = connectedDeviceID_;
+
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
+ // We use a serial queue that we toggle depending on if we are connected or
+ // not. When we are not connected to a peer, the queue is running to handle
+ // "connect" tries. When we are connected to a peer, the queue is suspended
+ // thus no longer trying to connect.
+ notConnectedQueue_ = dispatch_queue_create("PTExample.notConnectedQueue", DISPATCH_QUEUE_SERIAL);
+
+ // Configure the output NSTextView we use for UI feedback
+ outputTextView_.textContainerInset = NSMakeSize(15.0, 10.0);
+ consoleTextAttributes_ = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSFont fontWithName:@"helvetica" size:16.0], NSFontAttributeName,
+ [NSColor lightGrayColor], NSForegroundColorAttributeName,
+ nil];
+ consoleStatusTextAttributes_ = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSFont fontWithName:@"menlo" size:11.0], NSFontAttributeName,
+ [NSColor darkGrayColor], NSForegroundColorAttributeName,
+ nil];
+
+ // Configure the input NSTextField we use for UI input
+ [inputTextField_ setFont:[NSFont fontWithDescriptor:[[consoleTextAttributes_ objectForKey:NSFontAttributeName] fontDescriptor] size:14.0]];
+ [self.window makeFirstResponder:inputTextField_];
+
+ // Start listening for device attached/detached notifications
+ [self startListeningForDevices];
+
+ // Start trying to connect to local IPv4 port (defined in PTExampleProtocol.h)
+ [self enqueueConnectToLocalIPv4Port];
+
+ // Put a little message in the UI
+ [self presentMessage:@"Ready for action — connecting at will." isStatus:YES];
+}
+
+
+- (IBAction)sendMessage:(id)sender {
+ if (connectedChannel_) {
+ NSString *message = self.inputTextField.stringValue;
+ dispatch_data_t payload = [[message dataUsingEncoding:NSUTF8StringEncoding] createReferencingDispatchData];
+ [connectedChannel_ sendFrameOfType:PTExampleFrameTypeTextMessage tag:PTFrameNoTag withPayload:payload callback:^(NSError *error) {
+ if (error) {
+ NSLog(@"Failed to send message: %@", error);
+ }
+ }];
+ [self presentMessage:[NSString stringWithFormat:@"[you]: %@", message] isStatus:NO];
+ self.inputTextField.stringValue = @"";
+ }
+}
+
+
+- (void)presentMessage:(NSString*)message isStatus:(BOOL)isStatus {
+ NSLog(@">> %@", message);
+ [self.outputTextView.textStorage beginEditing];
+ if (self.outputTextView.textStorage.length > 0) {
+ message = [@"\n" stringByAppendingString:message];
+ }
+ [self.outputTextView.textStorage appendAttributedString:[[NSAttributedString alloc] initWithString:message attributes:isStatus ? consoleStatusTextAttributes_ : consoleTextAttributes_]];
+ [self.outputTextView.textStorage endEditing];
+
+ [NSAnimationContext beginGrouping];
+ [NSAnimationContext currentContext].duration = 0.15;
+ [NSAnimationContext currentContext].timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
+ NSClipView* clipView = [[self.outputTextView enclosingScrollView] contentView];
+ NSPoint newOrigin = clipView.bounds.origin;
+ newOrigin.y += 5.0; // hack A 1/2
+ [clipView setBoundsOrigin:newOrigin]; // hack A 2/2
+ newOrigin.y += 1000.0;
+ newOrigin = [clipView constrainScrollPoint:newOrigin];
+ [clipView.animator setBoundsOrigin:newOrigin];
+ [NSAnimationContext endGrouping];
+
+ // Scrolling w/o animation:
+ //[self.outputTextView scrollToEndOfDocument:self];
+}
+
+
+- (PTChannel*)connectedChannel {
+ return connectedChannel_;
+}
+
+- (void)setConnectedChannel:(PTChannel*)connectedChannel {
+ connectedChannel_ = connectedChannel;
+
+ // Toggle the notConnectedQueue_ depending on if we are connected or not
+ if (!connectedChannel_ && notConnectedQueueSuspended_) {
+ dispatch_resume(notConnectedQueue_);
+ notConnectedQueueSuspended_ = NO;
+ } else if (connectedChannel_ && !notConnectedQueueSuspended_) {
+ dispatch_suspend(notConnectedQueue_);
+ notConnectedQueueSuspended_ = YES;
+ }
+
+ if (!connectedChannel_ && connectingToDeviceID_) {
+ [self enqueueConnectToUSBDevice];
+ }
+}
+
+
+#pragma mark - PTChannelDelegate
+
+
+- (BOOL)ioFrameChannel:(PTChannel*)channel shouldAcceptFrameOfType:(uint32_t)type tag:(uint32_t)tag payloadSize:(uint32_t)payloadSize {
+ if ( type != PTExampleFrameTypeDeviceInfo
+ && type != PTExampleFrameTypeTextMessage
+ && type != PTFrameTypeEndOfStream) {
+ NSLog(@"Unexpected frame of type %u", type);
+ [channel close];
+ return NO;
+ } else {
+ return YES;
+ }
+}
+
+- (void)ioFrameChannel:(PTChannel*)channel didReceiveFrameOfType:(uint32_t)type tag:(uint32_t)tag payload:(PTData*)payload {
+ //NSLog(@"received %@, %u, %u, %@", channel, type, tag, payload);
+ if (type == PTExampleFrameTypeDeviceInfo) {
+ NSDictionary *deviceInfo = [NSDictionary dictionaryWithContentsOfDispatchData:payload.dispatchData];
+ [self presentMessage:[NSString stringWithFormat:@"Connected to %@", deviceInfo.description] isStatus:YES];
+ } else if (type == PTExampleFrameTypeTextMessage) {
+ NSString *message = [[NSString alloc] initWithBytes:payload.data length:payload.length encoding:NSUTF8StringEncoding];
+ [self presentMessage:[NSString stringWithFormat:@"[%@]: %@", channel.userInfo, message] isStatus:NO];
+ }
+}
+
+- (void)ioFrameChannel:(PTChannel*)channel didEndWithError:(NSError*)error {
+ if (connectedDeviceID_ && [connectedDeviceID_ isEqualToNumber:channel.userInfo]) {
+ [self didDisconnectFromDevice:connectedDeviceID_];
+ }
+
+ if (connectedChannel_ == channel) {
+ [self presentMessage:[NSString stringWithFormat:@"Disconnected from %@", channel.userInfo] isStatus:YES];
+ self.connectedChannel = nil;
+ }
+}
+
+
+#pragma mark - Wired device connections
+
+
+- (void)startListeningForDevices {
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+
+ [nc addObserverForName:PTUSBDeviceDidAttachNotification object:PTUSBHub.sharedHub queue:nil usingBlock:^(NSNotification *note) {
+ NSNumber *deviceID = [note.userInfo objectForKey:@"DeviceID"];
+ //NSLog(@"PTUSBDeviceDidAttachNotification: %@", note.userInfo);
+ NSLog(@"PTUSBDeviceDidAttachNotification: %@", deviceID);
+
+ dispatch_async(notConnectedQueue_, ^{
+ if (!connectingToDeviceID_ || ![deviceID isEqualToNumber:connectingToDeviceID_]) {
+ [self disconnectFromCurrentChannel];
+ connectingToDeviceID_ = deviceID;
+ connectedDeviceProperties_ = [note.userInfo objectForKey:@"Properties"];
+ [self enqueueConnectToUSBDevice];
+ }
+ });
+ }];
+
+ [nc addObserverForName:PTUSBDeviceDidDetachNotification object:PTUSBHub.sharedHub queue:nil usingBlock:^(NSNotification *note) {
+ NSNumber *deviceID = [note.userInfo objectForKey:@"DeviceID"];
+ //NSLog(@"PTUSBDeviceDidDetachNotification: %@", note.userInfo);
+ NSLog(@"PTUSBDeviceDidDetachNotification: %@", deviceID);
+
+ if ([connectingToDeviceID_ isEqualToNumber:deviceID]) {
+ connectedDeviceProperties_ = nil;
+ connectingToDeviceID_ = nil;
+ if (connectedChannel_) {
+ [connectedChannel_ close];
+ }
+ }
+ }];
+}
+
+
+- (void)didDisconnectFromDevice:(NSNumber*)deviceID {
+ NSLog(@"Disconnected from device");
+ if ([connectedDeviceID_ isEqualToNumber:deviceID]) {
+ [self willChangeValueForKey:@"connectedDeviceID"];
+ connectedDeviceID_ = nil;
+ [self didChangeValueForKey:@"connectedDeviceID"];
+ }
+}
+
+
+- (void)disconnectFromCurrentChannel {
+ if (connectedDeviceID_ && connectedChannel_) {
+ [connectedChannel_ close];
+ self.connectedChannel = nil;
+ }
+}
+
+
+- (void)enqueueConnectToLocalIPv4Port {
+ dispatch_async(notConnectedQueue_, ^{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self connectToLocalIPv4Port];
+ });
+ });
+}
+
+
+- (void)connectToLocalIPv4Port {
+ PTChannel *channel = [PTChannel channelWithDelegate:self];
+ channel.userInfo = [NSString stringWithFormat:@"127.0.0.1:%d", PTExampleProtocolIPv4PortNumber];
+ [channel connectToPort:PTExampleProtocolIPv4PortNumber IPv4Address:INADDR_LOOPBACK callback:^(NSError *error, PTAddress *address) {
+ if (error) {
+ if (error.domain == NSPOSIXErrorDomain && (error.code == ECONNREFUSED || error.code == ETIMEDOUT)) {
+ // this is an expected state
+ } else {
+ NSLog(@"Failed to connect to 127.0.0.1:%d: %@", PTExampleProtocolIPv4PortNumber, error);
+ }
+ } else {
+ [self disconnectFromCurrentChannel];
+ self.connectedChannel = channel;
+ channel.userInfo = address;
+ NSLog(@"Connected to %@", address);
+ }
+ [self performSelector:@selector(enqueueConnectToLocalIPv4Port) withObject:nil afterDelay:PTAppReconnectDelay];
+ }];
+}
+
+
+- (void)enqueueConnectToUSBDevice {
+ dispatch_async(notConnectedQueue_, ^{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self connectToUSBDevice];
+ });
+ });
+}
+
+
+- (void)connectToUSBDevice {
+ PTChannel *channel = [PTChannel channelWithDelegate:self];
+ channel.userInfo = connectingToDeviceID_;
+ channel.delegate = self;
+
+ [channel connectToPort:PTExampleProtocolIPv4PortNumber overUSBHub:PTUSBHub.sharedHub deviceID:connectingToDeviceID_ callback:^(NSError *error) {
+ if (error) {
+ if (error.domain == PTUSBHubErrorDomain && error.code == PTUSBHubErrorConnectionRefused) {
+ NSLog(@"Failed to connect to device #%@: %@", channel.userInfo, error);
+ } else {
+ NSLog(@"Failed to connect to device #%@: %@", channel.userInfo, error);
+ }
+ if (channel.userInfo == connectingToDeviceID_) {
+ [self performSelector:@selector(enqueueConnectToUSBDevice) withObject:nil afterDelay:PTAppReconnectDelay];
+ }
+ } else {
+ connectedDeviceID_ = connectingToDeviceID_;
+ self.connectedChannel = channel;
+ //NSLog(@"Connected to device #%@\n%@", connectingToDeviceID_, connectedDeviceProperties_);
+ //infoTextField_.stringValue = [NSString stringWithFormat:@"Connected to device #%@\n%@", deviceID, connectedDeviceProperties_];
+ }
+ }];
+}
+
+@end
View
19 Peertalk Example/PTExampleProtocol.h
@@ -0,0 +1,19 @@
+#ifndef peertalk_PTExampleProtocol_h
+#define peertalk_PTExampleProtocol_h
+
+#import <Foundation/Foundation.h>
+#include <stdint.h>
+
+static const int PTExampleProtocolIPv4PortNumber = 2345;
+
+enum {
+ PTExampleFrameTypeDeviceInfo = 100,
+ PTExampleFrameTypeTextMessage = 101,
+};
+
+typedef struct _PTExampleTextFrame {
+ const uint8_t *utf8text;
+} PTExampleTextFrame;
+
+
+#endif
View
34 Peertalk Example/Peertalk Example-Info.plist
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string>Icon</string>
+ <key>CFBundleIdentifier</key>
+ <string>me.rsms.peertalk.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright © 2012 __MyCompanyName__. All rights reserved.</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
View
7 Peertalk Example/Peertalk Example-Prefix.pch
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'Peertalk Example' target in the 'Peertalk Example' project
+//
+
+#ifdef __OBJC__
+ #import <Cocoa/Cocoa.h>
+#endif
View
29 Peertalk Example/en.lproj/Credits.rtf
@@ -0,0 +1,29 @@
+{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\paperw9840\paperh8400
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
+
+\f0\b\fs24 \cf0 Engineering:
+\b0 \
+ Some people\
+\
+
+\b Human Interface Design:
+\b0 \
+ Some other people\
+\
+
+\b Testing:
+\b0 \
+ Hopefully not nobody\
+\
+
+\b Documentation:
+\b0 \
+ Whoever\
+\
+
+\b With special thanks to:
+\b0 \
+ Mom\
+}
View
2  Peertalk Example/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
View
3,702 Peertalk Example/en.lproj/MainMenu.xib
3,702 additions, 0 deletions not shown
View
14 Peertalk Example/main.m
@@ -0,0 +1,14 @@
+//
+// main.m
+// Peertalk Example
+//
+// Created by Rasmus Andersson on 3/30/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[])
+{
+ return NSApplicationMain(argc, (const char **)argv);
+}
View
BIN  Peertalk iOS Example/Default@2x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk iOS Example/Icon-114@2x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk iOS Example/Icon-114@2x.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk iOS Example/Icon-144@2x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk iOS Example/Icon-144@2x.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk iOS Example/Icon-72.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Peertalk iOS Example/Icon-72.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
7 Peertalk iOS Example/PTAppDelegate.h
@@ -0,0 +1,7 @@
+#import <UIKit/UIKit.h>
+
+@interface PTAppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
View
21 Peertalk iOS Example/PTAppDelegate.m
@@ -0,0 +1,21 @@
+#import "PTAppDelegate.h"
+
+@interface PTAppDelegate ()
+@end
+
+@implementation PTAppDelegate
+
+@synthesize window = window_;
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
+ return YES;
+}
+
+
+//- (void)applicationWillTerminate:(UIApplication *)application {
+//}
+
+
+@end
View
11 Peertalk iOS Example/PTViewController.h
@@ -0,0 +1,11 @@
+#import <UIKit/UIKit.h>
+#import "PTChannel.h"
+
+@interface PTViewController : UIViewController <PTChannelDelegate, UITextFieldDelegate>
+
+@property (weak) IBOutlet UITextView *outputTextView;
+@property (weak) IBOutlet UITextField *inputTextField;
+
+- (void)sendMessage:(NSString*)message;
+
+@end
View
173 Peertalk iOS Example/PTViewController.m
@@ -0,0 +1,173 @@
+#import "PTExampleProtocol.h"
+#import "PTViewController.h"
+
+@interface PTViewController () {
+ __weak PTChannel *serverChannel_;
+ __weak PTChannel *peerChannel_;
+}
+- (void)appendOutputMessage:(NSString*)message;
+- (void)sendDeviceInfo;
+@end
+
+@implementation PTViewController
+
+@synthesize outputTextView = outputTextView_;
+@synthesize inputTextField = inputTextField_;
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ // Setup UI
+ inputTextField_.delegate = self;
+ inputTextField_.enablesReturnKeyAutomatically = NO;
+ [inputTextField_ becomeFirstResponder];
+ outputTextView_.text = @"";
+
+ // Create a new channel that is listening on our IPv4 port
+ PTChannel *channel = [PTChannel channelWithDelegate:self];
+ [channel listenOnPort:PTExampleProtocolIPv4PortNumber IPv4Address:INADDR_LOOPBACK callback:^(NSError *error) {
+ if (error) {
+ [self appendOutputMessage:[NSString stringWithFormat:@"Failed to listen on 127.0.0.1:%d: %@", PTExampleProtocolIPv4PortNumber, error]];
+ } else {
+ [self appendOutputMessage:[NSString stringWithFormat:@"Listening on 127.0.0.1:%d", PTExampleProtocolIPv4PortNumber]];
+ serverChannel_ = channel;
+ }
+ }];
+}
+
+- (void)viewDidUnload {
+ if (serverChannel_) {
+ [serverChannel_ close];
+ }
+ [super viewDidUnload];
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return interfaceOrientation == UIInterfaceOrientationPortrait;
+}
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+ if (peerChannel_) {
+ [self sendMessage:self.inputTextField.text];
+ self.inputTextField.text = @"";
+ return NO;
+ } else {
+ return YES;
+ }
+}
+
+- (void)sendMessage:(NSString*)message {
+ if (peerChannel_) {
+ dispatch_data_t payload = [[message dataUsingEncoding:NSUTF8StringEncoding] createReferencingDispatchData];
+ [peerChannel_ sendFrameOfType:PTExampleFrameTypeTextMessage tag:PTFrameNoTag withPayload:payload callback:^(NSError *error) {
+ if (error) {
+ NSLog(@"Failed to send message: %@", error);
+ }
+ }];
+ [self appendOutputMessage:[NSString stringWithFormat:@"[you]: %@", message]];
+ } else {
+ [self appendOutputMessage:@"Can not send message — not connected"];
+ }
+}
+
+- (void)appendOutputMessage:(NSString*)message {
+ NSLog(@">> %@", message);
+ NSString *text = self.outputTextView.text;
+ if (text.length == 0) {
+ self.outputTextView.text = [text stringByAppendingString:message];
+ } else {
+ self.outputTextView.text = [text stringByAppendingFormat:@"\n%@", message];
+ [self.outputTextView scrollRangeToVisible:NSMakeRange(self.outputTextView.text.length, 0)];
+ }
+}
+
+
+#pragma mark - Communicating
+
+- (void)sendDeviceInfo {
+ if (!peerChannel_) {
+ return;
+ }
+
+ NSLog(@"Sending device info over %@", peerChannel_);
+
+ UIScreen *screen = [UIScreen mainScreen];
+ CGSize screenSize = screen.bounds.size;
+ NSDictionary *screenSizeDict = (__bridge_transfer NSDictionary*)CGSizeCreateDictionaryRepresentation(screenSize);
+ UIDevice *device = [UIDevice currentDevice];
+ NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:
+ device.localizedModel, @"localizedModel",
+ [NSNumber numberWithBool:device.multitaskingSupported], @"multitaskingSupported",
+ device.name, @"name",
+ (UIDeviceOrientationIsLandscape(device.orientation) ? @"landscape" : @"portrait"), @"orientation",
+ device.systemName, @"systemName",
+ device.systemVersion, @"systemVersion",
+ screenSizeDict, @"screenSize",
+ [NSNumber numberWithDouble:screen.scale], @"screenScale",
+ nil];
+ dispatch_data_t payload = [info createReferencingDispatchData];
+ [peerChannel_ sendFrameOfType:PTExampleFrameTypeDeviceInfo tag:PTFrameNoTag withPayload:payload callback:^(NSError *error) {
+ if (error) {
+ NSLog(@"Failed to send PTExampleFrameTypeDeviceInfo: %@", error);
+ }
+ }];
+}
+
+
+#pragma mark - PTChannelDelegate
+
+// Invoked to accept an incoming frame on a channel. Reply NO ignore the
+// incoming frame. If not implemented by the delegate, all frames are accepted.
+- (BOOL)ioFrameChannel:(PTChannel*)channel shouldAcceptFrameOfType:(uint32_t)type tag:(uint32_t)tag payloadSize:(uint32_t)payloadSize {
+ if (channel != peerChannel_) {
+ // A previous channel that has been canceled but not yet ended. Ignore.
+ return NO;
+ } else if (type != PTExampleFrameTypeTextMessage) {
+ NSLog(@"Unexpected frame of type %u", type);
+ [channel close];
+ return NO;
+ } else {
+ return YES;
+ }
+}
+
+// Invoked when a new frame has arrived on a channel.
+- (void)ioFrameChannel:(PTChannel*)channel didReceiveFrameOfType:(uint32_t)type tag:(uint32_t)tag payload:(PTData*)payload {
+ //NSLog(@"didReceiveFrameOfType: %u, %u, %@", type, tag, payload);
+ if (type == PTExampleFrameTypeTextMessage) {
+ NSString *message = [[NSString alloc] initWithBytes:payload.data length:payload.length encoding:NSUTF8StringEncoding];
+ [self appendOutputMessage:[NSString stringWithFormat:@"[%@]: %@", channel.userInfo, message]];
+ }
+}
+
+// Invoked when the channel closed. If it closed because of an error, *error* is
+// a non-nil NSError object.
+- (void)ioFrameChannel:(PTChannel*)channel didEndWithError:(NSError*)error {
+ if (error) {
+ [self appendOutputMessage:[NSString stringWithFormat:@"%@ ended with error: %@", channel, error]];
+ } else {
+ [self appendOutputMessage:[NSString stringWithFormat:@"Disconnected from %@", channel.userInfo]];
+ }
+}
+
+// For listening channels, this method is invoked when a new connection has been
+// accepted.
+- (void)ioFrameChannel:(PTChannel*)channel didAcceptConnection:(PTChannel*)otherChannel fromAddress:(PTAddress*)address {
+ // Cancel any other connection. We are FIFO, so the last connection
+ // established will cancel any previous connection and "take its place".
+ if (peerChannel_) {
+ [peerChannel_ cancel];
+ }
+
+ // Weak pointer to current connection. Connection objects live by themselves
+ // (owned by its parent dispatch queue) until they are closed.
+ peerChannel_ = otherChannel;
+ peerChannel_.userInfo = address;
+ [self appendOutputMessage:[NSString stringWithFormat:@"Connected to %@", address]];
+
+ // Send some information about ourselves to the other end
+ [self sendDeviceInfo];
+}
+
+
+@end
View
65 Peertalk iOS Example/Peertalk iOS Example-Info.plist
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleDisplayName</key>
+ <string>PeerTalk</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>me.rsms.peertalk.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIMainStoryboardFile</key>
+ <string>MainStoryboard_iPhone</string>
+ <key>UIMainStoryboardFile~ipad</key>
+ <string>MainStoryboard_iPad</string>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UIStatusBarStyle</key>
+ <string>UIStatusBarStyleOpaqueBlack</string>
+ <key>CFBundleIcons</key>
+ <dict>
+ <key>CFBundlePrimaryIcon</key>
+ <dict>
+ <key>CFBundleIconFiles</key>
+ <array>
+ <string>Icon-144@2x.png</string>
+ <string>Icon-114@2x.png</string>
+ <string>Icon-72.png</string>
+ </array>
+ <key>UIPrerenderedIcon</key>
+ <true/>
+ </dict>
+ </dict>
+</dict>
+</plist>
View
14 Peertalk iOS Example/Peertalk iOS Example-Prefix.pch
@@ -0,0 +1,14 @@
+//
+// Prefix header for all source files of the 'Peertalk iOS Example' target in the 'Peertalk iOS Example' project
+//
+
+#import <Availability.h>
+
+#ifndef __IPHONE_5_0
+#warning "This project uses features only available in iOS SDK 5.0 and later."
+#endif
+
+#ifdef __OBJC__
+ #import <UIKit/UIKit.h>
+ #import <Foundation/Foundation.h>
+#endif
View
2  Peertalk iOS Example/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
View
64 Peertalk iOS Example/en.lproj/MainStoryboard_iPad.storyboard
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.1" toolsVersion="2182" systemVersion="11D50b" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="2">
+ <dependencies>
+ <deployment defaultVersion="1296" identifier="iOS"/>
+ <development defaultVersion="4200" identifier="xcode"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1179"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="4">
+ <objects>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="3" sceneMemberID="firstResponder"/>
+ <viewController id="2" customClass="PTViewController" sceneMemberID="viewController">
+ <view key="view" contentMode="scaleToFill" id="5">
+ <rect key="frame" x="0.0" y="20" width="768" height="1004"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" indicatorStyle="white" editable="NO" id="mmc-gT-trk">
+ <rect key="frame" x="0.0" y="0.0" width="768" height="702"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+ <mutableString key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</mutableString>
+ <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ <fontDescription key="fontDescription" type="system" pointSize="18"/>
+ <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+ </textView>
+ <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Send a message..." minimumFontSize="18" id="NDZ-7e-7y0">
+ <rect key="frame" x="9" y="706" width="308" height="31"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <fontDescription key="fontDescription" type="system" pointSize="18"/>
+ <textInputTraits key="textInputTraits" autocorrectionType="yes" returnKeyType="send" enablesReturnKeyAutomatically="YES"/>
+ </textField>
+ <view contentMode="scaleToFill" id="vPD-It-9Rb">
+ <rect key="frame" x="0.0" y="740" width="768" height="264"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" red="0.92297894020000004" green="0.92297894020000004" blue="0.92297894020000004" alpha="1" colorSpace="calibratedRGB"/>
+ </view>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ <connections>
+ <outlet property="inputTextField" destination="NDZ-7e-7y0" id="fIw-mU-d6D"/>
+ <outlet property="outputTextView" destination="mmc-gT-trk" id="LTH-kX-rPR"/>
+ </connections>
+ </viewController>
+ </objects>
+ </scene>
+ </scenes>
+ <classes>
+ <class className="PTViewController" superclassName="UIViewController">
+ <source key="sourceIdentifier" type="project" relativePath="./Classes/PTViewController.h"/>
+ <relationships>
+ <relationship kind="outlet" name="inputTextField" candidateClass="UITextField"/>
+ <relationship kind="outlet" name="outputTextView" candidateClass="UITextView"/>
+ </relationships>
+ </class>
+ </classes>
+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
+ <simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
+ <simulatedOrientationMetrics key="orientation"/>
+ <simulatedScreenMetrics key="destination"/>
+ </simulatedMetricsContainer>
+</document>
View
56 Peertalk iOS Example/en.lproj/MainStoryboard_iPhone.storyboard
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.1" toolsVersion="2182" systemVersion="11D50b" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="2">
+ <dependencies>
+ <deployment defaultVersion="1296" identifier="iOS"/>
+ <development defaultVersion="4200" identifier="xcode"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1179"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="5">
+ <objects>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="4" sceneMemberID="firstResponder"/>
+ <viewController id="2" customClass="PTViewController" sceneMemberID="viewController">
+ <view key="view" contentMode="scaleToFill" id="3">
+ <rect key="frame" x="0.0" y="20" width="320" height="460"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <view contentMode="scaleToFill" id="UIY-5f-gem">
+ <rect key="frame" x="0.0" y="244" width="320" height="216"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" red="0.92297894021739135" green="0.92297894021739135" blue="0.92297894021739135" alpha="1" colorSpace="calibratedRGB"/>
+ </view>
+ <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Send a message..." minimumFontSize="17" id="UKX-qt-TYM">
+ <rect key="frame" x="7" y="213" width="308" height="31"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <fontDescription key="fontDescription" type="system" pointSize="14"/>
+ <textInputTraits key="textInputTraits" autocorrectionType="yes" returnKeyType="send" enablesReturnKeyAutomatically="YES"/>
+ </textField>
+ <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" indicatorStyle="white" editable="NO" id="21H-AG-zy4">
+ <rect key="frame" x="0.0" y="0.0" width="320" height="213"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+ <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
+ <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ <fontDescription key="fontDescription" type="system" pointSize="14"/>
+ <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+ </textView>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ <simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackOpaque"/>
+ <connections>
+ <outlet property="inputTextField" destination="UKX-qt-TYM" id="0nW-b8-geP"/>
+ <outlet property="outputTextView" destination="21H-AG-zy4" id="Pm8-AH-Io0"/>
+ </connections>
+ </viewController>
+ </objects>
+ </scene>
+ </scenes>
+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
+ <simulatedStatusBarMetrics key="statusBar"/>
+ <simulatedOrientationMetrics key="orientation"/>
+ <simulatedScreenMetrics key="destination"/>
+ </simulatedMetricsContainer>
+</document>
View
18 Peertalk iOS Example/main.m
@@ -0,0 +1,18 @@
+//
+// main.m
+// Peertalk iOS Example
+//
+// Created by Rasmus Andersson on 3/30/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "PTAppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([PTAppDelegate class]));
+ }
+}
View
BIN  etc/peertalk-icon.pdf
Binary file not shown
View
359 peertalk.xcodeproj/project.pbxproj
@@ -7,6 +7,30 @@
objects = {
/* Begin PBXBuildFile section */
+ 6A2E8E351527411E001B90E4 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E8E341527411E001B90E4 /* Default@2x.png */; };
+ 6A2E8E371527451D001B90E4 /* Icon-144@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E8E361527451D001B90E4 /* Icon-144@2x.png */; };
+ 6A2E8E39152745EF001B90E4 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E8E38152745EF001B90E4 /* Icon-72.png */; };
+ 6A2E8E3B1527467E001B90E4 /* Icon-114@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E8E3A1527467E001B90E4 /* Icon-114@2x.png */; };
+ 6A2E8E3D152749E0001B90E4 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E8E3C152749E0001B90E4 /* Icon.icns */; };
+ 6A2E8E3F15274F8E001B90E4 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A2E8E3E15274F8E001B90E4 /* QuartzCore.framework */; };
+ 6A64AAC8152604D40065BF86 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A88FA33150D613800FC3647 /* Cocoa.framework */; };
+ 6A64AACE152604D40065BF86 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6A64AACC152604D40065BF86 /* InfoPlist.strings */; };
+ 6A64AAD0152604D40065BF86 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A64AACF152604D40065BF86 /* main.m */; };
+ 6A64AAD4152604D40065BF86 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 6A64AAD2152604D40065BF86 /* Credits.rtf */; };
+ 6A64AAD7152604D40065BF86 /* PTAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A64AAD6152604D40065BF86 /* PTAppDelegate.m */; };
+ 6A64AADA152604D40065BF86 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6A64AAD8152604D40065BF86 /* MainMenu.xib */; };
+ 6A64AAE51526050D0065BF86 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A64AAE41526050D0065BF86 /* UIKit.framework */; };
+ 6A64AAE61526050D0065BF86 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A0A056E150DB1C10014D424 /* Foundation.framework */; };
+ 6A64AAE81526050D0065BF86 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A64AAE71526050D0065BF86 /* CoreGraphics.framework */; };
+ 6A64AAEE1526050D0065BF86 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6A64AAEC1526050D0065BF86 /* InfoPlist.strings */; };
+ 6A64AAF01526050D0065BF86 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A64AAEF1526050D0065BF86 /* main.m */; };
+ 6A64AAF41526050D0065BF86 /* PTAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A64AAF31526050D0065BF86 /* PTAppDelegate.m */; };
+ 6A64AAF71526050D0065BF86 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6A64AAF51526050D0065BF86 /* MainStoryboard_iPhone.storyboard */; };
+ 6A64AAFA1526050D0065BF86 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6A64AAF81526050D0065BF86 /* MainStoryboard_iPad.storyboard */; };
+ 6A64AAFD1526050D0065BF86 /* PTViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A64AAFC1526050D0065BF86 /* PTViewController.m */; };
+ 6A64AB0215260B4D0065BF86 /* libpeertalk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A88FA30150D613800FC3647 /* libpeertalk.a */; };
+ 6A64AB0815260E5C0065BF86 /* PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ACFD2D5151D36220081ACF5 /* PTChannel.m */; };
+ 6A64AB0915260E600065BF86 /* PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A88FA5D150D61DE00FC3647 /* PTProtocol.m */; };
6A88FA34150D613800FC3647 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A88FA33150D613800FC3647 /* Cocoa.framework */; };
6A88FA46150D613800FC3647 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A88FA45150D613800FC3647 /* SenTestingKit.framework */; };
6A88FA47150D613800FC3647 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A88FA33150D613800FC3647 /* Cocoa.framework */; };
@@ -22,6 +46,13 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
+ 6A64AB0315260B510065BF86 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6A88FA27150D613800FC3647 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6A88FA2F150D613800FC3647;
+ remoteInfo = peertalk;
+ };
6A88FA48150D613800FC3647 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6A88FA27150D613800FC3647 /* Project object */;
@@ -33,6 +64,35 @@
/* Begin PBXFileReference section */
6A0A056E150DB1C10014D424 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 6A2E8E341527411E001B90E4 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = "<group>"; };
+ 6A2E8E361527451D001B90E4 /* Icon-144@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-144@2x.png"; sourceTree = "<group>"; };
+ 6A2E8E38152745EF001B90E4 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-72.png"; sourceTree = "<group>"; };
+ 6A2E8E3A1527467E001B90E4 /* Icon-114@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-114@2x.png"; sourceTree = "<group>"; };
+ 6A2E8E3C152749E0001B90E4 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
+ 6A2E8E3E15274F8E001B90E4 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ 6A64AAC6152604D40065BF86 /* Peertalk Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Peertalk Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6A64AACB152604D40065BF86 /* Peertalk Example-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Peertalk Example-Info.plist"; sourceTree = "<group>"; };
+ 6A64AACD152604D40065BF86 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 6A64AACF152604D40065BF86 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ 6A64AAD1152604D40065BF86 /* Peertalk Example-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Peertalk Example-Prefix.pch"; sourceTree = "<group>"; };
+ 6A64AAD3152604D40065BF86 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
+ 6A64AAD5152604D40065BF86 /* PTAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PTAppDelegate.h; sourceTree = "<group>"; };
+ 6A64AAD6152604D40065BF86 /* PTAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PTAppDelegate.m; sourceTree = "<group>"; };
+ 6A64AAD9152604D40065BF86 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
+ 6A64AAE21526050D0065BF86 /* Peertalk iOS Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Peertalk iOS Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6A64AAE41526050D0065BF86 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
+ 6A64AAE71526050D0065BF86 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
+ 6A64AAEB1526050D0065BF86 /* Peertalk iOS Example-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Peertalk iOS Example-Info.plist"; sourceTree = "<group>"; };
+ 6A64AAED1526050D0065BF86 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 6A64AAEF1526050D0065BF86 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ 6A64AAF11526050D0065BF86 /* Peertalk iOS Example-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Peertalk iOS Example-Prefix.pch"; sourceTree = "<group>"; };
+ 6A64AAF21526050D0065BF86 /* PTAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PTAppDelegate.h; sourceTree = "<group>"; };
+ 6A64AAF31526050D0065BF86 /* PTAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PTAppDelegate.m; sourceTree = "<group>"; };
+ 6A64AAF61526050D0065BF86 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = "<group>"; };
+ 6A64AAF91526050D0065BF86 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = "<group>"; };
+ 6A64AAFB1526050D0065BF86 /* PTViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PTViewController.h; sourceTree = "<group>"; };
+ 6A64AAFC1526050D0065BF86 /* PTViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PTViewController.m; sourceTree = "<group>"; };
+ 6A64AB01152608C80065BF86 /* PTExampleProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PTExampleProtocol.h; sourceTree = "<group>"; };
6A88FA30150D613800FC3647 /* libpeertalk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpeertalk.a; sourceTree = BUILT_PRODUCTS_DIR; };
6A88FA33150D613800FC3647 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
6A88FA36150D613800FC3647 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@@ -54,6 +114,26 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 6A64AAC3152604D40065BF86 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6A2E8E3F15274F8E001B90E4 /* QuartzCore.framework in Frameworks */,
+ 6A64AB0215260B4D0065BF86 /* libpeertalk.a in Frameworks */,
+ 6A64AAC8152604D40065BF86 /* Cocoa.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6A64AADF1526050D0065BF86 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6A64AAE51526050D0065BF86 /* UIKit.framework in Frameworks */,
+ 6A64AAE61526050D0065BF86 /* Foundation.framework in Frameworks */,
+ 6A64AAE81526050D0065BF86 /* CoreGraphics.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
6A88FA2D150D613800FC3647 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -75,12 +155,69 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 6A64AAC9152604D40065BF86 /* Peertalk Example */ = {
+ isa = PBXGroup;
+ children = (
+ 6A64AB01152608C80065BF86 /* PTExampleProtocol.h */,
+ 6A64AAD5152604D40065BF86 /* PTAppDelegate.h */,
+ 6A64AAD6152604D40065BF86 /* PTAppDelegate.m */,
+ 6A64AAD8152604D40065BF86 /* MainMenu.xib */,
+ 6A64AACA152604D40065BF86 /* Supporting Files */,
+ );
+ path = "Peertalk Example";
+ sourceTree = "<group>";
+ };
+ 6A64AACA152604D40065BF86 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 6A2E8E3C152749E0001B90E4 /* Icon.icns */,
+ 6A64AACB152604D40065BF86 /* Peertalk Example-Info.plist */,
+ 6A64AACC152604D40065BF86 /* InfoPlist.strings */,
+ 6A64AACF152604D40065BF86 /* main.m */,
+ 6A64AAD1152604D40065BF86 /* Peertalk Example-Prefix.pch */,
+ 6A64AAD2152604D40065BF86 /* Credits.rtf */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ 6A64AAE91526050D0065BF86 /* Peertalk iOS Example */ = {
+ isa = PBXGroup;
+ children = (
+ 6A64AAF21526050D0065BF86 /* PTAppDelegate.h */,
+ 6A64AAF31526050D0065BF86 /* PTAppDelegate.m */,
+ 6A64AAFB1526050D0065BF86 /* PTViewController.h */,
+ 6A64AAFC1526050D0065BF86 /* PTViewController.m */,
+ 6A64AAF51526050D0065BF86 /* MainStoryboard_iPhone.storyboard */,
+ 6A64AAF81526050D0065BF86 /* MainStoryboard_iPad.storyboard */,
+ 6A64AAEA1526050D0065BF86 /* Supporting Files */,
+ );
+ path = "Peertalk iOS Example";
+ sourceTree = "<group>";
+ };
+ 6A64AAEA1526050D0065BF86 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 6A2E8E3A1527467E001B90E4 /* Icon-114@2x.png */,
+ 6A2E8E361527451D001B90E4 /* Icon-144@2x.png */,
+ 6A2E8E38152745EF001B90E4 /* Icon-72.png */,
+ 6A2E8E341527411E001B90E4 /* Default@2x.png */,
+ 6A64AAEB1526050D0065BF86 /* Peertalk iOS Example-Info.plist */,
+ 6A64AAEC1526050D0065BF86 /* InfoPlist.strings */,
+ 6A64AAEF1526050D0065BF86 /* main.m */,
+ 6A64AAF11526050D0065BF86 /* Peertalk iOS Example-Prefix.pch */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
6A88FA25150D613800FC3647 = {
isa = PBXGroup;
children = (
+ 6A2E8E3E15274F8E001B90E4 /* QuartzCore.framework */,
6A88FA3B150D613800FC3647 /* peertalk-Prefix.pch */,
6A88FA39150D613800FC3647 /* peertalk */,
6A88FA4B150D613800FC3647 /* tests */,
+ 6A64AAC9152604D40065BF86 /* Peertalk Example */,
+ 6A64AAE91526050D0065BF86 /* Peertalk iOS Example */,
6A88FA32150D613800FC3647 /* Frameworks */,
6A88FA31150D613800FC3647 /* Products */,
);
@@ -91,6 +228,8 @@
children = (
6A88FA30150D613800FC3647 /* libpeertalk.a */,
6A88FA44150D613800FC3647 /* peertalkTests.octest */,
+ 6A64AAC6152604D40065BF86 /* Peertalk Example.app */,
+ 6A64AAE21526050D0065BF86 /* Peertalk iOS Example.app */,
);
name = Products;
sourceTree = "<group>";
@@ -101,6 +240,8 @@
6A88FA33150D613800FC3647 /* Cocoa.framework */,
6A88FA45150D613800FC3647 /* SenTestingKit.framework */,
6A0A056E150DB1C10014D424 /* Foundation.framework */,
+ 6A64AAE41526050D0065BF86 /* UIKit.framework */,
+ 6A64AAE71526050D0065BF86 /* CoreGraphics.framework */,
6A88FA35150D613800FC3647 /* Other Frameworks */,
);
name = Frameworks;
@@ -165,6 +306,41 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 6A64AAC5152604D40065BF86 /* Peertalk Example */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6A64AADB152604D40065BF86 /* Build configuration list for PBXNativeTarget "Peertalk Example" */;
+ buildPhases = (
+ 6A64AAC2152604D40065BF86 /* Sources */,
+ 6A64AAC3152604D40065BF86 /* Frameworks */,
+ 6A64AAC4152604D40065BF86 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6A64AB0415260B510065BF86 /* PBXTargetDependency */,
+ );
+ name = "Peertalk Example";
+ productName = "Peertalk Example";
+ productReference = 6A64AAC6152604D40065BF86 /* Peertalk Example.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 6A64AAE11526050D0065BF86 /* Peertalk iOS Example */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6A64AAFE1526050D0065BF86 /* Build configuration list for PBXNativeTarget "Peertalk iOS Example" */;
+ buildPhases = (
+ 6A64AADE1526050D0065BF86 /* Sources */,
+ 6A64AADF1526050D0065BF86 /* Frameworks */,
+ 6A64AAE01526050D0065BF86 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "Peertalk iOS Example";
+ productName = "Peertalk iOS Example";
+ productReference = 6A64AAE21526050D0065BF86 /* Peertalk iOS Example.app */;
+ productType = "com.apple.product-type.application";
+ };
6A88FA2F150D613800FC3647 /* peertalk */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6A88FA56150D613800FC3647 /* Build configuration list for PBXNativeTarget "peertalk" */;
@@ -223,11 +399,38 @@
targets = (
6A88FA2F150D613800FC3647 /* peertalk */,
6A88FA43150D613800FC3647 /* peertalkTests */,
+ 6A64AAC5152604D40065BF86 /* Peertalk Example */,
+ 6A64AAE11526050D0065BF86 /* Peertalk iOS Example */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 6A64AAC4152604D40065BF86 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6A64AACE152604D40065BF86 /* InfoPlist.strings in Resources */,
+ 6A64AAD4152604D40065BF86 /* Credits.rtf in Resources */,
+ 6A64AADA152604D40065BF86 /* MainMenu.xib in Resources */,
+ 6A2E8E3D152749E0001B90E4 /* Icon.icns in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6A64AAE01526050D0065BF86 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6A64AAEE1526050D0065BF86 /* InfoPlist.strings in Resources */,
+ 6A64AAF71526050D0065BF86 /* MainStoryboard_iPhone.storyboard in Resources */,
+ 6A64AAFA1526050D0065BF86 /* MainStoryboard_iPad.storyboard in Resources */,
+ 6A2E8E351527411E001B90E4 /* Default@2x.png in Resources */,
+ 6A2E8E371527451D001B90E4 /* Icon-144@2x.png in Resources */,
+ 6A2E8E39152745EF001B90E4 /* Icon-72.png in Resources */,
+ 6A2E8E3B1527467E001B90E4 /* Icon-114@2x.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
6A88FA41150D613800FC3647 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -255,6 +458,27 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 6A64AAC2152604D40065BF86 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6A64AAD0152604D40065BF86 /* main.m in Sources */,
+ 6A64AAD7152604D40065BF86 /* PTAppDelegate.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6A64AADE1526050D0065BF86 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6A64AAF01526050D0065BF86 /* main.m in Sources */,
+ 6A64AAF41526050D0065BF86 /* PTAppDelegate.m in Sources */,
+ 6A64AAFD1526050D0065BF86 /* PTViewController.m in Sources */,
+ 6A64AB0815260E5C0065BF86 /* PTChannel.m in Sources */,
+ 6A64AB0915260E600065BF86 /* PTProtocol.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
6A88FA2C150D613800FC3647 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -276,6 +500,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 6A64AB0415260B510065BF86 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6A88FA2F150D613800FC3647 /* peertalk */;
+ targetProxy = 6A64AB0315260B510065BF86 /* PBXContainerItemProxy */;
+ };
6A88FA49150D613800FC3647 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 6A88FA2F150D613800FC3647 /* peertalk */;
@@ -284,6 +513,54 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
+ 6A64AACC152604D40065BF86 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6A64AACD152604D40065BF86 /* en */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+ 6A64AAD2152604D40065BF86 /* Credits.rtf */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6A64AAD3152604D40065BF86 /* en */,
+ );
+ name = Credits.rtf;
+ sourceTree = "<group>";
+ };
+ 6A64AAD8152604D40065BF86 /* MainMenu.xib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6A64AAD9152604D40065BF86 /* en */,
+ );
+ name = MainMenu.xib;
+ sourceTree = "<group>";
+ };
+ 6A64AAEC1526050D0065BF86 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6A64AAED1526050D0065BF86 /* en */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+ 6A64AAF51526050D0065BF86 /* MainStoryboard_iPhone.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6A64AAF61526050D0065BF86 /* en */,
+ );
+ name = MainStoryboard_iPhone.storyboard;
+ sourceTree = "<group>";
+ };
+ 6A64AAF81526050D0065BF86 /* MainStoryboard_iPad.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6A64AAF91526050D0065BF86 /* en */,
+ );
+ name = MainStoryboard_iPad.storyboard;
+ sourceTree = "<group>";
+ };
6A88FA4E150D613800FC3647 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
@@ -295,6 +572,70 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
+ 6A64AADC152604D40065BF86 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "Peertalk Example/Peertalk Example-Prefix.pch";
+ INFOPLIST_FILE = "Peertalk Example/Peertalk Example-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ 6A64AADD152604D40065BF86 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "Peertalk Example/Peertalk Example-Prefix.pch";
+ INFOPLIST_FILE = "Peertalk Example/Peertalk Example-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+ 6A64AAFF1526050D0065BF86 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
+ );
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "Peertalk iOS Example/Peertalk iOS Example-Prefix.pch";
+ INFOPLIST_FILE = "Peertalk iOS Example/Peertalk iOS Example-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ 6A64AB001526050D0065BF86 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
+ );
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "Peertalk iOS Example/Peertalk iOS Example-Prefix.pch";
+ INFOPLIST_FILE = "Peertalk iOS Example/Peertalk iOS Example-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
6A88FA54150D613800FC3647 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -387,6 +728,24 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 6A64AADB152604D40065BF86 /* Build configuration list for PBXNativeTarget "Peertalk Example" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6A64AADC152604D40065BF86 /* Debug */,
+ 6A64AADD152604D40065BF86 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6A64AAFE1526050D0065BF86 /* Build configuration list for PBXNativeTarget "Peertalk iOS Example" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6A64AAFF1526050D0065BF86 /* Debug */,
+ 6A64AB001526050D0065BF86 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
6A88FA2A150D613800FC3647 /* Build configuration list for PBXProject "peertalk" */ = {
isa = XCConfigurationList;
buildConfigurations = (
Please sign in to comment.
Something went wrong with that request. Please try again.