Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c91a8e08c4 | |||
| 6a8a48dfd9 | |||
| 5b46a5c6de | |||
| a854649e09 | |||
| 36de866909 | |||
| 9371147fd1 | |||
| 60288f8454 | |||
| 5b4a2e5e94 | |||
| 2d1b534f4d | |||
| 26d42ca585 | |||
| 900b107dc0 | |||
| 65738cad39 | |||
| ff5768048c | |||
| 9b6770afe1 | |||
| b4c0e1e72b | |||
| 5bab81d099 | |||
| 3622125a62 | |||
| 4850bfbb38 | |||
| 9dd461a972 | |||
| 0469f7ae05 | |||
| fc18d96ff4 | |||
| bd5d2e80f5 | |||
| bdbeb1be5f | |||
| d0868e486c | |||
| 766aee9700 | |||
| 8c4e208eda | |||
| 9325a4ac64 | |||
| bee2611e60 | |||
| e638a42547 | |||
| a8c6176b04 | |||
| b5d1acba22 |
+23
@@ -3,6 +3,29 @@ Change Log
|
||||
|
||||
### master (unreleased)
|
||||
|
||||
* add certificate type to description
|
||||
|
||||
### 0.7.5 (2017-04-25)
|
||||
|
||||
* Add support for new certificate type (passes)
|
||||
* Fix rich text (#49)
|
||||
* Fix app name (#47)
|
||||
* Update docs pushing to macOS
|
||||
|
||||
### 0.7.4 (2017-01-16)
|
||||
|
||||
* Add support for handshake error (internal error)
|
||||
* Add detection of p12 without password
|
||||
|
||||
### 0.7.3 (2016-09-19)
|
||||
|
||||
* Add support for Watch Kit certificates (DanielFontes)
|
||||
* Add support for handshake error (certificate unknown)
|
||||
|
||||
### 0.7.2 (2016-07-19)
|
||||
|
||||
* Added support for Carthage, thanks to @zats
|
||||
|
||||
### 0.7.1 (2016-04-27)
|
||||
|
||||
* Remove Mac enum from Touch target
|
||||
|
||||
@@ -142,6 +142,8 @@ OSStatus NWSSLWrite(SSLConnectionRef connection, const void *data, size_t *lengt
|
||||
case errSSLServerAuthCompleted: return [NWErrorUtil noWithErrorCode:kNWErrorSSLHandshakeServerAuthCompleted error:error];
|
||||
case errSSLPeerCertExpired: return [NWErrorUtil noWithErrorCode:kNWErrorSSLHandshakePeerCertExpired error:error];
|
||||
case errSSLPeerCertRevoked: return [NWErrorUtil noWithErrorCode:kNWErrorSSLHandshakePeerCertRevoked error:error];
|
||||
case errSSLPeerCertUnknown: return [NWErrorUtil noWithErrorCode:kNWErrorSSLHandshakePeerCertUnknown error:error];
|
||||
case errSSLInternal: return [NWErrorUtil noWithErrorCode:kNWErrorSSLHandshakeInternalError error:error];
|
||||
#if !TARGET_OS_IPHONE
|
||||
case errSecInDarkWake: return [NWErrorUtil noWithErrorCode:kNWErrorSSLInDarkWake error:error];
|
||||
#endif
|
||||
|
||||
@@ -43,6 +43,9 @@
|
||||
|
||||
/** @name Inspection */
|
||||
|
||||
/** Extracts the type and summary string. */
|
||||
+ (NWCertType)typeWithCertificate:(NWCertificateRef)certificate summary:(NSString **)summary;
|
||||
|
||||
/** Extracts the summary string. */
|
||||
+ (NSString *)summaryWithCertificate:(NWCertificateRef)certificate;
|
||||
|
||||
|
||||
+10
-24
@@ -7,29 +7,6 @@
|
||||
|
||||
#import "NWSecTools.h"
|
||||
|
||||
/** Types of push certificates. */
|
||||
typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
/** None. */
|
||||
kNWCertTypeNone = 0,
|
||||
/** iOS Development. */
|
||||
kNWCertTypeIOSDevelopment = 1,
|
||||
/** iOS Production. */
|
||||
kNWCertTypeIOSProduction = 2,
|
||||
/** OS X Development. */
|
||||
kNWCertTypeMacDevelopment = 3,
|
||||
/** OS X Production. */
|
||||
kNWCertTypeMacProduction = 4,
|
||||
/** Simplified Certificate Handling. */
|
||||
kNWCertTypeSimplified = 5,
|
||||
/** Web Push Production. */
|
||||
kNWCertTypeWebProduction = 6,
|
||||
/** VoIP Services. */
|
||||
kNWCertTypeVoIPServices = 7,
|
||||
/** Unknown. */
|
||||
kNWCertTypeUnknown = 8,
|
||||
};
|
||||
|
||||
|
||||
@implementation NWSecTools
|
||||
|
||||
#pragma mark - Initialization
|
||||
@@ -136,6 +113,8 @@ typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
case kNWCertTypeSimplified:
|
||||
case kNWCertTypeWebProduction:
|
||||
case kNWCertTypeVoIPServices:
|
||||
case kNWCertTypeWatchKitServices:
|
||||
case kNWCertTypePasses:
|
||||
return NWEnvironmentOptionAny;
|
||||
case kNWCertTypeNone:
|
||||
case kNWCertTypeUnknown:
|
||||
@@ -154,6 +133,8 @@ typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
case kNWCertTypeSimplified:
|
||||
case kNWCertTypeWebProduction:
|
||||
case kNWCertTypeVoIPServices:
|
||||
case kNWCertTypeWatchKitServices:
|
||||
case kNWCertTypePasses:
|
||||
return YES;
|
||||
case kNWCertTypeNone:
|
||||
case kNWCertTypeUnknown:
|
||||
@@ -172,6 +153,8 @@ typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
case kNWCertTypeSimplified: return @"Apple Push Services: ";
|
||||
case kNWCertTypeWebProduction: return @"Website Push ID: ";
|
||||
case kNWCertTypeVoIPServices: return @"VoIP Services: ";
|
||||
case kNWCertTypeWatchKitServices: return @"WatchKit Services: ";
|
||||
case kNWCertTypePasses: return @"Pass Type ID: ";
|
||||
case kNWCertTypeNone:
|
||||
case kNWCertTypeUnknown:
|
||||
break;
|
||||
@@ -244,7 +227,7 @@ typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
|
||||
+ (NSArray *)allIdentitiesWithPKCS12Data:(NSData *)data password:(NSString *)password error:(NSError *__autoreleasing *)error
|
||||
{
|
||||
NSDictionary *options = @{(__bridge id)kSecImportExportPassphrase: password};
|
||||
NSDictionary *options = password ? @{(__bridge id)kSecImportExportPassphrase: password} : @{};
|
||||
CFArrayRef items = NULL;
|
||||
OSStatus status = data ? SecPKCS12Import((__bridge CFDataRef)data, (__bridge CFDictionaryRef)options, &items) : errSecParam;
|
||||
NSArray *dicts = CFBridgingRelease(items);
|
||||
@@ -254,6 +237,7 @@ typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
case errSecAuthFailed: return [NWErrorUtil nilWithErrorCode:kNWErrorPKCS12AuthFailed error:error];
|
||||
#if !TARGET_OS_IPHONE
|
||||
case errSecPkcs12VerifyFailure: return [NWErrorUtil nilWithErrorCode:kNWErrorPKCS12Password error:error];
|
||||
case errSecPassphraseRequired: return [NWErrorUtil nilWithErrorCode:kNWErrorPKCS12PasswordRequired error:error];
|
||||
#endif
|
||||
}
|
||||
return [NWErrorUtil nilWithErrorCode:kNWErrorPKCS12Import reason:status error:error];
|
||||
@@ -339,6 +323,8 @@ typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
case kNWCertTypeSimplified:
|
||||
case kNWCertTypeWebProduction:
|
||||
case kNWCertTypeVoIPServices:
|
||||
case kNWCertTypeWatchKitServices:
|
||||
case kNWCertTypePasses:
|
||||
case kNWCertTypeNone:
|
||||
case kNWCertTypeUnknown:
|
||||
break;
|
||||
|
||||
@@ -17,6 +17,32 @@ typedef NS_ENUM(NSInteger, NWNotificationType) {
|
||||
kNWNotificationType2 = 2,
|
||||
};
|
||||
|
||||
/** Types of push certificates. */
|
||||
typedef NS_ENUM(NSInteger, NWCertType) {
|
||||
/** None. */
|
||||
kNWCertTypeNone = 0,
|
||||
/** iOS Development. */
|
||||
kNWCertTypeIOSDevelopment = 1,
|
||||
/** iOS Production. */
|
||||
kNWCertTypeIOSProduction = 2,
|
||||
/** OS X Development. */
|
||||
kNWCertTypeMacDevelopment = 3,
|
||||
/** OS X Production. */
|
||||
kNWCertTypeMacProduction = 4,
|
||||
/** Simplified Certificate Handling. */
|
||||
kNWCertTypeSimplified = 5,
|
||||
/** Web Push Production. */
|
||||
kNWCertTypeWebProduction = 6,
|
||||
/** VoIP Services. */
|
||||
kNWCertTypeVoIPServices = 7,
|
||||
/** WatchKit Services. */
|
||||
kNWCertTypeWatchKitServices = 8,
|
||||
/** Pass Type ID. */
|
||||
kNWCertTypePasses = 9,
|
||||
/** Unknown. */
|
||||
kNWCertTypeUnknown = 10,
|
||||
};
|
||||
|
||||
/** An ARC-friendly replacement of SecIdentityRef. */
|
||||
typedef id NWIdentityRef;
|
||||
|
||||
@@ -109,6 +135,10 @@ typedef NS_ENUM(NSInteger, NWError) {
|
||||
kNWErrorSSLHandshakePeerCertExpired = -229,
|
||||
/** SSL handshake certificate revoked. */
|
||||
kNWErrorSSLHandshakePeerCertRevoked = -230,
|
||||
/** SSL handshake certificate unknown. */
|
||||
kNWErrorSSLHandshakePeerCertUnknown = -233,
|
||||
/** SSL handshake internal error. */
|
||||
kNWErrorSSLHandshakeInternalError = -234,
|
||||
/** SSL handshake in dark wake. */
|
||||
kNWErrorSSLInDarkWake = -231,
|
||||
/** SSL handshake connection closed via error. */
|
||||
@@ -149,6 +179,8 @@ typedef NS_ENUM(NSInteger, NWError) {
|
||||
kNWErrorPKCS12AuthFailed = -312,
|
||||
/** PKCS12 data wrong password. */
|
||||
kNWErrorPKCS12Password = -313,
|
||||
/** PKCS12 data password required. */
|
||||
kNWErrorPKCS12PasswordRequired = -314,
|
||||
/** PKCS12 data contains no identities. */
|
||||
kNWErrorPKCS12NoItems = -307,
|
||||
/** PKCS12 data contains multiple identities. */
|
||||
@@ -187,6 +219,7 @@ extern NSString * const NWErrorReasonCodeKey;
|
||||
/** Returns string for given environment, for logging purposes */
|
||||
NSString * descriptionForEnvironentOptions(NWEnvironmentOptions environmentOptions);
|
||||
NSString * descriptionForEnvironent(NWEnvironment environment);
|
||||
NSString * descriptionForCertType(NWCertType type);
|
||||
|
||||
@interface NWErrorUtil : NSObject
|
||||
|
||||
|
||||
@@ -31,6 +31,24 @@ NSString * descriptionForEnvironent(NWEnvironment environment)
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSString * descriptionForCertType(NWCertType type)
|
||||
{
|
||||
switch (type) {
|
||||
case kNWCertTypeNone: return @"none";
|
||||
case kNWCertTypeIOSDevelopment:
|
||||
case kNWCertTypeIOSProduction: return @"iOS";
|
||||
case kNWCertTypeMacDevelopment:
|
||||
case kNWCertTypeMacProduction: return @"macOS";
|
||||
case kNWCertTypeSimplified: return @"All";
|
||||
case kNWCertTypeWebProduction: return @"Website";
|
||||
case kNWCertTypeVoIPServices: return @"VoIP";
|
||||
case kNWCertTypeWatchKitServices: return @"WatchKit";
|
||||
case kNWCertTypePasses: return @"Pass";
|
||||
case kNWCertTypeUnknown: return @"unknown";
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
@implementation NWErrorUtil
|
||||
|
||||
+ (NSString *)stringWithCode:(NWError)code
|
||||
@@ -79,6 +97,8 @@ NSString * descriptionForEnvironent(NWEnvironment environment)
|
||||
case kNWErrorSSLHandshakeServerAuthCompleted : return @"SSL handshake auth interrupted";
|
||||
case kNWErrorSSLHandshakePeerCertExpired : return @"SSL handshake certificate expired";
|
||||
case kNWErrorSSLHandshakePeerCertRevoked : return @"SSL handshake certificate revoked";
|
||||
case kNWErrorSSLHandshakePeerCertUnknown : return @"SSL handshake certificate unknown";
|
||||
case kNWErrorSSLHandshakeInternalError : return @"SSL handshake internal error";
|
||||
case kNWErrorSSLInDarkWake : return @"SSL handshake in dark wake";
|
||||
case kNWErrorSSLHandshakeClosedAbort : return @"SSL handshake connection closed via error";
|
||||
case kNWErrorSSLHandshakeTimeout : return @"SSL handshake timeout";
|
||||
@@ -101,6 +121,7 @@ NSString * descriptionForEnvironent(NWEnvironment environment)
|
||||
case kNWErrorPKCS12Decode : return @"PKCS12 data cannot be read or is malformed";
|
||||
case kNWErrorPKCS12AuthFailed : return @"PKCS12 data password incorrect";
|
||||
case kNWErrorPKCS12Password : return @"PKCS12 data wrong password";
|
||||
case kNWErrorPKCS12PasswordRequired : return @"PKCS12 data password required";
|
||||
case kNWErrorPKCS12NoItems : return @"PKCS12 data contains no identities";
|
||||
case kNWErrorPKCS12MultipleItems : return @"PKCS12 data contains multiple identities";
|
||||
|
||||
|
||||
+19
-19
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="14C109" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6254"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner">
|
||||
@@ -63,7 +64,7 @@
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
||||
<menuItem title="Quit NewApplication" keyEquivalent="q" id="4sb-4s-VLi">
|
||||
<menuItem title="Pusher" keyEquivalent="q" id="4sb-4s-VLi">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
|
||||
</connections>
|
||||
@@ -158,7 +159,7 @@
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="600" height="300"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/>
|
||||
<value key="minSize" type="size" width="500" height="200"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="300"/>
|
||||
@@ -232,7 +233,7 @@
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EnU-aP-5PD">
|
||||
<rect key="frame" x="461" y="177" width="121" height="24"/>
|
||||
<rect key="frame" x="456" y="177" width="126" height="24"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="Olm-G5-Man">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
@@ -268,11 +269,11 @@
|
||||
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q6j-iu-9I9">
|
||||
<rect key="frame" x="20" y="45" width="560" height="130"/>
|
||||
<clipView key="contentView" id="e4e-ov-ymY">
|
||||
<rect key="frame" x="1" y="1" width="558" height="150"/>
|
||||
<rect key="frame" x="1" y="1" width="558" height="128"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" dashSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="ad5-lb-L5u">
|
||||
<rect key="frame" x="0.0" y="0.0" width="558" height="150"/>
|
||||
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" findStyle="panel" allowsCharacterPickerTouchBarItem="NO" allowsUndo="YES" allowsNonContiguousLayout="YES" textCompletion="NO" id="ad5-lb-L5u">
|
||||
<rect key="frame" x="0.0" y="0.0" width="558" height="128"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<size key="minSize" width="558" height="128"/>
|
||||
@@ -286,8 +287,9 @@
|
||||
</fragment>
|
||||
</attributedString>
|
||||
<color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<size key="minSize" width="558" height="128"/>
|
||||
<size key="maxSize" width="573" height="10000000"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="kaW-YJ-UA5" id="bUh-Oq-w5B"/>
|
||||
</connections>
|
||||
@@ -300,7 +302,7 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="sbz-Qw-fOe">
|
||||
<rect key="frame" x="543" y="1" width="16" height="150"/>
|
||||
<rect key="frame" x="543" y="1" width="16" height="128"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
@@ -318,18 +320,16 @@
|
||||
<scrollView hidden="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z4n-XE-cfI">
|
||||
<rect key="frame" x="20" y="45" width="560" height="130"/>
|
||||
<clipView key="contentView" id="uaF-sl-etn">
|
||||
<rect key="frame" x="1" y="1" width="558" height="150"/>
|
||||
<rect key="frame" x="1" y="1" width="558" height="128"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" dashSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="pi6-RR-ayT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="558" height="150"/>
|
||||
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" dashSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="pi6-RR-ayT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="558" height="128"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="558" height="128"/>
|
||||
<size key="maxSize" width="573" height="10000000"/>
|
||||
<color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<size key="minSize" width="558" height="128"/>
|
||||
<size key="maxSize" width="573" height="10000000"/>
|
||||
</textView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
@@ -339,12 +339,12 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="pny-Of-exT">
|
||||
<rect key="frame" x="543" y="1" width="16" height="150"/>
|
||||
<rect key="frame" x="543" y="1" width="16" height="128"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="hU6-Ym-KR3">
|
||||
<rect key="frame" x="18" y="235" width="228" height="18"/>
|
||||
<rect key="frame" x="18" y="235" width="223" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Should use sandbox environment" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="ros-Zj-bni">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
|
||||
+9
-9
@@ -6,12 +6,7 @@
|
||||
//
|
||||
|
||||
#import "NWAppDelegate.h"
|
||||
#import "NWHub.h"
|
||||
#import "NWNotification.h"
|
||||
#import "NWSecTools.h"
|
||||
#import "NWLCore.h"
|
||||
#import "NWPushFeedback.h"
|
||||
|
||||
#import <PusherKit/PusherKit.h>
|
||||
|
||||
@interface NWAppDelegate () <NWHubDelegate> @end
|
||||
|
||||
@@ -175,11 +170,13 @@
|
||||
NWCertificateRef certificate = pair[0];
|
||||
BOOL hasIdentity = (pair[1] != NSNull.null);
|
||||
NWEnvironmentOptions environmentOptions = [NWSecTools environmentOptionsForCertificate:certificate];
|
||||
NSString *summary = [NWSecTools summaryWithCertificate:certificate];
|
||||
NSString *summary = nil;
|
||||
NWCertType certType = [NWSecTools typeWithCertificate:certificate summary:&summary];
|
||||
NSString *type = descriptionForCertType(certType);
|
||||
NSDate *date = [NWSecTools expirationWithCertificate:certificate];
|
||||
NSString *expire = [NSString stringWithFormat:@" [%@]", date ? [formatter stringFromDate:date] : @"expired"];
|
||||
// summary = @"com.example.app";
|
||||
[_certificatePopup addItemWithTitle:[NSString stringWithFormat:@"%@%@ (%@)%@%@", hasIdentity ? @"imported: " : @"", summary, descriptionForEnvironentOptions(environmentOptions), expire, suffix]];
|
||||
[_certificatePopup addItemWithTitle:[NSString stringWithFormat:@"%@%@ (%@ %@)%@%@", hasIdentity ? @"imported: " : @"", summary, type, descriptionForEnvironentOptions(environmentOptions), expire, suffix]];
|
||||
[suffix appendString:@" "];
|
||||
}
|
||||
[_certificatePopup addItemWithTitle:@"Import PKCS #12 file (.p12)..."];
|
||||
@@ -211,6 +208,9 @@
|
||||
NSData *data = [NSData dataWithContentsOfURL:url];
|
||||
NSError *error = nil;
|
||||
NSArray *ids = [NWSecTools identitiesWithPKCS12Data:data password:password error:&error];
|
||||
if (!ids && password.length == 0 && error.code == kNWErrorPKCS12Password) {
|
||||
ids = [NWSecTools identitiesWithPKCS12Data:data password:nil error:&error];
|
||||
}
|
||||
if (!ids) {
|
||||
NWLogWarn(@"Unable to read p12 file: %@", error.localizedDescription);
|
||||
return;
|
||||
@@ -410,7 +410,7 @@
|
||||
if (read) {
|
||||
if (!failed) NWLogInfo(@"Payload has been pushed");
|
||||
} else {
|
||||
NWLogWarn(@"Unable to read failed: %@", error.localizedDescription);
|
||||
NWLogWarn(@"Unable to read: %@", error.localizedDescription);
|
||||
}
|
||||
[_hub trimIdentifiers];
|
||||
});
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.7.1</string>
|
||||
<string>0.7.5</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>15</string>
|
||||
<string>19</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.developer-tools</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'NWPusher'
|
||||
s.version = '0.7.1'
|
||||
s.version = '0.7.5'
|
||||
s.summary = 'OS X and iOS application and framework to play with the Apple Push Notification service (APNs).'
|
||||
s.homepage = 'https://github.com/noodlewerk/NWPusher'
|
||||
s.license = { :type => 'BSD', :file => 'LICENSE.txt' }
|
||||
|
||||
@@ -7,9 +7,45 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
5C7803881D3C4668002107FB /* PusherKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7803861D3C4668002107FB /* PusherKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78038B1D3C4668002107FB /* PusherKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C7803841D3C4668002107FB /* PusherKit.framework */; };
|
||||
5C78038C1D3C4668002107FB /* PusherKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5C7803841D3C4668002107FB /* PusherKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
5C7803911D3C4683002107FB /* NWHub.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A1189682D30043DA98 /* NWHub.m */; };
|
||||
5C7803921D3C4683002107FB /* NWNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A3189682D30043DA98 /* NWNotification.m */; };
|
||||
5C7803931D3C4683002107FB /* NWPusher.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A5189682D30043DA98 /* NWPusher.m */; };
|
||||
5C7803941D3C4683002107FB /* NWPushFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A7189682D30043DA98 /* NWPushFeedback.m */; };
|
||||
5C7803951D3C4683002107FB /* NWSecTools.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A9189682D30043DA98 /* NWSecTools.m */; };
|
||||
5C7803961D3C4683002107FB /* NWSSLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232AB189682D30043DA98 /* NWSSLConnection.m */; };
|
||||
5C7803971D3C4683002107FB /* NWType.m in Sources */ = {isa = PBXBuildFile; fileRef = B34BF1B318DDF401004BA9F7 /* NWType.m */; };
|
||||
5C7803981D3C4698002107FB /* NWLCore.c in Sources */ = {isa = PBXBuildFile; fileRef = B3376A61172BB71200242EBB /* NWLCore.c */; };
|
||||
5C7803991D3C4749002107FB /* NWHub.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A0189682D30043DA98 /* NWHub.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78039A1D3C4749002107FB /* NWNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A2189682D30043DA98 /* NWNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78039B1D3C4749002107FB /* NWPusher.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A4189682D30043DA98 /* NWPusher.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78039C1D3C4749002107FB /* NWPushFeedback.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A6189682D30043DA98 /* NWPushFeedback.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78039D1D3C4749002107FB /* NWSecTools.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A8189682D30043DA98 /* NWSecTools.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78039E1D3C4749002107FB /* NWSSLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232AA189682D30043DA98 /* NWSSLConnection.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C78039F1D3C4749002107FB /* NWType.h in Headers */ = {isa = PBXBuildFile; fileRef = B34BF1B218DDF401004BA9F7 /* NWType.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803A01D3C4749002107FB /* NWLCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3376A62172BB71200242EBB /* NWLCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803AA1D3C4826002107FB /* PusherKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7803A81D3C4826002107FB /* PusherKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803AD1D3C4826002107FB /* PusherKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C7803A61D3C4826002107FB /* PusherKit.framework */; };
|
||||
5C7803AF1D3C4826002107FB /* PusherKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5C7803A61D3C4826002107FB /* PusherKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
5C7803B31D3C486F002107FB /* NWLCore.c in Sources */ = {isa = PBXBuildFile; fileRef = B3376A61172BB71200242EBB /* NWLCore.c */; };
|
||||
5C7803B41D3C487B002107FB /* NWHub.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A1189682D30043DA98 /* NWHub.m */; };
|
||||
5C7803B51D3C487B002107FB /* NWNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A3189682D30043DA98 /* NWNotification.m */; };
|
||||
5C7803B61D3C487B002107FB /* NWPusher.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A5189682D30043DA98 /* NWPusher.m */; };
|
||||
5C7803B71D3C487B002107FB /* NWPushFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A7189682D30043DA98 /* NWPushFeedback.m */; };
|
||||
5C7803B81D3C487B002107FB /* NWSecTools.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A9189682D30043DA98 /* NWSecTools.m */; };
|
||||
5C7803B91D3C487B002107FB /* NWSSLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232AB189682D30043DA98 /* NWSSLConnection.m */; };
|
||||
5C7803BA1D3C487B002107FB /* NWType.m in Sources */ = {isa = PBXBuildFile; fileRef = B34BF1B318DDF401004BA9F7 /* NWType.m */; };
|
||||
5C7803BB1D3C488C002107FB /* NWHub.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A0189682D30043DA98 /* NWHub.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803BC1D3C488C002107FB /* NWNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A2189682D30043DA98 /* NWNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803BD1D3C488C002107FB /* NWPusher.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A4189682D30043DA98 /* NWPusher.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803BE1D3C488C002107FB /* NWPushFeedback.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A6189682D30043DA98 /* NWPushFeedback.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803BF1D3C488C002107FB /* NWSecTools.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232A8189682D30043DA98 /* NWSecTools.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803C01D3C488C002107FB /* NWSSLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F232AA189682D30043DA98 /* NWSSLConnection.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803C11D3C488C002107FB /* NWType.h in Headers */ = {isa = PBXBuildFile; fileRef = B34BF1B218DDF401004BA9F7 /* NWType.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
5C7803C21D3C488C002107FB /* NWLCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3376A62172BB71200242EBB /* NWLCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
B3005FC318F43659009BB7C3 /* Application.xib in Resources */ = {isa = PBXBuildFile; fileRef = B3005FC218F43659009BB7C3 /* Application.xib */; };
|
||||
B3376A63172BB71200242EBB /* NWLCore.c in Sources */ = {isa = PBXBuildFile; fileRef = B3376A61172BB71200242EBB /* NWLCore.c */; };
|
||||
B3376A64172BB71200242EBB /* NWLCore.c in Sources */ = {isa = PBXBuildFile; fileRef = B3376A61172BB71200242EBB /* NWLCore.c */; };
|
||||
B33FB1C8172B185C006529CE /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = B33FB1BB172B185C006529CE /* icon.icns */; };
|
||||
B33FB1C9172B185C006529CE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B33FB1BC172B185C006529CE /* main.m */; };
|
||||
B33FB1CB172B185C006529CE /* NWAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B33FB1BF172B185C006529CE /* NWAppDelegate.m */; };
|
||||
@@ -26,8 +62,6 @@
|
||||
B33FB215172B303D006529CE /* Icon-72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B33FB211172B303D006529CE /* Icon-72@2x.png */; };
|
||||
B33FB216172B303D006529CE /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B33FB212172B303D006529CE /* icon.png */; };
|
||||
B33FB217172B303D006529CE /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B33FB213172B303D006529CE /* Icon@2x.png */; };
|
||||
B34BF1B418DDF401004BA9F7 /* NWType.m in Sources */ = {isa = PBXBuildFile; fileRef = B34BF1B318DDF401004BA9F7 /* NWType.m */; };
|
||||
B34BF1B518DDF401004BA9F7 /* NWType.m in Sources */ = {isa = PBXBuildFile; fileRef = B34BF1B318DDF401004BA9F7 /* NWType.m */; };
|
||||
B395BA12172BC17A00631932 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = B3C6BE0015FD30E900F1F3F1 /* README.md */; };
|
||||
B3AFABEF172C81910027346A /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3AFABEE172C81910027346A /* config.plist */; };
|
||||
B3B4DCD318A7998300F9F258 /* LICENSE.txt in Resources */ = {isa = PBXBuildFile; fileRef = B3B4DCD218A7998300F9F258 /* LICENSE.txt */; };
|
||||
@@ -36,21 +70,57 @@
|
||||
B3C6BDD315FD27E900F1F3F1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C6BDD215FD27E900F1F3F1 /* Security.framework */; };
|
||||
B3C6BE0115FD30E900F1F3F1 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = B3C6BE0015FD30E900F1F3F1 /* README.md */; };
|
||||
B3F23256189657DA0043DA98 /* pusher.p12 in Resources */ = {isa = PBXBuildFile; fileRef = B3F23255189657DA0043DA98 /* pusher.p12 */; };
|
||||
B3F232AE189682D30043DA98 /* NWHub.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A1189682D30043DA98 /* NWHub.m */; };
|
||||
B3F232AF189682D30043DA98 /* NWHub.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A1189682D30043DA98 /* NWHub.m */; };
|
||||
B3F232B0189682D30043DA98 /* NWNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A3189682D30043DA98 /* NWNotification.m */; };
|
||||
B3F232B1189682D30043DA98 /* NWNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A3189682D30043DA98 /* NWNotification.m */; };
|
||||
B3F232B2189682D30043DA98 /* NWPusher.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A5189682D30043DA98 /* NWPusher.m */; };
|
||||
B3F232B3189682D30043DA98 /* NWPusher.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A5189682D30043DA98 /* NWPusher.m */; };
|
||||
B3F232B4189682D30043DA98 /* NWPushFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A7189682D30043DA98 /* NWPushFeedback.m */; };
|
||||
B3F232B5189682D30043DA98 /* NWPushFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A7189682D30043DA98 /* NWPushFeedback.m */; };
|
||||
B3F232B6189682D30043DA98 /* NWSecTools.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A9189682D30043DA98 /* NWSecTools.m */; };
|
||||
B3F232B7189682D30043DA98 /* NWSecTools.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232A9189682D30043DA98 /* NWSecTools.m */; };
|
||||
B3F232B8189682D30043DA98 /* NWSSLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232AB189682D30043DA98 /* NWSSLConnection.m */; };
|
||||
B3F232B9189682D30043DA98 /* NWSSLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F232AB189682D30043DA98 /* NWSSLConnection.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
5C7803891D3C4668002107FB /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B3C6BD7215FD24D200F1F3F1 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5C7803831D3C4668002107FB;
|
||||
remoteInfo = "PusherKit-iOS";
|
||||
};
|
||||
5C7803AB1D3C4826002107FB /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B3C6BD7215FD24D200F1F3F1 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5C7803A51D3C4826002107FB;
|
||||
remoteInfo = "PusherKit-OSX";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
5C7803901D3C4668002107FB /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
5C78038C1D3C4668002107FB /* PusherKit.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5C7803AE1D3C4826002107FB /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
5C7803AF1D3C4826002107FB /* PusherKit.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
5C7803841D3C4668002107FB /* PusherKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PusherKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5C7803861D3C4668002107FB /* PusherKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PusherKit.h; sourceTree = "<group>"; };
|
||||
5C7803871D3C4668002107FB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5C7803A61D3C4826002107FB /* PusherKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PusherKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5C7803A81D3C4826002107FB /* PusherKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PusherKit.h; sourceTree = "<group>"; };
|
||||
5C7803A91D3C4826002107FB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
B3005FC218F43659009BB7C3 /* Application.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Application.xib; sourceTree = "<group>"; };
|
||||
B3376A61172BB71200242EBB /* NWLCore.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = NWLCore.c; path = Mac/NWLCore.c; sourceTree = SOURCE_ROOT; };
|
||||
B3376A62172BB71200242EBB /* NWLCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NWLCore.h; path = Mac/NWLCore.h; sourceTree = SOURCE_ROOT; };
|
||||
@@ -106,11 +176,26 @@
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
5C7803801D3C4668002107FB /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5C7803A21D3C4826002107FB /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B33FB1CE172B1A66006529CE /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B33FB20F172B1EC2006529CE /* Security.framework in Frameworks */,
|
||||
5C78038B1D3C4668002107FB /* PusherKit.framework in Frameworks */,
|
||||
B33FB204172B1BAD006529CE /* CoreGraphics.framework in Frameworks */,
|
||||
B33FB202172B1BA5006529CE /* Foundation.framework in Frameworks */,
|
||||
B33FB200172B1B9F006529CE /* UIKit.framework in Frameworks */,
|
||||
@@ -123,12 +208,31 @@
|
||||
files = (
|
||||
B3C6BDD315FD27E900F1F3F1 /* Security.framework in Frameworks */,
|
||||
B3C6BD8015FD24D200F1F3F1 /* Cocoa.framework in Frameworks */,
|
||||
5C7803AD1D3C4826002107FB /* PusherKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
5C7803851D3C4668002107FB /* PusherKit-iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5C7803861D3C4668002107FB /* PusherKit.h */,
|
||||
5C7803871D3C4668002107FB /* Info.plist */,
|
||||
);
|
||||
path = "PusherKit-iOS";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5C7803A71D3C4826002107FB /* PusherKit-OSX */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5C7803A81D3C4826002107FB /* PusherKit.h */,
|
||||
5C7803A91D3C4826002107FB /* Info.plist */,
|
||||
);
|
||||
path = "PusherKit-OSX";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B3376A5F172B9EFD00242EBB /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -193,6 +297,8 @@
|
||||
B3F2329D189682D30043DA98 /* Classes */,
|
||||
B33FB1BA172B185C006529CE /* Mac */,
|
||||
B33FB1ED172B1A7A006529CE /* Touch */,
|
||||
5C7803851D3C4668002107FB /* PusherKit-iOS */,
|
||||
5C7803A71D3C4826002107FB /* PusherKit-OSX */,
|
||||
B3C6BD7E15FD24D200F1F3F1 /* Frameworks */,
|
||||
B3C6BD7C15FD24D200F1F3F1 /* Products */,
|
||||
);
|
||||
@@ -203,6 +309,8 @@
|
||||
children = (
|
||||
B3C6BD7B15FD24D200F1F3F1 /* Pusher.app */,
|
||||
B33FB1D1172B1A66006529CE /* PusherTouch.app */,
|
||||
5C7803841D3C4668002107FB /* PusherKit.framework */,
|
||||
5C7803A61D3C4826002107FB /* PusherKit.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -245,7 +353,78 @@
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
5C7803811D3C4668002107FB /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5C7803881D3C4668002107FB /* PusherKit.h in Headers */,
|
||||
5C7803991D3C4749002107FB /* NWHub.h in Headers */,
|
||||
5C78039A1D3C4749002107FB /* NWNotification.h in Headers */,
|
||||
5C78039B1D3C4749002107FB /* NWPusher.h in Headers */,
|
||||
5C78039C1D3C4749002107FB /* NWPushFeedback.h in Headers */,
|
||||
5C78039D1D3C4749002107FB /* NWSecTools.h in Headers */,
|
||||
5C78039E1D3C4749002107FB /* NWSSLConnection.h in Headers */,
|
||||
5C78039F1D3C4749002107FB /* NWType.h in Headers */,
|
||||
5C7803A01D3C4749002107FB /* NWLCore.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5C7803A31D3C4826002107FB /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5C7803AA1D3C4826002107FB /* PusherKit.h in Headers */,
|
||||
5C7803BB1D3C488C002107FB /* NWHub.h in Headers */,
|
||||
5C7803BC1D3C488C002107FB /* NWNotification.h in Headers */,
|
||||
5C7803BD1D3C488C002107FB /* NWPusher.h in Headers */,
|
||||
5C7803BE1D3C488C002107FB /* NWPushFeedback.h in Headers */,
|
||||
5C7803BF1D3C488C002107FB /* NWSecTools.h in Headers */,
|
||||
5C7803C01D3C488C002107FB /* NWSSLConnection.h in Headers */,
|
||||
5C7803C11D3C488C002107FB /* NWType.h in Headers */,
|
||||
5C7803C21D3C488C002107FB /* NWLCore.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
5C7803831D3C4668002107FB /* PusherKit-iOS */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5C78038F1D3C4668002107FB /* Build configuration list for PBXNativeTarget "PusherKit-iOS" */;
|
||||
buildPhases = (
|
||||
5C78037F1D3C4668002107FB /* Sources */,
|
||||
5C7803801D3C4668002107FB /* Frameworks */,
|
||||
5C7803811D3C4668002107FB /* Headers */,
|
||||
5C7803821D3C4668002107FB /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "PusherKit-iOS";
|
||||
productName = "PusherKit-iOS";
|
||||
productReference = 5C7803841D3C4668002107FB /* PusherKit.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
5C7803A51D3C4826002107FB /* PusherKit-OSX */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5C7803B01D3C4826002107FB /* Build configuration list for PBXNativeTarget "PusherKit-OSX" */;
|
||||
buildPhases = (
|
||||
5C7803A11D3C4826002107FB /* Sources */,
|
||||
5C7803A21D3C4826002107FB /* Frameworks */,
|
||||
5C7803A31D3C4826002107FB /* Headers */,
|
||||
5C7803A41D3C4826002107FB /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "PusherKit-OSX";
|
||||
productName = "PusherKit-OSX";
|
||||
productReference = 5C7803A61D3C4826002107FB /* PusherKit.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
B33FB1D0172B1A66006529CE /* PusherTouch */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = B33FB1EA172B1A66006529CE /* Build configuration list for PBXNativeTarget "PusherTouch" */;
|
||||
@@ -253,10 +432,12 @@
|
||||
B33FB1CD172B1A66006529CE /* Sources */,
|
||||
B33FB1CE172B1A66006529CE /* Frameworks */,
|
||||
B33FB1CF172B1A66006529CE /* Resources */,
|
||||
5C7803901D3C4668002107FB /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5C78038A1D3C4668002107FB /* PBXTargetDependency */,
|
||||
);
|
||||
name = PusherTouch;
|
||||
productName = PusherTouch;
|
||||
@@ -270,10 +451,12 @@
|
||||
B3C6BD7715FD24D200F1F3F1 /* Sources */,
|
||||
B3C6BD7815FD24D200F1F3F1 /* Frameworks */,
|
||||
B3C6BD7915FD24D200F1F3F1 /* Resources */,
|
||||
5C7803AE1D3C4826002107FB /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5C7803AC1D3C4826002107FB /* PBXTargetDependency */,
|
||||
);
|
||||
name = PusherMac;
|
||||
productName = Pusher;
|
||||
@@ -287,8 +470,18 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
CLASSPREFIX = NW;
|
||||
LastUpgradeCheck = 0720;
|
||||
LastUpgradeCheck = 0800;
|
||||
ORGANIZATIONNAME = noodlewerk;
|
||||
TargetAttributes = {
|
||||
5C7803831D3C4668002107FB = {
|
||||
CreatedOnToolsVersion = 8.0;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
5C7803A51D3C4826002107FB = {
|
||||
CreatedOnToolsVersion = 8.0;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = B3C6BD7515FD24D200F1F3F1 /* Build configuration list for PBXProject "NWPusher" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
@@ -304,11 +497,27 @@
|
||||
targets = (
|
||||
B3C6BD7A15FD24D200F1F3F1 /* PusherMac */,
|
||||
B33FB1D0172B1A66006529CE /* PusherTouch */,
|
||||
5C7803831D3C4668002107FB /* PusherKit-iOS */,
|
||||
5C7803A51D3C4826002107FB /* PusherKit-OSX */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
5C7803821D3C4668002107FB /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5C7803A41D3C4826002107FB /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B33FB1CF172B1A66006529CE /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -341,20 +550,42 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
5C78037F1D3C4668002107FB /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5C7803951D3C4683002107FB /* NWSecTools.m in Sources */,
|
||||
5C7803961D3C4683002107FB /* NWSSLConnection.m in Sources */,
|
||||
5C7803911D3C4683002107FB /* NWHub.m in Sources */,
|
||||
5C7803941D3C4683002107FB /* NWPushFeedback.m in Sources */,
|
||||
5C7803981D3C4698002107FB /* NWLCore.c in Sources */,
|
||||
5C7803921D3C4683002107FB /* NWNotification.m in Sources */,
|
||||
5C7803971D3C4683002107FB /* NWType.m in Sources */,
|
||||
5C7803931D3C4683002107FB /* NWPusher.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5C7803A11D3C4826002107FB /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5C7803B81D3C487B002107FB /* NWSecTools.m in Sources */,
|
||||
5C7803B41D3C487B002107FB /* NWHub.m in Sources */,
|
||||
5C7803BA1D3C487B002107FB /* NWType.m in Sources */,
|
||||
5C7803B71D3C487B002107FB /* NWPushFeedback.m in Sources */,
|
||||
5C7803B61D3C487B002107FB /* NWPusher.m in Sources */,
|
||||
5C7803B51D3C487B002107FB /* NWNotification.m in Sources */,
|
||||
5C7803B31D3C486F002107FB /* NWLCore.c in Sources */,
|
||||
5C7803B91D3C487B002107FB /* NWSSLConnection.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B33FB1CD172B1A66006529CE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B33FB1FC172B1A7A006529CE /* main.m in Sources */,
|
||||
B3F232B5189682D30043DA98 /* NWPushFeedback.m in Sources */,
|
||||
B33FB1FD172B1A7A006529CE /* NWAppDelegate.m in Sources */,
|
||||
B34BF1B518DDF401004BA9F7 /* NWType.m in Sources */,
|
||||
B3F232AF189682D30043DA98 /* NWHub.m in Sources */,
|
||||
B3F232B7189682D30043DA98 /* NWSecTools.m in Sources */,
|
||||
B3F232B3189682D30043DA98 /* NWPusher.m in Sources */,
|
||||
B3F232B9189682D30043DA98 /* NWSSLConnection.m in Sources */,
|
||||
B3F232B1189682D30043DA98 /* NWNotification.m in Sources */,
|
||||
B3376A64172BB71200242EBB /* NWLCore.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -362,22 +593,207 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B3F232B4189682D30043DA98 /* NWPushFeedback.m in Sources */,
|
||||
B3F232AE189682D30043DA98 /* NWHub.m in Sources */,
|
||||
B3F232B6189682D30043DA98 /* NWSecTools.m in Sources */,
|
||||
B34BF1B418DDF401004BA9F7 /* NWType.m in Sources */,
|
||||
B3F232B2189682D30043DA98 /* NWPusher.m in Sources */,
|
||||
B3F232B8189682D30043DA98 /* NWSSLConnection.m in Sources */,
|
||||
B3F232B0189682D30043DA98 /* NWNotification.m in Sources */,
|
||||
B33FB1C9172B185C006529CE /* main.m in Sources */,
|
||||
B33FB1CB172B185C006529CE /* NWAppDelegate.m in Sources */,
|
||||
B3376A63172BB71200242EBB /* NWLCore.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
5C78038A1D3C4668002107FB /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 5C7803831D3C4668002107FB /* PusherKit-iOS */;
|
||||
targetProxy = 5C7803891D3C4668002107FB /* PBXContainerItemProxy */;
|
||||
};
|
||||
5C7803AC1D3C4826002107FB /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 5C7803A51D3C4826002107FB /* PusherKit-OSX */;
|
||||
targetProxy = 5C7803AB1D3C4826002107FB /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
5C78038D1D3C4668002107FB /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = "PusherKit-iOS/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.zats.PusherKit-iOS";
|
||||
PRODUCT_NAME = PusherKit;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5C78038E1D3C4668002107FB /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = "PusherKit-iOS/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.zats.PusherKit-iOS";
|
||||
PRODUCT_NAME = PusherKit;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5C7803B11D3C4826002107FB /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
FRAMEWORK_VERSION = A;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = "PusherKit-OSX/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.zats.PusherKit-OSX";
|
||||
PRODUCT_NAME = PusherKit;
|
||||
SKIP_INSTALL = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5C7803B21D3C4826002107FB /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
FRAMEWORK_VERSION = A;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
INFOPLIST_FILE = "PusherKit-OSX/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.zats.PusherKit-OSX";
|
||||
PRODUCT_NAME = PusherKit;
|
||||
SKIP_INSTALL = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B33FB1EB172B1A66006529CE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@@ -398,7 +814,8 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "Touch/PusherTouch-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.noodlewerk.pusher;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -424,7 +841,8 @@
|
||||
GCC_PREFIX_HEADER = "Touch/PusherTouch-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "NWL_LIB=Pusher";
|
||||
INFOPLIST_FILE = "Touch/PusherTouch-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.noodlewerk.pusher;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -441,12 +859,22 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
@@ -455,7 +883,9 @@
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
@@ -469,14 +899,26 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
SDKROOT = macosx;
|
||||
@@ -486,6 +928,7 @@
|
||||
B3C6BD9A15FD24D200F1F3F1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Mac/PusherMac-Prefix.pch";
|
||||
@@ -494,6 +937,7 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "Mac/PusherMac-Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.noodlewerk.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = Pusher;
|
||||
@@ -504,6 +948,7 @@
|
||||
B3C6BD9B15FD24D200F1F3F1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Mac/PusherMac-Prefix.pch";
|
||||
@@ -512,6 +957,7 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "Mac/PusherMac-Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.noodlewerk.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = Pusher;
|
||||
@@ -522,6 +968,24 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
5C78038F1D3C4668002107FB /* Build configuration list for PBXNativeTarget "PusherKit-iOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5C78038D1D3C4668002107FB /* Debug */,
|
||||
5C78038E1D3C4668002107FB /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5C7803B01D3C4826002107FB /* Build configuration list for PBXNativeTarget "PusherKit-OSX" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5C7803B11D3C4826002107FB /* Debug */,
|
||||
5C7803B21D3C4826002107FB /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
B33FB1EA172B1A66006529CE /* Build configuration list for PBXNativeTarget "PusherTouch" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0800"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5C7803A51D3C4826002107FB"
|
||||
BuildableName = "PusherKit.framework"
|
||||
BlueprintName = "PusherKit-OSX"
|
||||
ReferencedContainer = "container:NWPusher.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5C7803A51D3C4826002107FB"
|
||||
BuildableName = "PusherKit.framework"
|
||||
BlueprintName = "PusherKit-OSX"
|
||||
ReferencedContainer = "container:NWPusher.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5C7803A51D3C4826002107FB"
|
||||
BuildableName = "PusherKit.framework"
|
||||
BlueprintName = "PusherKit-OSX"
|
||||
ReferencedContainer = "container:NWPusher.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0800"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5C7803831D3C4668002107FB"
|
||||
BuildableName = "PusherKit.framework"
|
||||
BlueprintName = "PusherKit-iOS"
|
||||
ReferencedContainer = "container:NWPusher.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5C7803831D3C4668002107FB"
|
||||
BuildableName = "PusherKit.framework"
|
||||
BlueprintName = "PusherKit-iOS"
|
||||
ReferencedContainer = "container:NWPusher.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5C7803831D3C4668002107FB"
|
||||
BuildableName = "PusherKit.framework"
|
||||
BlueprintName = "PusherKit-iOS"
|
||||
ReferencedContainer = "container:NWPusher.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2016 noodlewerk. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// PusherKit-OSX.h
|
||||
// PusherKit-OSX
|
||||
//
|
||||
// Created by Sash Zats on 7/17/16.
|
||||
// Copyright © 2016 noodlewerk. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
//! Project version number for PusherKit-OSX.
|
||||
FOUNDATION_EXPORT double PusherKit_OSXVersionNumber;
|
||||
|
||||
//! Project version string for PusherKit-OSX.
|
||||
FOUNDATION_EXPORT const unsigned char PusherKit_OSXVersionString[];
|
||||
|
||||
#import <PusherKit/NWHub.h>
|
||||
#import <PusherKit/NWLCore.h>
|
||||
#import <PusherKit/NWNotification.h>
|
||||
#import <PusherKit/NWPushFeedback.h>
|
||||
#import <PusherKit/NWPusher.h>
|
||||
#import <PusherKit/NWSSLConnection.h>
|
||||
#import <PusherKit/NWSecTools.h>
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?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>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// PusherKit-iOS.h
|
||||
// PusherKit-iOS
|
||||
//
|
||||
// Created by Sash Zats on 7/17/16.
|
||||
// Copyright © 2016 noodlewerk. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for PusherKit-iOS.
|
||||
FOUNDATION_EXPORT double PusherKit_iOSVersionNumber;
|
||||
|
||||
//! Project version string for PusherKit-iOS.
|
||||
FOUNDATION_EXPORT const unsigned char PusherKit_iOSVersionString[];
|
||||
|
||||
#import <PusherKit/NWHub.h>
|
||||
#import <PusherKit/NWLCore.h>
|
||||
#import <PusherKit/NWNotification.h>
|
||||
#import <PusherKit/NWPusher.h>
|
||||
#import <PusherKit/NWSSLConnection.h>
|
||||
#import <PusherKit/NWSecTools.h>
|
||||
#import <PusherKit/NWPushFeedback.h>
|
||||
@@ -11,7 +11,7 @@ Pusher
|
||||
|
||||
Installation
|
||||
------------
|
||||
Install the Mac app using [Homebrew cask](https://github.com/phinze/homebrew-cask):
|
||||
Install the Mac app using [Homebrew cask](https://github.com/caskroom/homebrew-cask):
|
||||
|
||||
```shell
|
||||
brew cask install pusher
|
||||
@@ -21,12 +21,18 @@ Or download the latest `Pusher.app` binary:
|
||||
|
||||
- [Download latest binary](https://github.com/noodlewerk/NWPusher/releases/latest)
|
||||
|
||||
Alternatively, you can include NWPusher as a framework, using [CocoaPods](http://cocoapods.org/):
|
||||
Alternatively, you can include NWPusher as a framework, using [CocoaPods](https://cocoapods.org/):
|
||||
|
||||
```ruby
|
||||
pod 'NWPusher', '~> 0.7.0'
|
||||
```
|
||||
|
||||
or [Carthage](https://github.com/Carthage/Carthage) (iOS 8+ is required to use Cocoa Touch Frameworks)
|
||||
|
||||
```
|
||||
github "noodlewerk/NWPusher"
|
||||
```
|
||||
|
||||
Or simply include the source files you need. NWPusher has a modular architecture and does not have any external dependencies, so use what you like.
|
||||
|
||||
|
||||
@@ -228,7 +234,7 @@ After a second or so, we can take a look to see if the notification was accepted
|
||||
} else if (read) {
|
||||
NSLog(@"Read and none failed");
|
||||
} else {
|
||||
NSLog(@"Unable to read failed: %@", error);
|
||||
NSLog(@"Unable to read: %@", error);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -292,6 +298,46 @@ When connected read the device token and date of invalidation:
|
||||
|
||||
Apple closes the connection after the last device token is read.
|
||||
|
||||
Pushing to macOS
|
||||
---------------
|
||||
|
||||
On macOS, you obtain a device token for your app by calling the `registerForRemoteNotificationTypes:` method of the `NSApplication` object. It is recommended that you call this method at launch time as part of your normal startup sequence. The first time your app calls this method, the app object requests the token from APNs. After the initial call, the app object contacts APNs only when the device token changes; otherwise, it returns the existing token quickly.
|
||||
|
||||
The app object notifies its delegate asynchronously upon the successful or unsuccessful retrieval of the device token. You use these delegate callbacks to process the device token or to handle any errors that arose. You must implement the following delegate methods to track whether registration was successful:
|
||||
|
||||
- Use the `application:didRegisterForRemoteNotificationsWithDeviceToken:` to receive the device token and forward it to your server.
|
||||
- Use the `application:didFailToRegisterForRemoteNotificationsWithError:` to respond to errors.
|
||||
|
||||
Note: If the device token changes while your app is running, the app object calls the appropriate delegate method again to notify you of the change.
|
||||
|
||||
The app delegate calls the `registerForRemoteNotificationTypes:` method as part of its regular launch-time setup, passing along the types of interactions that you intend to use. Upon receiving the device token, the `application:didRegisterForRemoteNotificationsWithDeviceToken:` method forwards it to the app’s associated server using a custom method. If an error occurs during registration, the app temporarily disables any features related to remote notifications. Those features are re-enabled when a valid device token is received.
|
||||
|
||||
```objective-c
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
|
||||
// Configure the user interactions first.
|
||||
[self configureUserInteractions];
|
||||
|
||||
[NSApp registerForRemoteNotificationTypes:(NSRemoteNotificationTypeAlert | NSRemoteNotificationTypeSound)];
|
||||
}
|
||||
```
|
||||
|
||||
```objective-c
|
||||
- (void)application:(NSApplication *)application
|
||||
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
||||
// Forward the token to your server.
|
||||
[self forwardTokenToServer:deviceToken];
|
||||
}
|
||||
```
|
||||
|
||||
```objective-c
|
||||
- (void)application:(NSApplication *)application
|
||||
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
|
||||
NSLog(@"Remote notification support is unavailable due to error: %@", error);
|
||||
[self disableRemoteNotificationFeatures];
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Certificate and key files
|
||||
-------------------------
|
||||
Pusher reads certificate and key data from PKCS12 files. This is a binary format that bundles both X.509 certificates and a private key in one file. Conversion from other file formats to and from PKCS12 is provided by the OpenSSL CLI.
|
||||
@@ -360,6 +406,8 @@ If it fails to connect then check:
|
||||
|
||||
- Can you connect with the push servers? Try `[NWPusher connectWithIdentity:identity error:&error]` or `[NWPusher connectWithPKCS12Data:pkcs12 password:password error:&error]`.
|
||||
|
||||
- Pusher connects on port `2195` with hosts `gateway.push.apple.com` and `gateway.sandbox.push.apple.com`, and on port `2196` with hosts `feedback.push.apple.com` and `feedback.sandbox.push.apple.com`. Make sure your firewall is configured to allow these connections.
|
||||
|
||||
If nothing is delivered to the device then check:
|
||||
|
||||
- Is the device online? Is it able to receive push notifications from other services? Try to get pushes from other apps, for example a messenger. Many wireless connections work visibly fine, but do not deliver push notifications. Try to switch to another wifi or cellular network.
|
||||
|
||||
@@ -6,12 +6,7 @@
|
||||
//
|
||||
|
||||
#import "NWAppDelegate.h"
|
||||
#import "NWHub.h"
|
||||
#import "NWPusher.h"
|
||||
#import "NWNotification.h"
|
||||
#import "NWLCore.h"
|
||||
#import "NWSSLConnection.h"
|
||||
#import "NWSecTools.h"
|
||||
#import <PusherKit/PusherKit.h>
|
||||
|
||||
// TODO: Export your push certificate and key in PKCS12 format to pusher.p12 in the root of the project directory.
|
||||
static NSString * const pkcs12FileName = @"pusher.p12";
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.7.1</string>
|
||||
<string>0.7.5</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>15</string>
|
||||
<string>19</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
|
||||
Reference in New Issue
Block a user