diff --git a/.gitignore b/.gitignore index f0ef391..1be0e33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ build/ -PushMeBaby.xcodeproj/xcuserdata/ \ No newline at end of file +PushMeBaby.xcodeproj/xcuserdata/ +PushMeBaby.xcodeproj/project.xcworkspace/ +PushMeBaby.xcodeproj/TemplateIcon.icns \ No newline at end of file diff --git a/Classes/ApplicationDelegate.h b/Classes/ApplicationDelegate.h index af19ee3..fe9db30 100644 --- a/Classes/ApplicationDelegate.h +++ b/Classes/ApplicationDelegate.h @@ -17,7 +17,9 @@ SecKeychainRef keychain; SecCertificateRef certificate; SecIdentityRef identity; + NSWindow* window; } +@property (nonatomic, retain) IBOutlet NSWindow* window; #pragma mark IBAction - (IBAction)push:(id)sender; @end diff --git a/Classes/ApplicationDelegate.m b/Classes/ApplicationDelegate.m index 2bd171e..ef8c620 100644 --- a/Classes/ApplicationDelegate.m +++ b/Classes/ApplicationDelegate.m @@ -4,10 +4,22 @@ // // Created by Stefan Hafeneger on 07.04.09. // Copyright 2009 __MyCompanyName__. All rights reserved. +// Modified by jlott on 01.01.2012 // #import "ApplicationDelegate.h" +// apple gateway must be production if using a production certificate, else if using a developer certificate, then use sandbox +#define kApplePushGateway "gateway.push.apple.com" //"gateway.sandbox.push.apple.com" + +// Device token should be 32 bytes +// The push text box requires there to be spaces in the token between every 8 characters. There is code to check and fix this at runtime. +#define kDeviceToken @"1111111122222222aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffff" + +// name the cert to whatever you want. Make sure the cert is bundled with app (check the Copy Bundle Resources build phase) +// cert should be of extension ".cer" and should NOT contain the private key, just the cert by itself. +#define kPushCertificate @"Push_Notification_Certificate_Production.cer" + @interface ApplicationDelegate () #pragma mark Properties @property(nonatomic, retain) NSString *deviceToken, *payload, *certificate; @@ -17,15 +29,17 @@ - (void)disconnect; @end @implementation ApplicationDelegate +@synthesize window; #pragma mark Allocation - (id)init { self = [super init]; if(self != nil) { - self.deviceToken = @""; - self.payload = @"{\"aps\":{\"alert\":\"This is some fancy message.\",\"badge\":1}}"; - self.certificate = [[NSBundle mainBundle] pathForResource:@"apns" ofType:@"cer"]; + self.deviceToken = kDeviceToken; + self.payload = @"{\"aps\":{\"alert\":\"This is some fancy message.\",\"badge\":1,\"sound\" : \"bingbong.aiff\"}}"; + NSString* certificateName = kPushCertificate; + self.certificate = [[NSBundle mainBundle] pathForResource:[certificateName stringByDeletingPathExtension] ofType:[certificateName pathExtension]]; } return self; } @@ -76,41 +90,41 @@ - (void)connect { // Establish connection to server. PeerSpec peer; - result = MakeServerConnection("gateway.sandbox.push.apple.com", 2195, &socket, &peer);// NSLog(@"MakeServerConnection(): %d", result); + result = MakeServerConnection(kApplePushGateway, 2195, &socket, &peer); NSLog(@"MakeServerConnection(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Create new SSL context. - result = SSLNewContext(false, &context);// NSLog(@"SSLNewContext(): %d", result); + result = SSLNewContext(false, &context); NSLog(@"SSLNewContext(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Set callback functions for SSL context. - result = SSLSetIOFuncs(context, SocketRead, SocketWrite);// NSLog(@"SSLSetIOFuncs(): %d", result); + result = SSLSetIOFuncs(context, SocketRead, SocketWrite); NSLog(@"SSLSetIOFuncs(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Set SSL context connection. - result = SSLSetConnection(context, socket);// NSLog(@"SSLSetConnection(): %d", result); + result = SSLSetConnection(context, socket); NSLog(@"SSLSetConnection(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Set server domain name. - result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30);// NSLog(@"SSLSetPeerDomainName(): %d", result); - + result = SSLSetPeerDomainName(context, kApplePushGateway, [[NSString stringWithUTF8String:kApplePushGateway] length]); NSLog(@"SSLSetPeerDomainName(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); + // Open keychain. - result = SecKeychainCopyDefault(&keychain);// NSLog(@"SecKeychainOpen(): %d", result); + result = SecKeychainCopyDefault(&keychain); NSLog(@"SecKeychainOpen(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Create certificate. NSData *certificateData = [NSData dataWithContentsOfFile:self.certificate]; CSSM_DATA data; data.Data = (uint8 *)[certificateData bytes]; data.Length = [certificateData length]; - result = SecCertificateCreateFromData(&data, CSSM_CERT_X_509v3, CSSM_CERT_ENCODING_BER, &certificate);// NSLog(@"SecCertificateCreateFromData(): %d", result); + result = SecCertificateCreateFromData(&data, CSSM_CERT_X_509v3, CSSM_CERT_ENCODING_BER, &certificate); NSLog(@"SecCertificateCreateFromData(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Create identity. - result = SecIdentityCreateWithCertificate(keychain, certificate, &identity);// NSLog(@"SecIdentityCreateWithCertificate(): %d", result); + result = SecIdentityCreateWithCertificate(keychain, certificate, &identity); NSLog(@"SecIdentityCreateWithCertificate(): %d [%s]- %@", result, (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Set client certificate. CFArrayRef certificates = CFArrayCreate(NULL, (const void **)&identity, 1, NULL); - result = SSLSetCertificate(context, certificates);// NSLog(@"SSLSetCertificate(): %d", result); + result = SSLSetCertificate(context, certificates); NSLog(@"SSLSetCertificate(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); CFRelease(certificates); // Perform SSL handshake. do { - result = SSLHandshake(context);// NSLog(@"SSLHandshake(): %d", result); + result = SSLHandshake(context); NSLog(@"SSLHandshake(): %d", result);NSLog(@"SSLHandshake(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); } while(result == errSSLWouldBlock); } @@ -125,7 +139,7 @@ - (void)disconnect { OSStatus result; // Close SSL session. - result = SSLClose(context);// NSLog(@"SSLClose(): %d", result); + result = SSLClose(context);// NSLog(@"SSLClose(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); // Release identity. CFRelease(identity); @@ -140,7 +154,7 @@ - (void)disconnect { close((int)socket); // Delete SSL context. - result = SSLDisposeContext(context);// NSLog(@"SSLDisposeContext(): %d", result); + result = SSLDisposeContext(context);// NSLog(@"SSLDisposeContext(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); } @@ -148,15 +162,39 @@ - (void)disconnect { - (IBAction)push:(id)sender { - if(self.certificate == nil) { - NSLog(@"you need the APNS Certificate for the app to work"); - exit(1); + if(! self.certificate) { + NSString* message = @"you need the APNS Certificate for the app to work"; + NSLog(@"%@", message); + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + [alert setMessageText:message]; + [alert beginSheetModalForWindow:window + modalDelegate:self + didEndSelector:nil + contextInfo:nil]; + return; } // Validate input. if(self.deviceToken == nil || self.payload == nil) { return; } + else if(![self.deviceToken rangeOfString:@" "].length) + { + //put in spaces in device token + NSMutableString* tempString = [NSMutableString stringWithString:self.deviceToken]; + int offset = 0; + for(int i = 0; i < tempString.length; i++) + { + if(i%8 == 0 && i != 0 && i+offset < tempString.length-1) + { + //NSLog(@"i = %d + offset[%d] = %d", i, offset, i+offset); + [tempString insertString:@" " atIndex:i+offset]; + offset++; + } + } + NSLog(@" device token string after adding spaces = '%@'", tempString); + self.deviceToken = tempString; + } // Convert string into device token data. NSMutableData *deviceToken = [NSMutableData data]; @@ -164,10 +202,11 @@ - (IBAction)push:(id)sender { NSScanner *scanner = [NSScanner scannerWithString:self.deviceToken]; while(![scanner isAtEnd]) { [scanner scanHexInt:&value]; + //NSLog(@"scanned value %x", value); value = htonl(value); [deviceToken appendBytes:&value length:sizeof(value)]; } - + NSLog(@"device token data %@, length = %ld", deviceToken, deviceToken.length); // Create C input variables. char *deviceTokenBinary = (char *)[deviceToken bytes]; char *payloadBinary = (char *)[self.payload UTF8String]; @@ -192,10 +231,12 @@ - (IBAction)push:(id)sender { memcpy(pointer, payloadBinary, payloadLength); pointer += payloadLength; + NSLog(@"pointer - message- %ld", (pointer -message)); // Send message over SSL. size_t processed = 0; OSStatus result = SSLWrite(context, &message, (pointer - message), &processed);// NSLog(@"SSLWrite(): %d %d", result, processed); - + NSLog(@"SSLWrite(): [%s]- %@", (char *)GetMacOSStatusErrorString(result),[NSString stringWithUTF8String:(char *) GetMacOSStatusCommentString(result)] ); + NSLog(@"SSLWrite(): %d %ld", result, processed); } @end diff --git a/Classes/ioSock.c b/Classes/ioSock.c index 53f52ac..3d4573e 100755 --- a/Classes/ioSock.c +++ b/Classes/ioSock.c @@ -288,7 +288,7 @@ OSStatus AcceptClientConnection( { struct sockaddr_in addr; int sock; - int len; + socklen_t len; len = sizeof(struct sockaddr_in); sock = accept((int)listenSock, (struct sockaddr *) &addr, &len); @@ -325,12 +325,12 @@ OSStatus SocketRead( * RETURNED */ size_t *dataLength) /* IN/OUT */ { - UInt32 bytesToGo = *dataLength; - UInt32 initLen = bytesToGo; + size_t bytesToGo = *dataLength; + size_t initLen = bytesToGo; UInt8 *currData = (UInt8 *)data; int sock = (int)connection; OSStatus rtn = noErr; - UInt32 bytesRead; + size_t bytesRead; int rrtn; *dataLength = 0; @@ -403,17 +403,17 @@ OSStatus SocketWrite( const void *data, size_t *dataLength) /* IN/OUT */ { - UInt32 bytesSent = 0; + size_t bytesSent = 0; int sock = (int)connection; int length; - UInt32 dataLen = *dataLength; + size_t dataLen = *dataLength; const UInt8 *dataPtr = (UInt8 *)data; OSStatus ortn; if(oneAtATime && (*dataLength > 1)) { - UInt32 i; - UInt32 outLen; - UInt32 thisMove; + size_t i; + size_t outLen; + size_t thisMove; outLen = 0; for(i=0; i - + 1050 - 9G55 - 677 - 949.43 - 353.00 - + 11D50 + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + YES - + NSTextField + NSView + NSWindowTemplate + NSMenu + NSMenuItem + NSTextFieldCell + NSButtonCell + NSButton + NSCustomObject YES - com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -79,7 +85,7 @@ - UHJlZmVyZW5jZXPigKY + Preferences… , 1048576 2147483647 @@ -200,7 +206,7 @@ - T3BlbuKApg + Open… o 1048576 2147483647 @@ -264,7 +270,7 @@ - U2F2ZSBBc+KApg + Save As… S 1179648 2147483647 @@ -302,7 +308,7 @@ - UHJpbnTigKY + Print… p 1048576 2147483647 @@ -425,7 +431,7 @@ YES - RmluZOKApg + Find… f 1048576 2147483647 @@ -490,7 +496,7 @@ YES - U2hvdyBTcGVsbGluZ+KApg + Show Spelling… : 1048576 2147483647 @@ -634,7 +640,7 @@ - Q3VzdG9taXplIFRvb2xiYXLigKY + Customize Toolbar… 1048576 2147483647 @@ -735,6 +741,7 @@ PushMeBaby NSWindow + {1000, 89} {477, 89} @@ -747,6 +754,7 @@ 266 {{115, 50}, {342, 22}} + YES -1804468671 @@ -754,7 +762,7 @@ LucidaGrande - 1.300000e+01 + 13 1044 @@ -784,6 +792,7 @@ 266 {{115, 18}, {250, 22}} + YES -1804468671 @@ -801,6 +810,7 @@ 265 {{367, 12}, {96, 32}} + YES 67239424 @@ -821,6 +831,7 @@ 268 {{17, 52}, {93, 17}} + YES 68288064 @@ -834,7 +845,7 @@ controlColor 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NjY3AA @@ -850,6 +861,7 @@ 268 {{53, 20}, {57, 17}} + YES 68288064 @@ -864,10 +876,12 @@ {477, 89} + {{0, 0}, {1440, 878}} {477, 111} {1000, 111} + YES ApplicationDelegate @@ -876,6 +890,30 @@ YES + + + terminate: + + + + 449 + + + + delegate + + + + 451 + + + + orderFrontStandardAboutPanel: + + + + 142 + performMiniaturize: @@ -916,14 +954,6 @@ 127 - - - orderFrontStandardAboutPanel: - - - - 142 - performClose: @@ -1174,27 +1204,19 @@ - terminate: - - + push: + + - 449 + 462 - delegate - - - - 451 - - - - push: + window - + - 462 + 467 @@ -1209,7 +1231,7 @@ deviceToken NSContinuouslyUpdatesValue - + 2 @@ -1229,7 +1251,7 @@ payload NSContinuouslyUpdatesValue - + 2 @@ -1252,7 +1274,7 @@ -2 - RmlsZSdzIE93bmVyA + File's Owner -1 @@ -1908,152 +1930,74 @@ YES - + YES -1.IBPluginDependency -2.IBPluginDependency -3.IBPluginDependency 103.IBPluginDependency - 103.ImportedFromIB2 - 106.IBEditorWindowLastContentRect 106.IBPluginDependency - 106.ImportedFromIB2 - 106.editorWindowContentRectSynchronizationRect 111.IBPluginDependency - 111.ImportedFromIB2 112.IBPluginDependency - 112.ImportedFromIB2 124.IBPluginDependency - 124.ImportedFromIB2 125.IBPluginDependency - 125.ImportedFromIB2 - 125.editorWindowContentRectSynchronizationRect 126.IBPluginDependency - 126.ImportedFromIB2 129.IBPluginDependency - 129.ImportedFromIB2 130.IBPluginDependency - 130.ImportedFromIB2 - 130.editorWindowContentRectSynchronizationRect 131.IBPluginDependency - 131.ImportedFromIB2 134.IBPluginDependency - 134.ImportedFromIB2 136.IBPluginDependency - 136.ImportedFromIB2 143.IBPluginDependency - 143.ImportedFromIB2 144.IBPluginDependency - 144.ImportedFromIB2 145.IBPluginDependency - 145.ImportedFromIB2 149.IBPluginDependency - 149.ImportedFromIB2 150.IBPluginDependency - 150.ImportedFromIB2 19.IBPluginDependency - 19.ImportedFromIB2 195.IBPluginDependency - 195.ImportedFromIB2 196.IBPluginDependency - 196.ImportedFromIB2 197.IBPluginDependency - 197.ImportedFromIB2 198.IBPluginDependency - 198.ImportedFromIB2 199.IBPluginDependency - 199.ImportedFromIB2 200.IBPluginDependency - 200.ImportedFromIB2 - 200.editorWindowContentRectSynchronizationRect 201.IBPluginDependency - 201.ImportedFromIB2 202.IBPluginDependency - 202.ImportedFromIB2 203.IBPluginDependency - 203.ImportedFromIB2 204.IBPluginDependency - 204.ImportedFromIB2 - 205.IBEditorWindowLastContentRect 205.IBPluginDependency - 205.ImportedFromIB2 - 205.editorWindowContentRectSynchronizationRect 206.IBPluginDependency - 206.ImportedFromIB2 207.IBPluginDependency - 207.ImportedFromIB2 208.IBPluginDependency - 208.ImportedFromIB2 209.IBPluginDependency - 209.ImportedFromIB2 210.IBPluginDependency - 210.ImportedFromIB2 211.IBPluginDependency - 211.ImportedFromIB2 212.IBPluginDependency - 212.ImportedFromIB2 - 212.editorWindowContentRectSynchronizationRect 213.IBPluginDependency - 213.ImportedFromIB2 214.IBPluginDependency - 214.ImportedFromIB2 215.IBPluginDependency - 215.ImportedFromIB2 216.IBPluginDependency - 216.ImportedFromIB2 217.IBPluginDependency - 217.ImportedFromIB2 218.IBPluginDependency - 218.ImportedFromIB2 219.IBPluginDependency - 219.ImportedFromIB2 220.IBPluginDependency - 220.ImportedFromIB2 - 220.editorWindowContentRectSynchronizationRect 221.IBPluginDependency - 221.ImportedFromIB2 23.IBPluginDependency - 23.ImportedFromIB2 236.IBPluginDependency - 236.ImportedFromIB2 239.IBPluginDependency - 239.ImportedFromIB2 - 24.IBEditorWindowLastContentRect 24.IBPluginDependency - 24.ImportedFromIB2 - 24.editorWindowContentRectSynchronizationRect - 29.IBEditorWindowLastContentRect 29.IBPluginDependency - 29.ImportedFromIB2 - 29.WindowOrigin - 29.editorWindowContentRectSynchronizationRect 295.IBPluginDependency - 296.IBEditorWindowLastContentRect 296.IBPluginDependency - 296.editorWindowContentRectSynchronizationRect 297.IBPluginDependency 298.IBPluginDependency 346.IBPluginDependency - 346.ImportedFromIB2 348.IBPluginDependency - 348.ImportedFromIB2 349.IBPluginDependency - 349.ImportedFromIB2 - 349.editorWindowContentRectSynchronizationRect 350.IBPluginDependency - 350.ImportedFromIB2 351.IBPluginDependency - 351.ImportedFromIB2 354.IBPluginDependency - 354.ImportedFromIB2 - 371.IBEditorWindowLastContentRect + 371.IBPluginDependency 371.IBWindowTemplateEditedContentRect 371.NSWindowTemplate.visibleAtLaunch - 371.editorWindowContentRectSynchronizationRect - 371.windowTemplate.hasMaxSize - 371.windowTemplate.hasMinSize - 371.windowTemplate.maxSize - 371.windowTemplate.minSize 372.IBPluginDependency 450.IBPluginDependency 452.IBPluginDependency @@ -2067,188 +2011,90 @@ 460.IBPluginDependency 461.IBPluginDependency 5.IBPluginDependency - 5.ImportedFromIB2 56.IBPluginDependency - 56.ImportedFromIB2 - 57.IBEditorWindowLastContentRect 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect 58.IBPluginDependency - 58.ImportedFromIB2 72.IBPluginDependency - 72.ImportedFromIB2 73.IBPluginDependency - 73.ImportedFromIB2 74.IBPluginDependency - 74.ImportedFromIB2 75.IBPluginDependency - 75.ImportedFromIB2 77.IBPluginDependency - 77.ImportedFromIB2 78.IBPluginDependency - 78.ImportedFromIB2 79.IBPluginDependency - 79.ImportedFromIB2 80.IBPluginDependency - 80.ImportedFromIB2 - 81.IBEditorWindowLastContentRect 81.IBPluginDependency - 81.ImportedFromIB2 - 81.editorWindowContentRectSynchronizationRect 82.IBPluginDependency - 82.ImportedFromIB2 83.IBPluginDependency - 83.ImportedFromIB2 92.IBPluginDependency - 92.ImportedFromIB2 - + YES com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilderKit - com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin - - {{558, 262}, {194, 23}} com.apple.InterfaceBuilder.CocoaPlugin - - {{596, 852}, {216, 23}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{522, 812}, {146, 23}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{436, 809}, {64, 6}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {275, 83}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{393, 42}, {243, 243}} com.apple.InterfaceBuilder.CocoaPlugin - - {{187, 434}, {243, 243}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {167, 43}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {241, 103}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{487, 212}, {197, 73}} com.apple.InterfaceBuilder.CocoaPlugin - - {{525, 802}, {197, 73}} - {{207, 285}, {412, 20}} com.apple.InterfaceBuilder.CocoaPlugin - - {74, 862} - {{6, 978}, {478, 20}} com.apple.InterfaceBuilder.CocoaPlugin - {{437, 242}, {234, 43}} com.apple.InterfaceBuilder.CocoaPlugin - {{475, 832}, {234, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {215, 63}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{110, 335}, {477, 89}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin {{110, 335}, {477, 89}} - - {{33, 99}, {480, 360}} - - - {1000, 89} - {477, 89} + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2262,64 +2108,36 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{219, 102}, {223, 183}} com.apple.InterfaceBuilder.CocoaPlugin - - {{23, 794}, {245, 183}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{351, 82}, {199, 203}} com.apple.InterfaceBuilder.CocoaPlugin - - {{145, 474}, {199, 203}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - - YES - + + YES - - YES - - - YES - + + - 466 + 467 @@ -2331,15 +2149,59 @@ push: id + + push: + + push: + id + + + + window + NSWindow + + + window + + window + NSWindow + + IBProjectSource - ApplicationDelegate.h + ./Classes/ApplicationDelegate.h 0 - ../PushMeBaby.xcodeproj + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {11, 11} + {10, 3} + + diff --git a/PushMeBaby.xcodeproj/TemplateIcon.icns b/PushMeBaby.xcodeproj/TemplateIcon.icns deleted file mode 100644 index 62cb701..0000000 Binary files a/PushMeBaby.xcodeproj/TemplateIcon.icns and /dev/null differ diff --git a/PushMeBaby.xcodeproj/project.pbxproj b/PushMeBaby.xcodeproj/project.pbxproj index d7d171d..e2047fa 100644 --- a/PushMeBaby.xcodeproj/project.pbxproj +++ b/PushMeBaby.xcodeproj/project.pbxproj @@ -152,7 +152,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 0430; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "PushMeBaby" */; compatibilityVersion = "Xcode 3.2"; @@ -248,7 +248,7 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -261,7 +261,7 @@ C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; diff --git a/README b/README index 9a370a8..192c546 100644 --- a/README +++ b/README @@ -1 +1,6 @@ +Thanks to stefanhafeneger for publishing this code. + +With that being said. I did have a bit of trouble getting it started, +so I thought I'd work on a fork and put my 2 cents in to help those who may also be struggling. + You can use this app during iOS Push Notification development to push notifications on your device from your Mac. \ No newline at end of file