@ -0,0 +1 @@
|
||||
Versions/Current/ApptentiveConnect |
@ -0,0 +1 @@
|
||||
Versions/Current/Headers |
@ -0,0 +1 @@
|
||||
Versions/Current/Resources |
@ -0,0 +1,120 @@
|
||||
//
|
||||
// ATAppRatingFlow.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 7/8/11.
|
||||
// Copyright 2011 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE |
||||
#import <UIKit/UIKit.h> |
||||
#import <StoreKit/StoreKit.h> |
||||
#elif TARGET_OS_MAC |
||||
#import <Cocoa/Cocoa.h> |
||||
#endif |
||||
|
||||
/*! Notification sent when the user has agreed to rate the application. */ |
||||
extern NSString *const ATAppRatingFlowUserAgreedToRateAppNotification; |
||||
|
||||
/*! A workflow for a user either giving feedback on or rating the current
|
||||
application. */ |
||||
@interface ATAppRatingFlow : NSObject |
||||
#if TARGET_OS_IPHONE |
||||
<SKStoreProductViewControllerDelegate, UIAlertViewDelegate> |
||||
#endif |
||||
{ |
||||
@private |
||||
NSString *iTunesAppID; |
||||
#if TARGET_OS_IPHONE |
||||
UIAlertView *enjoymentDialog; |
||||
UIAlertView *ratingDialog; |
||||
#endif |
||||
|
||||
NSUInteger daysBeforePrompt; |
||||
NSUInteger usesBeforePrompt; |
||||
NSUInteger significantEventsBeforePrompt; |
||||
NSUInteger daysBeforeRePrompting; |
||||
|
||||
NSDate *lastUseOfApp; |
||||
|
||||
NSString *appName; |
||||
} |
||||
/*! Set to a custom app name if you'd like to use something other than the bundle display name. */ |
||||
@property (nonatomic, copy) NSString *appName; |
||||
|
||||
/*! The default singleton constructor. Call with an iTunes Applicaiton ID as
|
||||
an NSString */ |
||||
+ (ATAppRatingFlow *)sharedRatingFlowWithAppID:(NSString *)iTunesAppID; |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
/*!
|
||||
Call when the application is done launching. If we should be able to |
||||
prompt for a rating, pass YES for canPromptRating. The viewController is |
||||
the viewController from which a feedback dialog will be shown. |
||||
*/ |
||||
- (void)appDidLaunch:(BOOL)canPromptForRating viewController:(UIViewController *)viewController; |
||||
|
||||
/*!
|
||||
Call when the application enters the foreground. If we should be able to |
||||
prompt for a rating, pass YES.
|
||||
|
||||
The viewController is the UIViewController from which a feedback dialog
|
||||
will be shown. |
||||
*/ |
||||
- (void)appDidEnterForeground:(BOOL)canPromptForRating viewController:(UIViewController *)viewController; |
||||
|
||||
/*!
|
||||
Call whenever a significant event occurs in the application. So, for example, |
||||
if you want to have a rating show up after the user has played 20 levels of |
||||
a game, you would set significantEventsBeforePrompt to 20, and call this |
||||
after each level. |
||||
|
||||
If we should be able to prompt for a rating when this is called, pass YES. |
||||
|
||||
The viewController is the UIViewController from which a feedback dialog
|
||||
will be shown. |
||||
*/ |
||||
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating viewController:(UIViewController *)viewController; |
||||
|
||||
#elif TARGET_OS_MAC |
||||
/*!
|
||||
Call when the application is done launching. If we should be able to |
||||
prompt for a rating, pass YES. |
||||
*/ |
||||
- (void)appDidLaunch:(BOOL)canPromptForRating; |
||||
|
||||
/*!
|
||||
Call whenever a significant event occurs in the application. So, for example, |
||||
if you want to have a rating show up after the user has played 20 levels of |
||||
a game, you would set significantEventsBeforePrompt to 20, and call this |
||||
after each level. |
||||
|
||||
If we should be able to prompt for a rating when this is called, pass YES. |
||||
*/ |
||||
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating; |
||||
#endif |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
/*!
|
||||
Call if you want to show the enjoyment dialog directly. This enters the flow |
||||
for either bringing up the feedback view or the rating dialog. |
||||
*/ |
||||
- (void)showEnjoymentDialog:(UIViewController *)vc; |
||||
|
||||
/*!
|
||||
Call if you want to show the rating dialog directly. |
||||
*/ |
||||
- (IBAction)showRatingDialog:(UIViewController *)vc; |
||||
#elif TARGET_OS_MAC |
||||
/*!
|
||||
Call if you want to show the enjoyment dialog directly. This enters the flow |
||||
for either bringing up the feedback view or the rating dialog. |
||||
*/ |
||||
- (IBAction)showEnjoymentDialog:(id)sender; |
||||
|
||||
/*!
|
||||
Call if you want to show the rating dialog directly. |
||||
*/ |
||||
- (IBAction)showRatingDialog:(id)sender; |
||||
#endif |
||||
@end |
@ -0,0 +1,95 @@
|
||||
//
|
||||
// ATConnect.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 3/12/11.
|
||||
// Copyright 2011 Apptentive, Inc.. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
#if TARGET_OS_IPHONE |
||||
#import <UIKit/UIKit.h> |
||||
#elif TARGET_OS_MAC |
||||
#import <Cocoa/Cocoa.h> |
||||
#endif |
||||
|
||||
#define kATConnectVersionString @"0.4.12" |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
#define kATConnectPlatformString @"iOS" |
||||
@class ATFeedbackController; |
||||
#elif TARGET_OS_MAC |
||||
#define kATConnectPlatformString @"Mac OS X" |
||||
@class ATFeedbackWindowController; |
||||
#endif |
||||
|
||||
typedef enum { |
||||
ATFeedbackControllerDefault, |
||||
ATFeedbackControllerSimple |
||||
} ATFeedbackControllerType; |
||||
|
||||
|
||||
@interface ATConnect : NSObject { |
||||
@private |
||||
#if TARGET_OS_IPHONE |
||||
ATFeedbackController *feedbackController; |
||||
ATFeedbackController *currentFeedbackController; |
||||
#elif TARGET_OS_MAC |
||||
ATFeedbackWindowController *feedbackWindowController; |
||||
#endif |
||||
NSMutableDictionary *additionalFeedbackData; |
||||
NSString *apiKey; |
||||
BOOL showTagline; |
||||
BOOL shouldTakeScreenshot; |
||||
BOOL showEmailField; |
||||
NSString *initialName; |
||||
NSString *initialEmailAddress; |
||||
ATFeedbackControllerType feedbackControllerType; |
||||
NSString *customPlaceholderText; |
||||
} |
||||
@property (nonatomic, copy) NSString *apiKey; |
||||
@property (nonatomic, assign) BOOL showTagline; |
||||
@property (nonatomic, assign) BOOL shouldTakeScreenshot; |
||||
@property (nonatomic, assign) BOOL showEmailField; |
||||
@property (nonatomic, copy) NSString *initialName; |
||||
@property (nonatomic, copy) NSString *initialEmailAddress; |
||||
@property (nonatomic, assign) ATFeedbackControllerType feedbackControllerType; |
||||
/*! Set this if you want some custom text to appear as a placeholder in the
|
||||
feedback text box. */ |
||||
@property (nonatomic, copy) NSString *customPlaceholderText; |
||||
|
||||
+ (ATConnect *)sharedConnection; |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
/*!
|
||||
* Presents a feedback controller in the window of the given view controller. |
||||
*/ |
||||
- (void)presentFeedbackControllerFromViewController:(UIViewController *)viewController; |
||||
|
||||
/*!
|
||||
* Dismisses the feedback controller. You normally won't need to call this. |
||||
*/ |
||||
- (void)dismissFeedbackControllerAnimated:(BOOL)animated completion:(void (^)(void))completion; |
||||
#elif TARGET_OS_MAC |
||||
/*!
|
||||
* Presents a feedback window. |
||||
*/ |
||||
- (IBAction)showFeedbackWindow:(id)sender; |
||||
#endif |
||||
|
||||
/*! Adds an additional data field to any feedback sent. */ |
||||
- (void)addAdditionalInfoToFeedback:(NSObject<NSCoding> *)object withKey:(NSString *)key; |
||||
|
||||
/*! Removes an additional data field from the feedback sent. */ |
||||
- (void)removeAdditionalInfoFromFeedbackWithKey:(NSString *)key; |
||||
|
||||
/*!
|
||||
* Returns the NSBundle corresponding to the bundle containing ATConnect's |
||||
* images, xibs, strings files, etc. |
||||
*/ |
||||
+ (NSBundle *)resourceBundle; |
||||
@end |
||||
|
||||
/*! Replacement for NSLocalizedString within ApptentiveConnect. Pulls
|
||||
localized strings out of the resource bundle. */ |
||||
extern NSString *ATLocalizedString(NSString *key, NSString *comment); |
@ -0,0 +1,44 @@
|
||||
<?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>BuildMachineOSBuild</key> |
||||
<string>15C50</string> |
||||
<key>CFBundleDevelopmentRegion</key> |
||||
<string>English</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>ApptentiveConnect</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>com.yourcompany.ApptentiveConnect</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundleName</key> |
||||
<string>ApptentiveConnect</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>FMWK</string> |
||||
<key>CFBundleShortVersionString</key> |
||||
<string>1.0</string> |
||||
<key>CFBundleSignature</key> |
||||
<string>????</string> |
||||
<key>CFBundleSupportedPlatforms</key> |
||||
<array> |
||||
<string>MacOSX</string> |
||||
</array> |
||||
<key>CFBundleVersion</key> |
||||
<string>1</string> |
||||
<key>DTCompiler</key> |
||||
<string>com.apple.compilers.llvm.clang.1_0</string> |
||||
<key>DTPlatformBuild</key> |
||||
<string>7C68</string> |
||||
<key>DTPlatformVersion</key> |
||||
<string>GM</string> |
||||
<key>DTSDKBuild</key> |
||||
<string>15C43</string> |
||||
<key>DTSDKName</key> |
||||
<string>macosx10.11</string> |
||||
<key>DTXcode</key> |
||||
<string>0720</string> |
||||
<key>DTXcodeBuild</key> |
||||
<string>7C68</string> |
||||
</dict> |
||||
</plist> |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 26 KiB |
@ -0,0 +1 @@
|
||||
A |
@ -0,0 +1 @@
|
||||
Versions/Current/ApptentiveConnect |
@ -0,0 +1 @@
|
||||
Versions/Current/Headers |
@ -0,0 +1 @@
|
||||
Versions/Current/Resources |
@ -0,0 +1,120 @@
|
||||
//
|
||||
// ATAppRatingFlow.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 7/8/11.
|
||||
// Copyright 2011 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE |
||||
#import <UIKit/UIKit.h> |
||||
#import <StoreKit/StoreKit.h> |
||||
#elif TARGET_OS_MAC |
||||
#import <Cocoa/Cocoa.h> |
||||
#endif |
||||
|
||||
/*! Notification sent when the user has agreed to rate the application. */ |
||||
extern NSString *const ATAppRatingFlowUserAgreedToRateAppNotification; |
||||
|
||||
/*! A workflow for a user either giving feedback on or rating the current
|
||||
application. */ |
||||
@interface ATAppRatingFlow : NSObject |
||||
#if TARGET_OS_IPHONE |
||||
<SKStoreProductViewControllerDelegate, UIAlertViewDelegate> |
||||
#endif |
||||
{ |
||||
@private |
||||
NSString *iTunesAppID; |
||||
#if TARGET_OS_IPHONE |
||||
UIAlertView *enjoymentDialog; |
||||
UIAlertView *ratingDialog; |
||||
#endif |
||||
|
||||
NSUInteger daysBeforePrompt; |
||||
NSUInteger usesBeforePrompt; |
||||
NSUInteger significantEventsBeforePrompt; |
||||
NSUInteger daysBeforeRePrompting; |
||||
|
||||
NSDate *lastUseOfApp; |
||||
|
||||
NSString *appName; |
||||
} |
||||
/*! Set to a custom app name if you'd like to use something other than the bundle display name. */ |
||||
@property (nonatomic, copy) NSString *appName; |
||||
|
||||
/*! The default singleton constructor. Call with an iTunes Applicaiton ID as
|
||||
an NSString */ |
||||
+ (ATAppRatingFlow *)sharedRatingFlowWithAppID:(NSString *)iTunesAppID; |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
/*!
|
||||
Call when the application is done launching. If we should be able to |
||||
prompt for a rating, pass YES for canPromptRating. The viewController is |
||||
the viewController from which a feedback dialog will be shown. |
||||
*/ |
||||
- (void)appDidLaunch:(BOOL)canPromptForRating viewController:(UIViewController *)viewController; |
||||
|
||||
/*!
|
||||
Call when the application enters the foreground. If we should be able to |
||||
prompt for a rating, pass YES.
|
||||
|
||||
The viewController is the UIViewController from which a feedback dialog
|
||||
will be shown. |
||||
*/ |
||||
- (void)appDidEnterForeground:(BOOL)canPromptForRating viewController:(UIViewController *)viewController; |
||||
|
||||
/*!
|
||||
Call whenever a significant event occurs in the application. So, for example, |
||||
if you want to have a rating show up after the user has played 20 levels of |
||||
a game, you would set significantEventsBeforePrompt to 20, and call this |
||||
after each level. |
||||
|
||||
If we should be able to prompt for a rating when this is called, pass YES. |
||||
|
||||
The viewController is the UIViewController from which a feedback dialog
|
||||
will be shown. |
||||
*/ |
||||
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating viewController:(UIViewController *)viewController; |
||||
|
||||
#elif TARGET_OS_MAC |
||||
/*!
|
||||
Call when the application is done launching. If we should be able to |
||||
prompt for a rating, pass YES. |
||||
*/ |
||||
- (void)appDidLaunch:(BOOL)canPromptForRating; |
||||
|
||||
/*!
|
||||
Call whenever a significant event occurs in the application. So, for example, |
||||
if you want to have a rating show up after the user has played 20 levels of |
||||
a game, you would set significantEventsBeforePrompt to 20, and call this |
||||
after each level. |
||||
|
||||
If we should be able to prompt for a rating when this is called, pass YES. |
||||
*/ |
||||
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating; |
||||
#endif |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
/*!
|
||||
Call if you want to show the enjoyment dialog directly. This enters the flow |
||||
for either bringing up the feedback view or the rating dialog. |
||||
*/ |
||||
- (void)showEnjoymentDialog:(UIViewController *)vc; |
||||
|
||||
/*!
|
||||
Call if you want to show the rating dialog directly. |
||||
*/ |
||||
- (IBAction)showRatingDialog:(UIViewController *)vc; |
||||
#elif TARGET_OS_MAC |
||||
/*!
|
||||
Call if you want to show the enjoyment dialog directly. This enters the flow |
||||
for either bringing up the feedback view or the rating dialog. |
||||
*/ |
||||
- (IBAction)showEnjoymentDialog:(id)sender; |
||||
|
||||
/*!
|
||||
Call if you want to show the rating dialog directly. |
||||
*/ |
||||
- (IBAction)showRatingDialog:(id)sender; |
||||
#endif |
||||
@end |
@ -0,0 +1,95 @@
|
||||
//
|
||||
// ATConnect.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 3/12/11.
|
||||
// Copyright 2011 Apptentive, Inc.. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
#if TARGET_OS_IPHONE |
||||
#import <UIKit/UIKit.h> |
||||
#elif TARGET_OS_MAC |
||||
#import <Cocoa/Cocoa.h> |
||||
#endif |
||||
|
||||
#define kATConnectVersionString @"0.4.12" |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
#define kATConnectPlatformString @"iOS" |
||||
@class ATFeedbackController; |
||||
#elif TARGET_OS_MAC |
||||
#define kATConnectPlatformString @"Mac OS X" |
||||
@class ATFeedbackWindowController; |
||||
#endif |
||||
|
||||
typedef enum { |
||||
ATFeedbackControllerDefault, |
||||
ATFeedbackControllerSimple |
||||
} ATFeedbackControllerType; |
||||
|
||||
|
||||
@interface ATConnect : NSObject { |
||||
@private |
||||
#if TARGET_OS_IPHONE |
||||
ATFeedbackController *feedbackController; |
||||
ATFeedbackController *currentFeedbackController; |
||||
#elif TARGET_OS_MAC |
||||
ATFeedbackWindowController *feedbackWindowController; |
||||
#endif |
||||
NSMutableDictionary *additionalFeedbackData; |
||||
NSString *apiKey; |
||||
BOOL showTagline; |
||||
BOOL shouldTakeScreenshot; |
||||
BOOL showEmailField; |
||||
NSString *initialName; |
||||
NSString *initialEmailAddress; |
||||
ATFeedbackControllerType feedbackControllerType; |
||||
NSString *customPlaceholderText; |
||||
} |
||||
@property (nonatomic, copy) NSString *apiKey; |
||||
@property (nonatomic, assign) BOOL showTagline; |
||||
@property (nonatomic, assign) BOOL shouldTakeScreenshot; |
||||
@property (nonatomic, assign) BOOL showEmailField; |
||||
@property (nonatomic, copy) NSString *initialName; |
||||
@property (nonatomic, copy) NSString *initialEmailAddress; |
||||
@property (nonatomic, assign) ATFeedbackControllerType feedbackControllerType; |
||||
/*! Set this if you want some custom text to appear as a placeholder in the
|
||||
feedback text box. */ |
||||
@property (nonatomic, copy) NSString *customPlaceholderText; |
||||
|
||||
+ (ATConnect *)sharedConnection; |
||||
|
||||
#if TARGET_OS_IPHONE |
||||
/*!
|
||||
* Presents a feedback controller in the window of the given view controller. |
||||
*/ |
||||
- (void)presentFeedbackControllerFromViewController:(UIViewController *)viewController; |
||||
|
||||
/*!
|
||||
* Dismisses the feedback controller. You normally won't need to call this. |
||||
*/ |
||||
- (void)dismissFeedbackControllerAnimated:(BOOL)animated completion:(void (^)(void))completion; |
||||
#elif TARGET_OS_MAC |
||||
/*!
|
||||
* Presents a feedback window. |
||||
*/ |
||||
- (IBAction)showFeedbackWindow:(id)sender; |
||||
#endif |
||||
|
||||
/*! Adds an additional data field to any feedback sent. */ |
||||
- (void)addAdditionalInfoToFeedback:(NSObject<NSCoding> *)object withKey:(NSString *)key; |
||||
|
||||
/*! Removes an additional data field from the feedback sent. */ |
||||
- (void)removeAdditionalInfoFromFeedbackWithKey:(NSString *)key; |
||||
|
||||
/*!
|
||||
* Returns the NSBundle corresponding to the bundle containing ATConnect's |
||||
* images, xibs, strings files, etc. |
||||
*/ |
||||
+ (NSBundle *)resourceBundle; |
||||
@end |
||||
|
||||
/*! Replacement for NSLocalizedString within ApptentiveConnect. Pulls
|
||||
localized strings out of the resource bundle. */ |
||||
extern NSString *ATLocalizedString(NSString *key, NSString *comment); |
@ -0,0 +1,44 @@
|
||||
<?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>BuildMachineOSBuild</key> |
||||
<string>15C50</string> |
||||
<key>CFBundleDevelopmentRegion</key> |
||||
<string>English</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>ApptentiveConnect</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>com.yourcompany.ApptentiveConnect</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundleName</key> |
||||
<string>ApptentiveConnect</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>FMWK</string> |
||||
<key>CFBundleShortVersionString</key> |
||||
<string>1.0</string> |
||||
<key>CFBundleSignature</key> |
||||
<string>????</string> |
||||
<key>CFBundleSupportedPlatforms</key> |
||||
<array> |
||||
<string>MacOSX</string> |
||||
</array> |
||||
<key>CFBundleVersion</key> |
||||
<string>1</string> |
||||
<key>DTCompiler</key> |
||||
<string>com.apple.compilers.llvm.clang.1_0</string> |
||||
<key>DTPlatformBuild</key> |
||||
<string>7C68</string> |
||||
<key>DTPlatformVersion</key> |
||||
<string>GM</string> |
||||
<key>DTSDKBuild</key> |
||||
<string>15C43</string> |
||||
<key>DTSDKName</key> |
||||
<string>macosx10.11</string> |
||||
<key>DTXcode</key> |
||||
<string>0720</string> |
||||
<key>DTXcodeBuild</key> |
||||
<string>7C68</string> |
||||
</dict> |
||||
</plist> |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 26 KiB |
@ -0,0 +1 @@
|
||||
A |
@ -0,0 +1,939 @@
|
||||
// !$*UTF8*$! |
||||
{ |
||||
archiveVersion = 1; |
||||
classes = { |
||||
}; |
||||
objectVersion = 46; |
||||
objects = { |
||||
|
||||
/* Begin PBXBuildFile section */ |
||||
491CA39015F019E20003BC38 /* PJSONKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 491CA38E15F019E20003BC38 /* PJSONKit.h */; }; |
||||
491CA39115F019E20003BC38 /* PJSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA38F15F019E20003BC38 /* PJSONKit.m */; }; |
||||
491CA39215F019E20003BC38 /* PJSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA38F15F019E20003BC38 /* PJSONKit.m */; }; |
||||
491CA3B515F029630003BC38 /* ATPlaceholderTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 491CA3B315F029630003BC38 /* ATPlaceholderTextView.h */; }; |
||||
491CA3B615F029630003BC38 /* ATPlaceholderTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */; }; |
||||
491CA3B715F029630003BC38 /* ATPlaceholderTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */; }; |
||||
491CA3BB15F0663C0003BC38 /* at_logo_info@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 491CA3BA15F0663C0003BC38 /* at_logo_info@2x.png */; }; |
||||
49598DBC15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 49598DBA15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h */; }; |
||||
49598DBD15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */; }; |
||||
49598DBE15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */; }; |
||||
49626B7913942A7E0093534C /* ApptentiveConnect.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */; }; |
||||
49626B7E13942A9A0093534C /* ATSampleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626B7D13942A9A0093534C /* ATSampleTest.m */; }; |
||||
49626C36139437070093534C /* ATAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C2B139437070093534C /* ATAPIRequest.h */; }; |
||||
49626C37139437070093534C /* ATAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C2C139437070093534C /* ATAPIRequest.m */; }; |
||||
49626C38139437070093534C /* ATConnectionChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C2D139437070093534C /* ATConnectionChannel.h */; }; |
||||
49626C39139437070093534C /* ATConnectionChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C2E139437070093534C /* ATConnectionChannel.m */; }; |
||||
49626C3A139437070093534C /* ATConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C2F139437070093534C /* ATConnectionManager.h */; }; |
||||
49626C3B139437070093534C /* ATConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C30139437070093534C /* ATConnectionManager.m */; }; |
||||
49626C3C139437070093534C /* ATURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C31139437070093534C /* ATURLConnection.h */; }; |
||||
49626C3D139437070093534C /* ATURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C32139437070093534C /* ATURLConnection.m */; }; |
||||
49626C3E139437070093534C /* ATURLConnection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C33139437070093534C /* ATURLConnection_Private.h */; }; |
||||
49626C3F139437070093534C /* ATWebClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C34139437070093534C /* ATWebClient.h */; }; |
||||
49626C40139437070093534C /* ATWebClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C35139437070093534C /* ATWebClient.m */; }; |
||||
49626C46139437580093534C /* NSData+ATBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C44139437580093534C /* NSData+ATBase64.h */; }; |
||||
49626C47139437580093534C /* NSData+ATBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C45139437580093534C /* NSData+ATBase64.m */; }; |
||||
49626C58139437690093534C /* ATUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C56139437690093534C /* ATUtilities.h */; }; |
||||
49626C59139437690093534C /* ATUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C57139437690093534C /* ATUtilities.m */; }; |
||||
49626C67139437DD0093534C /* ATConnect.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C65139437DD0093534C /* ATConnect.h */; settings = {ATTRIBUTES = (Public, ); }; }; |
||||
49626C68139437DD0093534C /* ATConnect.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C66139437DD0093534C /* ATConnect.m */; }; |
||||
49626C7A139439050093534C /* ATBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C72139439050093534C /* ATBackend.h */; }; |
||||
49626C7B139439050093534C /* ATBackend.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C73139439050093534C /* ATBackend.m */; }; |
||||
49626C7C139439050093534C /* ATContactStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C74139439050093534C /* ATContactStorage.h */; }; |
||||
49626C7D139439050093534C /* ATContactStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C75139439050093534C /* ATContactStorage.m */; }; |
||||
49626C80139439050093534C /* ATFeedback.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C78139439050093534C /* ATFeedback.h */; }; |
||||
49626C81139439050093534C /* ATFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C79139439050093534C /* ATFeedback.m */; }; |
||||
49626C9113943C310093534C /* ATReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C8F13943C310093534C /* ATReachability.h */; }; |
||||
49626C9213943C310093534C /* ATReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C9013943C310093534C /* ATReachability.m */; }; |
||||
49626C9613943C520093534C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49626C9513943C520093534C /* SystemConfiguration.framework */; }; |
||||
49626D19139444C20093534C /* ATFeedbackTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D13139444C20093534C /* ATFeedbackTask.h */; }; |
||||
49626D1A139444C20093534C /* ATFeedbackTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D14139444C20093534C /* ATFeedbackTask.m */; }; |
||||
49626D1B139444C20093534C /* ATTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D15139444C20093534C /* ATTask.h */; }; |
||||
49626D1C139444C20093534C /* ATTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D16139444C20093534C /* ATTask.m */; }; |
||||
49626D1D139444C20093534C /* ATTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D17139444C20093534C /* ATTaskQueue.h */; }; |
||||
49626D1E139444C20093534C /* ATTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D18139444C20093534C /* ATTaskQueue.m */; }; |
||||
49626D4F1397047A0093534C /* ATFeedbackWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 49626D4E1397047A0093534C /* ATFeedbackWindow.xib */; }; |
||||
49626D53139704D00093534C /* ATFeedbackWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D51139704D00093534C /* ATFeedbackWindowController.h */; }; |
||||
49626D54139704D00093534C /* ATFeedbackWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D52139704D00093534C /* ATFeedbackWindowController.m */; }; |
||||
4964BF2E17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF2C17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h */; }; |
||||
4964BF2F17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */; }; |
||||
4964BF3017C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */; }; |
||||
4964BF3417C5D13F000DC2E8 /* ATLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF3117C5D13E000DC2E8 /* ATLog.h */; }; |
||||
4964BF3517C5D13F000DC2E8 /* ATLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF3217C5D13F000DC2E8 /* ATLogger.h */; }; |
||||
4964BF3617C5D13F000DC2E8 /* ATLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3317C5D13F000DC2E8 /* ATLogger.m */; }; |
||||
4964BF3717C5D13F000DC2E8 /* ATLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3317C5D13F000DC2E8 /* ATLogger.m */; }; |
||||
4964BF3917C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */; }; |
||||
4964BF3A17C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */; }; |
||||
4964BF3D17C5D2B5000DC2E8 /* ATWebClient_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF3B17C5D2B5000DC2E8 /* ATWebClient_Private.h */; }; |
||||
4964BF3E17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */; }; |
||||
4964BF3F17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */; }; |
||||
4971AFF513BA871600774B70 /* ATImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4971AFF313BA871600774B70 /* ATImageView.h */; }; |
||||
4971AFF613BA871600774B70 /* ATImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4971AFF413BA871600774B70 /* ATImageView.m */; }; |
||||
4971B07913BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4971B07713BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h */; }; |
||||
4971B07A13BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4971B07813BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m */; }; |
||||
4971B47413BFBB7C00774B70 /* at_logo_info.png in Resources */ = {isa = PBXBuildFile; fileRef = 4971B47313BFBB7C00774B70 /* at_logo_info.png */; }; |
||||
4971B4CB13BFBEFF00774B70 /* ATImageButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4971B4C913BFBEFF00774B70 /* ATImageButton.h */; }; |
||||
4971B4CC13BFBEFF00774B70 /* ATImageButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4971B4CA13BFBEFF00774B70 /* ATImageButton.m */; }; |
||||
4972847713CA625D002AD591 /* ATAppRatingFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4972847513CA625D002AD591 /* ATAppRatingFlow.h */; settings = {ATTRIBUTES = (Public, ); }; }; |
||||
4972847813CA625D002AD591 /* ATAppRatingFlow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4972847613CA625D002AD591 /* ATAppRatingFlow.m */; }; |
||||
4982FE74157C0BEF00A1ED63 /* ApptentiveMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE69157C0BEF00A1ED63 /* ApptentiveMetrics.h */; }; |
||||
4982FE75157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */; }; |
||||
4982FE76157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */; }; |
||||
4982FE77157C0BEF00A1ED63 /* ATFeedbackMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE6B157C0BEF00A1ED63 /* ATFeedbackMetrics.h */; }; |
||||
4982FE78157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */; }; |
||||
4982FE79157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */; }; |
||||
4982FE7A157C0BEF00A1ED63 /* ATMetric.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE6D157C0BEF00A1ED63 /* ATMetric.h */; }; |
||||
4982FE7B157C0BEF00A1ED63 /* ATMetric.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6E157C0BEF00A1ED63 /* ATMetric.m */; }; |
||||
4982FE7C157C0BEF00A1ED63 /* ATMetric.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6E157C0BEF00A1ED63 /* ATMetric.m */; }; |
||||
4982FE7D157C0BEF00A1ED63 /* ATSurveyMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE6F157C0BEF00A1ED63 /* ATSurveyMetrics.h */; }; |
||||
4982FE7E157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */; }; |
||||
4982FE7F157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */; }; |
||||
4982FE80157C0BEF00A1ED63 /* ATWebClient+Metrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE72157C0BEF00A1ED63 /* ATWebClient+Metrics.h */; }; |
||||
4982FE81157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */; }; |
||||
4982FE82157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */; }; |
||||
4982FE86157C0C2700A1ED63 /* ATAppConfigurationUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE84157C0C2700A1ED63 /* ATAppConfigurationUpdater.h */; }; |
||||
4982FE87157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */; }; |
||||
4982FE88157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */; }; |
||||
4982FE8D157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE89157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h */; }; |
||||
4982FE8E157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */; }; |
||||
4982FE8F157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */; }; |
||||
4982FE90157C0C3D00A1ED63 /* ATAppRatingMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE8B157C0C3D00A1ED63 /* ATAppRatingMetrics.h */; }; |
||||
4982FE91157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */; }; |
||||
4982FE92157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */; }; |
||||
4982FE94157C0C4D00A1ED63 /* ATWebClient_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE93157C0C4D00A1ED63 /* ATWebClient_Private.h */; }; |
||||
4982FE97157C0C5A00A1ED63 /* ATRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE95157C0C5A00A1ED63 /* ATRecord.h */; }; |
||||
4982FE98157C0C5A00A1ED63 /* ATRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE96157C0C5A00A1ED63 /* ATRecord.m */; }; |
||||
4982FE99157C0C5A00A1ED63 /* ATRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE96157C0C5A00A1ED63 /* ATRecord.m */; }; |
||||
4982FE9C157C0C6700A1ED63 /* ATRecordTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE9A157C0C6700A1ED63 /* ATRecordTask.h */; }; |
||||
4982FE9D157C0C6700A1ED63 /* ATRecordTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */; }; |
||||
4982FE9E157C0C6700A1ED63 /* ATRecordTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */; }; |
||||
4989203013B539D6007967BA /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989202F13B539D6007967BA /* AddressBook.framework */; }; |
||||
4989204B13B53B04007967BA /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989202F13B539D6007967BA /* AddressBook.framework */; }; |
||||
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; |
||||
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; |
||||
9A5951EF1C1D332B009C17AA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5951EE1C1D332B009C17AA /* QuartzCore.framework */; }; |
||||
/* End PBXBuildFile section */ |
||||
|
||||
/* Begin PBXContainerItemProxy section */ |
||||
49626B7713942A760093534C /* PBXContainerItemProxy */ = { |
||||
isa = PBXContainerItemProxy; |
||||
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; |
||||
proxyType = 1; |
||||
remoteGlobalIDString = 8DC2EF4F0486A6940098B216; |
||||
remoteInfo = ApptentiveConnect; |
||||
}; |
||||
/* End PBXContainerItemProxy section */ |
||||
|
||||
/* Begin PBXFileReference section */ |
||||
0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; |
||||
0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; |
||||
089C1667FE841158C02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = resources/English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; |
||||
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; |
||||
32DBCF5E0370ADEE00C91783 /* ApptentiveConnect_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ApptentiveConnect_Prefix.pch; path = source/ApptentiveConnect_Prefix.pch; sourceTree = "<group>"; }; |
||||
491CA38E15F019E20003BC38 /* PJSONKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PJSONKit.h; path = PrefixedJSONKit/PJSONKit.h; sourceTree = "<group>"; }; |
||||
491CA38F15F019E20003BC38 /* PJSONKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PJSONKit.m; path = PrefixedJSONKit/PJSONKit.m; sourceTree = "<group>"; }; |
||||
491CA3B315F029630003BC38 /* ATPlaceholderTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATPlaceholderTextView.h; path = source/Misc/ATPlaceholderTextView.h; sourceTree = "<group>"; }; |
||||
491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATPlaceholderTextView.m; path = source/Misc/ATPlaceholderTextView.m; sourceTree = "<group>"; }; |
||||
491CA3BA15F0663C0003BC38 /* at_logo_info@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "at_logo_info@2x.png"; path = "../apptentive-ios/ApptentiveConnect/art/generated/at_logo_info@2x.png"; sourceTree = "<group>"; }; |
||||
49598DBA15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppConfigurationUpdateTask.h; sourceTree = "<group>"; }; |
||||
49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppConfigurationUpdateTask.m; sourceTree = "<group>"; }; |
||||
49626B6D13942A2B0093534C /* ApptentiveUnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ApptentiveUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||
49626B6E13942A2B0093534C /* ApptentiveUnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "ApptentiveUnitTests-Info.plist"; path = "tests/ApptentiveUnitTests-Info.plist"; sourceTree = "<group>"; }; |
||||
49626B7C13942A9A0093534C /* ATSampleTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATSampleTest.h; path = tests/ATSampleTest.h; sourceTree = "<group>"; }; |
||||
49626B7D13942A9A0093534C /* ATSampleTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATSampleTest.m; path = tests/ATSampleTest.m; sourceTree = "<group>"; }; |
||||
49626C2B139437070093534C /* ATAPIRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAPIRequest.h; sourceTree = "<group>"; }; |
||||
49626C2C139437070093534C /* ATAPIRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAPIRequest.m; sourceTree = "<group>"; }; |
||||
49626C2D139437070093534C /* ATConnectionChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATConnectionChannel.h; sourceTree = "<group>"; }; |
||||
49626C2E139437070093534C /* ATConnectionChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATConnectionChannel.m; sourceTree = "<group>"; }; |
||||
49626C2F139437070093534C /* ATConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATConnectionManager.h; sourceTree = "<group>"; }; |
||||
49626C30139437070093534C /* ATConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATConnectionManager.m; sourceTree = "<group>"; }; |
||||
49626C31139437070093534C /* ATURLConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATURLConnection.h; sourceTree = "<group>"; }; |
||||
49626C32139437070093534C /* ATURLConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATURLConnection.m; sourceTree = "<group>"; }; |
||||
49626C33139437070093534C /* ATURLConnection_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATURLConnection_Private.h; sourceTree = "<group>"; }; |
||||
49626C34139437070093534C /* ATWebClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATWebClient.h; sourceTree = "<group>"; }; |
||||
49626C35139437070093534C /* ATWebClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATWebClient.m; sourceTree = "<group>"; }; |
||||
49626C44139437580093534C /* NSData+ATBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ATBase64.h"; sourceTree = "<group>"; }; |
||||
49626C45139437580093534C /* NSData+ATBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ATBase64.m"; sourceTree = "<group>"; }; |
||||
49626C56139437690093534C /* ATUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATUtilities.h; sourceTree = "<group>"; }; |
||||
49626C57139437690093534C /* ATUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATUtilities.m; sourceTree = "<group>"; }; |
||||
49626C65139437DD0093534C /* ATConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect.h; path = "../apptentive-ios/ApptentiveConnect/source/ATConnect.h"; sourceTree = SOURCE_ROOT; }; |
||||
49626C66139437DD0093534C /* ATConnect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATConnect.m; path = "../apptentive-ios/ApptentiveConnect/source/ATConnect.m"; sourceTree = SOURCE_ROOT; }; |
||||
49626C72139439050093534C /* ATBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATBackend.h; sourceTree = "<group>"; }; |
||||
49626C73139439050093534C /* ATBackend.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATBackend.m; sourceTree = "<group>"; }; |
||||
49626C74139439050093534C /* ATContactStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATContactStorage.h; sourceTree = "<group>"; }; |
||||
49626C75139439050093534C /* ATContactStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATContactStorage.m; sourceTree = "<group>"; }; |
||||
49626C78139439050093534C /* ATFeedback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATFeedback.h; sourceTree = "<group>"; }; |
||||
49626C79139439050093534C /* ATFeedback.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATFeedback.m; sourceTree = "<group>"; }; |
||||
49626C8F13943C310093534C /* ATReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATReachability.h; sourceTree = "<group>"; }; |
||||
49626C9013943C310093534C /* ATReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATReachability.m; sourceTree = "<group>"; }; |
||||
49626C9513943C520093534C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; |
||||
49626D13139444C20093534C /* ATFeedbackTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATFeedbackTask.h; sourceTree = "<group>"; }; |
||||
49626D14139444C20093534C /* ATFeedbackTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATFeedbackTask.m; sourceTree = "<group>"; }; |
||||
49626D15139444C20093534C /* ATTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATTask.h; sourceTree = "<group>"; }; |
||||
49626D16139444C20093534C /* ATTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATTask.m; sourceTree = "<group>"; }; |
||||
49626D17139444C20093534C /* ATTaskQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATTaskQueue.h; sourceTree = "<group>"; }; |
||||
49626D18139444C20093534C /* ATTaskQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATTaskQueue.m; sourceTree = "<group>"; }; |
||||
49626D4E1397047A0093534C /* ATFeedbackWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ATFeedbackWindow.xib; sourceTree = "<group>"; }; |
||||
49626D51139704D00093534C /* ATFeedbackWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATFeedbackWindowController.h; path = source/Controllers/ATFeedbackWindowController.h; sourceTree = "<group>"; }; |
||||
49626D52139704D00093534C /* ATFeedbackWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATFeedbackWindowController.m; path = source/Controllers/ATFeedbackWindowController.m; sourceTree = "<group>"; }; |
||||
4964BF2C17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATStaticLibraryBootstrap.h; sourceTree = "<group>"; }; |
||||
4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATStaticLibraryBootstrap.m; sourceTree = "<group>"; }; |
||||
4964BF3117C5D13E000DC2E8 /* ATLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLog.h; sourceTree = "<group>"; }; |
||||
4964BF3217C5D13F000DC2E8 /* ATLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLogger.h; sourceTree = "<group>"; }; |
||||
4964BF3317C5D13F000DC2E8 /* ATLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLogger.m; sourceTree = "<group>"; }; |
||||
4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATURLConnection_Private.m; sourceTree = "<group>"; }; |
||||
4964BF3B17C5D2B5000DC2E8 /* ATWebClient_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATWebClient_Private.h; sourceTree = "<group>"; }; |
||||
4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATWebClient_Private.m; sourceTree = "<group>"; }; |
||||
4971AFF313BA871600774B70 /* ATImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATImageView.h; path = source/Misc/ATImageView.h; sourceTree = "<group>"; }; |
||||
4971AFF413BA871600774B70 /* ATImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATImageView.m; path = source/Misc/ATImageView.m; sourceTree = "<group>"; }; |
||||
4971B07713BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect_FeedbackWindowPrivate.h; path = source/Misc/ATConnect_FeedbackWindowPrivate.h; sourceTree = "<group>"; }; |
||||
4971B07813BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATConnect_FeedbackWindowPrivate.m; path = source/Misc/ATConnect_FeedbackWindowPrivate.m; sourceTree = "<group>"; }; |
||||
4971B47313BFBB7C00774B70 /* at_logo_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = at_logo_info.png; path = "../apptentive-ios/ApptentiveConnect/art/generated/at_logo_info.png"; sourceTree = SOURCE_ROOT; }; |
||||
4971B4C913BFBEFF00774B70 /* ATImageButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATImageButton.h; path = source/Misc/ATImageButton.h; sourceTree = "<group>"; }; |
||||
4971B4CA13BFBEFF00774B70 /* ATImageButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATImageButton.m; path = source/Misc/ATImageButton.m; sourceTree = "<group>"; }; |
||||
4972847513CA625D002AD591 /* ATAppRatingFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppRatingFlow.h; sourceTree = "<group>"; }; |
||||
4972847613CA625D002AD591 /* ATAppRatingFlow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppRatingFlow.m; sourceTree = "<group>"; }; |
||||
4982FE69157C0BEF00A1ED63 /* ApptentiveMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApptentiveMetrics.h; sourceTree = "<group>"; }; |
||||
4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApptentiveMetrics.m; sourceTree = "<group>"; }; |
||||
4982FE6B157C0BEF00A1ED63 /* ATFeedbackMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATFeedbackMetrics.h; sourceTree = "<group>"; }; |
||||
4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATFeedbackMetrics.m; sourceTree = "<group>"; }; |
||||
4982FE6D157C0BEF00A1ED63 /* ATMetric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATMetric.h; sourceTree = "<group>"; }; |
||||
4982FE6E157C0BEF00A1ED63 /* ATMetric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATMetric.m; sourceTree = "<group>"; }; |
||||
4982FE6F157C0BEF00A1ED63 /* ATSurveyMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATSurveyMetrics.h; sourceTree = "<group>"; }; |
||||
4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATSurveyMetrics.m; sourceTree = "<group>"; }; |
||||
4982FE72157C0BEF00A1ED63 /* ATWebClient+Metrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ATWebClient+Metrics.h"; sourceTree = "<group>"; }; |
||||
4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ATWebClient+Metrics.m"; sourceTree = "<group>"; }; |
||||
4982FE84157C0C2700A1ED63 /* ATAppConfigurationUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppConfigurationUpdater.h; sourceTree = "<group>"; }; |
||||
4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppConfigurationUpdater.m; sourceTree = "<group>"; }; |
||||
4982FE89157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppRatingFlow_Private.h; sourceTree = "<group>"; }; |
||||
4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppRatingFlow_Private.m; sourceTree = "<group>"; }; |
||||
4982FE8B157C0C3D00A1ED63 /* ATAppRatingMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppRatingMetrics.h; sourceTree = "<group>"; }; |
||||
4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppRatingMetrics.m; sourceTree = "<group>"; }; |
||||
4982FE93157C0C4D00A1ED63 /* ATWebClient_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATWebClient_Private.h; sourceTree = "<group>"; }; |
||||
4982FE95157C0C5A00A1ED63 /* ATRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATRecord.h; sourceTree = "<group>"; }; |
||||
4982FE96157C0C5A00A1ED63 /* ATRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATRecord.m; sourceTree = "<group>"; }; |
||||
4982FE9A157C0C6700A1ED63 /* ATRecordTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATRecordTask.h; sourceTree = "<group>"; }; |
||||
4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATRecordTask.m; sourceTree = "<group>"; }; |
||||
4989202F13B539D6007967BA /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; |
||||
8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = resources/Info.plist; sourceTree = "<group>"; }; |
||||
8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ApptentiveConnect.framework; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||
9A5951EE1C1D332B009C17AA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; |
||||
D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; |
||||
/* End PBXFileReference section */ |
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */ |
||||
49626B6A13942A2B0093534C /* Frameworks */ = { |
||||
isa = PBXFrameworksBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
49626B7913942A7E0093534C /* ApptentiveConnect.framework in Frameworks */, |
||||
4989203013B539D6007967BA /* AddressBook.framework in Frameworks */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
8DC2EF560486A6940098B216 /* Frameworks */ = { |
||||
isa = PBXFrameworksBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
9A5951EF1C1D332B009C17AA /* QuartzCore.framework in Frameworks */, |
||||
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */, |
||||
49626C9613943C520093534C /* SystemConfiguration.framework in Frameworks */, |
||||
4989204B13B53B04007967BA /* AddressBook.framework in Frameworks */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXFrameworksBuildPhase section */ |
||||
|
||||
/* Begin PBXGroup section */ |
||||
034768DFFF38A50411DB9C8B /* Products */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */, |
||||
49626B6D13942A2B0093534C /* ApptentiveUnitTests.octest */, |
||||
); |
||||
name = Products; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
0867D691FE84028FC02AAC07 /* ApptentiveConnect */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
9A5951EE1C1D332B009C17AA /* QuartzCore.framework */, |
||||
49626BF5139436580093534C /* ext */, |
||||
49626B7313942A4D0093534C /* source */, |
||||
49626D4B139703D40093534C /* xibs */, |
||||
49626B7413942A560093534C /* resources */, |
||||
49626B7613942A630093534C /* tests */, |
||||
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, |
||||
034768DFFF38A50411DB9C8B /* Products */, |
||||
); |
||||
name = ApptentiveConnect; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */, |
||||
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */, |
||||
); |
||||
name = "External Frameworks and Libraries"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */, |
||||
49626C9513943C520093534C /* SystemConfiguration.framework */, |
||||
4989202F13B539D6007967BA /* AddressBook.framework */, |
||||
); |
||||
name = "Linked Frameworks"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
0867D6A5FE840307C02AAC07 /* AppKit.framework */, |
||||
D2F7E79907B2D74100F64583 /* CoreData.framework */, |
||||
0867D69BFE84028FC02AAC07 /* Foundation.framework */, |
||||
); |
||||
name = "Other Frameworks"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626B7313942A4D0093534C /* source */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
32DBCF5E0370ADEE00C91783 /* ApptentiveConnect_Prefix.pch */, |
||||
49626D51139704D00093534C /* ATFeedbackWindowController.h */, |
||||
49626D52139704D00093534C /* ATFeedbackWindowController.m */, |
||||
4971AFF313BA871600774B70 /* ATImageView.h */, |
||||
4971AFF413BA871600774B70 /* ATImageView.m */, |
||||
4971B07713BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h */, |
||||
4971B07813BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m */, |
||||
4971B4C913BFBEFF00774B70 /* ATImageButton.h */, |
||||
4971B4CA13BFBEFF00774B70 /* ATImageButton.m */, |
||||
491CA3B315F029630003BC38 /* ATPlaceholderTextView.h */, |
||||
491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */, |
||||
); |
||||
name = source; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626B7413942A560093534C /* resources */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4971B47313BFBB7C00774B70 /* at_logo_info.png */, |
||||
491CA3BA15F0663C0003BC38 /* at_logo_info@2x.png */, |
||||
8DC2EF5A0486A6940098B216 /* Info.plist */, |
||||
089C1666FE841158C02AAC07 /* InfoPlist.strings */, |
||||
); |
||||
name = resources; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626B7613942A630093534C /* tests */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626B6E13942A2B0093534C /* ApptentiveUnitTests-Info.plist */, |
||||
49626B7C13942A9A0093534C /* ATSampleTest.h */, |
||||
49626B7D13942A9A0093534C /* ATSampleTest.m */, |
||||
); |
||||
name = tests; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626BF5139436580093534C /* ext */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626BF6139436600093534C /* apptentive-ios */, |
||||
); |
||||
name = ext; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626BF6139436600093534C /* apptentive-ios */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626C43139437580093534C /* ext */, |
||||
49626BFB1394367B0093534C /* source */, |
||||
); |
||||
name = "apptentive-ios"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626BFB1394367B0093534C /* source */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626C65139437DD0093534C /* ATConnect.h */, |
||||
49626C66139437DD0093534C /* ATConnect.m */, |
||||
4982FE68157C0BEF00A1ED63 /* Metrics */, |
||||
49626C55139437690093534C /* Misc */, |
||||
4972847413CA625D002AD591 /* Rating Flow */, |
||||
49626C71139439050093534C /* Persistence */, |
||||
49626C8E13943C310093534C /* Reachability */, |
||||
49626D12139444C20093534C /* Tasks */, |
||||
49626C2A139437070093534C /* URL Loading */, |
||||
); |
||||
name = source; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626C2A139437070093534C /* URL Loading */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4982FE93157C0C4D00A1ED63 /* ATWebClient_Private.h */, |
||||
49626C2B139437070093534C /* ATAPIRequest.h */, |
||||
49626C2C139437070093534C /* ATAPIRequest.m */, |
||||
49626C2D139437070093534C /* ATConnectionChannel.h */, |
||||
49626C2E139437070093534C /* ATConnectionChannel.m */, |
||||
49626C2F139437070093534C /* ATConnectionManager.h */, |
||||
49626C30139437070093534C /* ATConnectionManager.m */, |
||||
49626C31139437070093534C /* ATURLConnection.h */, |
||||
49626C32139437070093534C /* ATURLConnection.m */, |
||||
49626C33139437070093534C /* ATURLConnection_Private.h */, |
||||
4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */, |
||||
49626C34139437070093534C /* ATWebClient.h */, |
||||
49626C35139437070093534C /* ATWebClient.m */, |
||||
4964BF3B17C5D2B5000DC2E8 /* ATWebClient_Private.h */, |
||||
4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */, |
||||
); |
||||
name = "URL Loading"; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/URL Loading"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
49626C43139437580093534C /* ext */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626C44139437580093534C /* NSData+ATBase64.h */, |
||||
49626C45139437580093534C /* NSData+ATBase64.m */, |
||||
491CA38E15F019E20003BC38 /* PJSONKit.h */, |
||||
491CA38F15F019E20003BC38 /* PJSONKit.m */, |
||||
); |
||||
name = ext; |
||||
path = "../apptentive-ios/ApptentiveConnect/ext"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
49626C55139437690093534C /* Misc */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4964BF3117C5D13E000DC2E8 /* ATLog.h */, |
||||
4964BF3217C5D13F000DC2E8 /* ATLogger.h */, |
||||
4964BF3317C5D13F000DC2E8 /* ATLogger.m */, |
||||
49626C56139437690093534C /* ATUtilities.h */, |
||||
49626C57139437690093534C /* ATUtilities.m */, |
||||
4964BF2C17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h */, |
||||
4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */, |
||||
); |
||||
name = Misc; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/Misc"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
49626C71139439050093534C /* Persistence */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626C72139439050093534C /* ATBackend.h */, |
||||
49626C73139439050093534C /* ATBackend.m */, |
||||
49626C74139439050093534C /* ATContactStorage.h */, |
||||
49626C75139439050093534C /* ATContactStorage.m */, |
||||
49626C78139439050093534C /* ATFeedback.h */, |
||||
49626C79139439050093534C /* ATFeedback.m */, |
||||
4982FE84157C0C2700A1ED63 /* ATAppConfigurationUpdater.h */, |
||||
4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */, |
||||
4982FE95157C0C5A00A1ED63 /* ATRecord.h */, |
||||
4982FE96157C0C5A00A1ED63 /* ATRecord.m */, |
||||
); |
||||
name = Persistence; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/Persistence"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
49626C8E13943C310093534C /* Reachability */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626C8F13943C310093534C /* ATReachability.h */, |
||||
49626C9013943C310093534C /* ATReachability.m */, |
||||
); |
||||
name = Reachability; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/Reachability"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
49626D12139444C20093534C /* Tasks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49598DBA15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h */, |
||||
49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */, |
||||
4982FE9A157C0C6700A1ED63 /* ATRecordTask.h */, |
||||
4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */, |
||||
49626D13139444C20093534C /* ATFeedbackTask.h */, |
||||
49626D14139444C20093534C /* ATFeedbackTask.m */, |
||||
49626D15139444C20093534C /* ATTask.h */, |
||||
49626D16139444C20093534C /* ATTask.m */, |
||||
49626D17139444C20093534C /* ATTaskQueue.h */, |
||||
49626D18139444C20093534C /* ATTaskQueue.m */, |
||||
); |
||||
name = Tasks; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/Tasks"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
49626D4B139703D40093534C /* xibs */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626D4E1397047A0093534C /* ATFeedbackWindow.xib */, |
||||
); |
||||
path = xibs; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
4972847413CA625D002AD591 /* Rating Flow */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4972847513CA625D002AD591 /* ATAppRatingFlow.h */, |
||||
4972847613CA625D002AD591 /* ATAppRatingFlow.m */, |
||||
4982FE89157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h */, |
||||
4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */, |
||||
4982FE8B157C0C3D00A1ED63 /* ATAppRatingMetrics.h */, |
||||
4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */, |
||||
); |
||||
name = "Rating Flow"; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/Rating Flow"; |
||||
sourceTree = SOURCE_ROOT; |
||||
}; |
||||
4982FE68157C0BEF00A1ED63 /* Metrics */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4982FE69157C0BEF00A1ED63 /* ApptentiveMetrics.h */, |
||||
4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */, |
||||
4982FE6B157C0BEF00A1ED63 /* ATFeedbackMetrics.h */, |
||||
4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */, |
||||
4982FE6D157C0BEF00A1ED63 /* ATMetric.h */, |
||||
4982FE6E157C0BEF00A1ED63 /* ATMetric.m */, |
||||
4982FE6F157C0BEF00A1ED63 /* ATSurveyMetrics.h */, |
||||
4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */, |
||||
4982FE71157C0BEF00A1ED63 /* URL Loading */, |
||||
); |
||||
name = Metrics; |
||||
path = "../apptentive-ios/ApptentiveConnect/source/Metrics"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
4982FE71157C0BEF00A1ED63 /* URL Loading */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4982FE72157C0BEF00A1ED63 /* ATWebClient+Metrics.h */, |
||||
4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */, |
||||
); |
||||
path = "URL Loading"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXGroup section */ |
||||
|
||||
/* Begin PBXHeadersBuildPhase section */ |
||||
8DC2EF500486A6940098B216 /* Headers */ = { |
||||
isa = PBXHeadersBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
49626C36139437070093534C /* ATAPIRequest.h in Headers */, |
||||
49626C38139437070093534C /* ATConnectionChannel.h in Headers */, |
||||
49626C3A139437070093534C /* ATConnectionManager.h in Headers */, |
||||
49626C3C139437070093534C /* ATURLConnection.h in Headers */, |
||||
49626C3E139437070093534C /* ATURLConnection_Private.h in Headers */, |
||||
49626C3F139437070093534C /* ATWebClient.h in Headers */, |
||||
49626C46139437580093534C /* NSData+ATBase64.h in Headers */, |
||||
49626C58139437690093534C /* ATUtilities.h in Headers */, |
||||
49626C67139437DD0093534C /* ATConnect.h in Headers */, |
||||
49626C7A139439050093534C /* ATBackend.h in Headers */, |
||||
49626C7C139439050093534C /* ATContactStorage.h in Headers */, |
||||
49626C80139439050093534C /* ATFeedback.h in Headers */, |
||||
49626C9113943C310093534C /* ATReachability.h in Headers */, |
||||
49626D19139444C20093534C /* ATFeedbackTask.h in Headers */, |
||||
49626D1B139444C20093534C /* ATTask.h in Headers */, |
||||
49626D1D139444C20093534C /* ATTaskQueue.h in Headers */, |
||||
49626D53139704D00093534C /* ATFeedbackWindowController.h in Headers */, |
||||
4971AFF513BA871600774B70 /* ATImageView.h in Headers */, |
||||
4971B07913BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h in Headers */, |
||||
4971B4CB13BFBEFF00774B70 /* ATImageButton.h in Headers */, |
||||
4972847713CA625D002AD591 /* ATAppRatingFlow.h in Headers */, |
||||
4982FE74157C0BEF00A1ED63 /* ApptentiveMetrics.h in Headers */, |
||||
4982FE77157C0BEF00A1ED63 /* ATFeedbackMetrics.h in Headers */, |
||||
4982FE7A157C0BEF00A1ED63 /* ATMetric.h in Headers */, |
||||
4982FE7D157C0BEF00A1ED63 /* ATSurveyMetrics.h in Headers */, |
||||
4982FE80157C0BEF00A1ED63 /* ATWebClient+Metrics.h in Headers */, |
||||
4982FE86157C0C2700A1ED63 /* ATAppConfigurationUpdater.h in Headers */, |
||||
4982FE8D157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h in Headers */, |
||||
4982FE90157C0C3D00A1ED63 /* ATAppRatingMetrics.h in Headers */, |
||||
4982FE94157C0C4D00A1ED63 /* ATWebClient_Private.h in Headers */, |
||||
4982FE97157C0C5A00A1ED63 /* ATRecord.h in Headers */, |
||||
4982FE9C157C0C6700A1ED63 /* ATRecordTask.h in Headers */, |
||||
49598DBC15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h in Headers */, |
||||
491CA39015F019E20003BC38 /* PJSONKit.h in Headers */, |
||||
491CA3B515F029630003BC38 /* ATPlaceholderTextView.h in Headers */, |
||||
4964BF2E17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h in Headers */, |
||||
4964BF3417C5D13F000DC2E8 /* ATLog.h in Headers */, |
||||
4964BF3517C5D13F000DC2E8 /* ATLogger.h in Headers */, |
||||
4964BF3D17C5D2B5000DC2E8 /* ATWebClient_Private.h in Headers */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXHeadersBuildPhase section */ |
||||
|
||||
/* Begin PBXNativeTarget section */ |
||||
49626B6C13942A2B0093534C /* ApptentiveUnitTests */ = { |
||||
isa = PBXNativeTarget; |
||||
buildConfigurationList = 49626B7213942A2B0093534C /* Build configuration list for PBXNativeTarget "ApptentiveUnitTests" */; |
||||
buildPhases = ( |
||||
49626B6813942A2B0093534C /* Resources */, |
||||
49626B6913942A2B0093534C /* Sources */, |
||||
49626B6A13942A2B0093534C /* Frameworks */, |
||||
49626B6B13942A2B0093534C /* ShellScript */, |
||||
); |
||||
buildRules = ( |
||||
); |
||||
dependencies = ( |
||||
49626B7813942A760093534C /* PBXTargetDependency */, |
||||
); |
||||
name = ApptentiveUnitTests; |
||||
productName = ApptentiveUnitTests; |
||||
productReference = 49626B6D13942A2B0093534C /* ApptentiveUnitTests.octest */; |
||||
productType = "com.apple.product-type.bundle.ocunit-test"; |
||||
}; |
||||
8DC2EF4F0486A6940098B216 /* ApptentiveConnect */ = { |
||||
isa = PBXNativeTarget; |
||||
buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "ApptentiveConnect" */; |
||||
buildPhases = ( |
||||
4964BF4717C5D74E000DC2E8 /* Localize (Release Only) */, |
||||
8DC2EF500486A6940098B216 /* Headers */, |
||||
8DC2EF520486A6940098B216 /* Resources */, |
||||
8DC2EF540486A6940098B216 /* Sources */, |
||||
8DC2EF560486A6940098B216 /* Frameworks */, |
||||
); |
||||
buildRules = ( |
||||
); |
||||
dependencies = ( |
||||
); |
||||
name = ApptentiveConnect; |
||||
productInstallPath = "$(HOME)/Library/Frameworks"; |
||||
productName = ApptentiveConnect; |
||||
productReference = 8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */; |
||||
productType = "com.apple.product-type.framework"; |
||||
}; |
||||
/* End PBXNativeTarget section */ |
||||
|
||||
/* Begin PBXProject section */ |
||||
0867D690FE84028FC02AAC07 /* Project object */ = { |
||||
isa = PBXProject; |
||||
attributes = { |
||||
LastUpgradeCheck = 0420; |
||||
ORGANIZATIONNAME = "Apptentive, Inc."; |
||||
}; |
||||
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "ApptentiveConnect" */; |
||||
compatibilityVersion = "Xcode 3.2"; |
||||
developmentRegion = English; |
||||
hasScannedForEncodings = 1; |
||||
knownRegions = ( |
||||
English, |
||||
Japanese, |
||||
French, |
||||
German, |
||||
); |
||||
mainGroup = 0867D691FE84028FC02AAC07 /* ApptentiveConnect */; |
||||
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; |
||||
projectDirPath = ""; |
||||
projectRoot = ""; |
||||
targets = ( |
||||
8DC2EF4F0486A6940098B216 /* ApptentiveConnect */, |
||||
49626B6C13942A2B0093534C /* ApptentiveUnitTests */, |
||||
); |
||||
}; |
||||
/* End PBXProject section */ |
||||
|
||||
/* Begin PBXResourcesBuildPhase section */ |
||||
49626B6813942A2B0093534C /* Resources */ = { |
||||
isa = PBXResourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
8DC2EF520486A6940098B216 /* Resources */ = { |
||||
isa = PBXResourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, |
||||
49626D4F1397047A0093534C /* ATFeedbackWindow.xib in Resources */, |
||||
4971B47413BFBB7C00774B70 /* at_logo_info.png in Resources */, |
||||
491CA3BB15F0663C0003BC38 /* at_logo_info@2x.png in Resources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXResourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */ |
||||
49626B6B13942A2B0093534C /* ShellScript */ = { |
||||
isa = PBXShellScriptBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
); |
||||
inputPaths = ( |
||||
); |
||||
outputPaths = ( |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
shellPath = /bin/sh; |
||||
shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; |
||||
}; |
||||
4964BF4717C5D74E000DC2E8 /* Localize (Release Only) */ = { |
||||
isa = PBXShellScriptBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
); |
||||
inputPaths = ( |
||||
); |
||||
name = "Localize (Release Only)"; |
||||
outputPaths = ( |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
shellPath = /bin/sh; |
||||
shellScript = "echo \"Configuration is: ${CONFIGURATION}\"\nif [ \"${CONFIGURATION}\" = 'Release' ]; then\n if [ -e \"${PROJECT_DIR}/resources/English.lproj/Localizable.strings\" ]; then\n rm \"${PROJECT_DIR}/resources/English.lproj/Localizable.strings\"\n fi\n find \"${PROJECT_DIR}/source/\" -name *.m -print0 | xargs -0 genstrings -s ATLocalizedString -o \"${PROJECT_DIR}/resources/English.lproj\"\nfi"; |
||||
}; |
||||
/* End PBXShellScriptBuildPhase section */ |
||||
|
||||
/* Begin PBXSourcesBuildPhase section */ |
||||
49626B6913942A2B0093534C /* Sources */ = { |
||||
isa = PBXSourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
49626B7E13942A9A0093534C /* ATSampleTest.m in Sources */, |
||||
4982FE76157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */, |
||||
4982FE79157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */, |
||||
4982FE7C157C0BEF00A1ED63 /* ATMetric.m in Sources */, |
||||
4982FE7F157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */, |
||||
4982FE82157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */, |
||||
4982FE88157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */, |
||||
4982FE8F157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */, |
||||
4982FE92157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */, |
||||
4982FE99157C0C5A00A1ED63 /* ATRecord.m in Sources */, |
||||
4982FE9E157C0C6700A1ED63 /* ATRecordTask.m in Sources */, |
||||
49598DBE15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */, |
||||
491CA39215F019E20003BC38 /* PJSONKit.m in Sources */, |
||||
491CA3B715F029630003BC38 /* ATPlaceholderTextView.m in Sources */, |
||||
4964BF3017C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */, |
||||
4964BF3717C5D13F000DC2E8 /* ATLogger.m in Sources */, |
||||
4964BF3A17C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */, |
||||
4964BF3F17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
8DC2EF540486A6940098B216 /* Sources */ = { |
||||
isa = PBXSourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
49626C37139437070093534C /* ATAPIRequest.m in Sources */, |
||||
49626C39139437070093534C /* ATConnectionChannel.m in Sources */, |
||||
49626C3B139437070093534C /* ATConnectionManager.m in Sources */, |
||||
49626C3D139437070093534C /* ATURLConnection.m in Sources */, |
||||
49626C40139437070093534C /* ATWebClient.m in Sources */, |
||||
49626C47139437580093534C /* NSData+ATBase64.m in Sources */, |
||||
49626C59139437690093534C /* ATUtilities.m in Sources */, |
||||
49626C68139437DD0093534C /* ATConnect.m in Sources */, |
||||
49626C7B139439050093534C /* ATBackend.m in Sources */, |
||||
49626C7D139439050093534C /* ATContactStorage.m in Sources */, |
||||
49626C81139439050093534C /* ATFeedback.m in Sources */, |
||||
49626C9213943C310093534C /* ATReachability.m in Sources */, |
||||
49626D1A139444C20093534C /* ATFeedbackTask.m in Sources */, |
||||
49626D1C139444C20093534C /* ATTask.m in Sources */, |
||||
49626D1E139444C20093534C /* ATTaskQueue.m in Sources */, |
||||
49626D54139704D00093534C /* ATFeedbackWindowController.m in Sources */, |
||||
4971AFF613BA871600774B70 /* ATImageView.m in Sources */, |
||||
4971B07A13BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m in Sources */, |
||||
4971B4CC13BFBEFF00774B70 /* ATImageButton.m in Sources */, |
||||
4972847813CA625D002AD591 /* ATAppRatingFlow.m in Sources */, |
||||
4982FE75157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */, |
||||
4982FE78157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */, |
||||
4982FE7B157C0BEF00A1ED63 /* ATMetric.m in Sources */, |
||||
4982FE7E157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */, |
||||
4982FE81157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */, |
||||
4982FE87157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */, |
||||
4982FE8E157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */, |
||||
4982FE91157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */, |
||||
4982FE98157C0C5A00A1ED63 /* ATRecord.m in Sources */, |
||||
4982FE9D157C0C6700A1ED63 /* ATRecordTask.m in Sources */, |
||||
49598DBD15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */, |
||||
491CA39115F019E20003BC38 /* PJSONKit.m in Sources */, |
||||
491CA3B615F029630003BC38 /* ATPlaceholderTextView.m in Sources */, |
||||
4964BF2F17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */, |
||||
4964BF3617C5D13F000DC2E8 /* ATLogger.m in Sources */, |
||||
4964BF3917C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */, |
||||
4964BF3E17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXSourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXTargetDependency section */ |
||||
49626B7813942A760093534C /* PBXTargetDependency */ = { |
||||
isa = PBXTargetDependency; |
||||
target = 8DC2EF4F0486A6940098B216 /* ApptentiveConnect */; |
||||
targetProxy = 49626B7713942A760093534C /* PBXContainerItemProxy */; |
||||
}; |
||||
/* End PBXTargetDependency section */ |
||||
|
||||
/* Begin PBXVariantGroup section */ |
||||
089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { |
||||
isa = PBXVariantGroup; |
||||
children = ( |
||||
089C1667FE841158C02AAC07 /* InfoPlist.strings */, |
||||
); |
||||
name = InfoPlist.strings; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXVariantGroup section */ |
||||
|
||||
/* Begin XCBuildConfiguration section */ |
||||
1DEB91AE08733DA50010E9CD /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
COPY_PHASE_STRIP = NO; |
||||
DYLIB_COMPATIBILITY_VERSION = 1; |
||||
DYLIB_CURRENT_VERSION = 1; |
||||
FRAMEWORK_VERSION = A; |
||||
GCC_DYNAMIC_NO_PIC = NO; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = source/ApptentiveConnect_Prefix.pch; |
||||
GCC_PREPROCESSOR_DEFINITIONS = ( |
||||
"JSONKIT_PREFIX=AT", |
||||
"APPTENTIVE_DEBUG=1", |
||||
"AT_LOGGING_LEVEL_INFO=1", |
||||
"AT_LOGGING_LEVEL_DEBUG=1", |
||||
"AT_LOGGING_LEVEL_ERROR=1", |
||||
); |
||||
INFOPLIST_FILE = resources/Info.plist; |
||||
INSTALL_PATH = "@executable_path/../Frameworks"; |
||||
PRODUCT_NAME = ApptentiveConnect; |
||||
WRAPPER_EXTENSION = framework; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
1DEB91AF08733DA50010E9CD /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
||||
DYLIB_COMPATIBILITY_VERSION = 1; |
||||
DYLIB_CURRENT_VERSION = 1; |
||||
FRAMEWORK_VERSION = A; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = source/ApptentiveConnect_Prefix.pch; |
||||
GCC_PREPROCESSOR_DEFINITIONS = ( |
||||
"JSONKIT_PREFIX=AT", |
||||
"AT_LOGGING_LEVEL_INFO=1", |
||||
"AT_LOGGING_LEVEL_ERROR=1", |
||||
); |
||||
INFOPLIST_FILE = resources/Info.plist; |
||||
INSTALL_PATH = "@executable_path/../Frameworks"; |
||||
PRODUCT_NAME = ApptentiveConnect; |
||||
WRAPPER_EXTENSION = framework; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
1DEB91B208733DA50010E9CD /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; |
||||
GCC_C_LANGUAGE_STANDARD = gnu99; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
MACOSX_DEPLOYMENT_TARGET = 10.7; |
||||
ONLY_ACTIVE_ARCH = YES; |
||||
SDKROOT = macosx; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
1DEB91B308733DA50010E9CD /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; |
||||
GCC_C_LANGUAGE_STANDARD = gnu99; |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
MACOSX_DEPLOYMENT_TARGET = 10.7; |
||||
SDKROOT = macosx; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
49626B7013942A2B0093534C /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
COPY_PHASE_STRIP = NO; |
||||
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; |
||||
GCC_DYNAMIC_NO_PIC = NO; |
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; |
||||
INFOPLIST_FILE = "tests/ApptentiveUnitTests-Info.plist"; |
||||
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; |
||||
OTHER_LDFLAGS = ( |
||||
"-framework", |
||||
Cocoa, |
||||
"-framework", |
||||
SenTestingKit, |
||||
); |
||||
PRODUCT_NAME = ApptentiveUnitTests; |
||||
WRAPPER_EXTENSION = octest; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
49626B7113942A2B0093534C /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
COPY_PHASE_STRIP = YES; |
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
||||
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; |
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; |
||||
INFOPLIST_FILE = "tests/ApptentiveUnitTests-Info.plist"; |
||||
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; |
||||
OTHER_LDFLAGS = ( |
||||
"-framework", |
||||
Cocoa, |
||||
"-framework", |
||||
SenTestingKit, |
||||
); |
||||
PRODUCT_NAME = ApptentiveUnitTests; |
||||
WRAPPER_EXTENSION = octest; |
||||
ZERO_LINK = NO; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
/* End XCBuildConfiguration section */ |
||||
|
||||
/* Begin XCConfigurationList section */ |
||||
1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "ApptentiveConnect" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
1DEB91AE08733DA50010E9CD /* Debug */, |
||||
1DEB91AF08733DA50010E9CD /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "ApptentiveConnect" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
1DEB91B208733DA50010E9CD /* Debug */, |
||||
1DEB91B308733DA50010E9CD /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
49626B7213942A2B0093534C /* Build configuration list for PBXNativeTarget "ApptentiveUnitTests" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
49626B7013942A2B0093534C /* Debug */, |
||||
49626B7113942A2B0093534C /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
/* End XCConfigurationList section */ |
||||
}; |
||||
rootObject = 0867D690FE84028FC02AAC07 /* Project object */; |
||||
} |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Workspace |
||||
version = "1.0"> |
||||
<FileRef |
||||
location = "self:"> |
||||
</FileRef> |
||||
</Workspace> |
@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0720" |
||||
version = "1.3"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "8DC2EF4F0486A6940098B216" |
||||
BuildableName = "ApptentiveConnect.framework" |
||||
BlueprintName = "ApptentiveConnect" |
||||
ReferencedContainer = "container:ApptentiveConnect.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 = "8DC2EF4F0486A6940098B216" |
||||
BuildableName = "ApptentiveConnect.framework" |
||||
BlueprintName = "ApptentiveConnect" |
||||
ReferencedContainer = "container:ApptentiveConnect.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
buildConfiguration = "Release" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
debugDocumentVersioning = "YES"> |
||||
<MacroExpansion> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "8DC2EF4F0486A6940098B216" |
||||
BuildableName = "ApptentiveConnect.framework" |
||||
BlueprintName = "ApptentiveConnect" |
||||
ReferencedContainer = "container:ApptentiveConnect.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 = "0720" |
||||
version = "1.3"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "49626B6C13942A2B0093534C" |
||||
BuildableName = "ApptentiveUnitTests.octest" |
||||
BlueprintName = "ApptentiveUnitTests" |
||||
ReferencedContainer = "container:ApptentiveConnect.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 = "49626B6C13942A2B0093534C" |
||||
BuildableName = "ApptentiveUnitTests.octest" |
||||
BlueprintName = "ApptentiveUnitTests" |
||||
ReferencedContainer = "container:ApptentiveConnect.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
buildConfiguration = "Release" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
debugDocumentVersioning = "YES"> |
||||
<MacroExpansion> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "49626B6C13942A2B0093534C" |
||||
BuildableName = "ApptentiveUnitTests.octest" |
||||
BlueprintName = "ApptentiveUnitTests" |
||||
ReferencedContainer = "container:ApptentiveConnect.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
@ -0,0 +1,32 @@
|
||||
<?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>SchemeUserState</key> |
||||
<dict> |
||||
<key>ApptentiveConnect.xcscheme</key> |
||||
<dict> |
||||
<key>orderHint</key> |
||||
<integer>0</integer> |
||||
</dict> |
||||
<key>ApptentiveUnitTests.xcscheme</key> |
||||
<dict> |
||||
<key>orderHint</key> |
||||
<integer>1</integer> |
||||
</dict> |
||||
</dict> |
||||
<key>SuppressBuildableAutocreation</key> |
||||
<dict> |
||||
<key>49626B6C13942A2B0093534C</key> |
||||
<dict> |
||||
<key>primary</key> |
||||
<true/> |
||||
</dict> |
||||
<key>8DC2EF4F0486A6940098B216</key> |
||||
<dict> |
||||
<key>primary</key> |
||||
<true/> |
||||
</dict> |
||||
</dict> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */ |
||||
|
@ -0,0 +1,28 @@
|
||||
<?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>English</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>${EXECUTABLE_NAME}</string> |
||||
<key>CFBundleIconFile</key> |
||||
<string></string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>com.yourcompany.${PRODUCT_NAME:rfc1034Identifier}</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>CFBundleSignature</key> |
||||
<string>????</string> |
||||
<key>CFBundleVersion</key> |
||||
<string>1</string> |
||||
<key>NSPrincipalClass</key> |
||||
<string></string> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,7 @@
|
||||
// |
||||
// Prefix header for all source files of the 'ApptentiveConnect' target in the 'ApptentiveConnect' project. |
||||
// |
||||
|
||||
#ifdef __OBJC__ |
||||
#import <Cocoa/Cocoa.h> |
||||
#endif |
@ -0,0 +1,36 @@
|
||||
//
|
||||
// ATFeedbackWindowController.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 6/1/11.
|
||||
// Copyright 2011 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
|
||||
#import "ATFeedback.h" |
||||
#import "ATImageView.h" |
||||
#import "ATAPIRequest.h" |
||||
#import "ATPlaceholderTextView.h" |
||||
|
||||
@interface ATFeedbackWindowController : NSWindowController <NSWindowDelegate, NSTextViewDelegate, NSComboBoxDelegate, ATAPIRequestDelegate> { |
||||
IBOutlet ATPlaceholderTextView *feedbackTextView; |
||||
IBOutlet ATImageView *screenshotView; |
||||
IBOutlet NSProgressIndicator *progressIndicator; |
||||
IBOutlet NSComboBox *nameBox; |
||||
IBOutlet NSComboBox *emailBox; |
||||
IBOutlet NSComboBox *phoneNumberBox; |
||||
IBOutlet NSButton *sendButton; |
||||
IBOutlet NSButton *cancelButton; |
||||
IBOutlet NSImageView *logoImageView; |
||||
@private |
||||
ATAPIRequest *feedbackRequest; |
||||
ATFeedback *feedback; |
||||
} |
||||
@property (nonatomic, retain) ATFeedback *feedback; |
||||
- (id)initWithFeedback:(ATFeedback *)newFeedback; |
||||
- (IBAction)browseForScreenshotPressed:(id)sender; |
||||
- (IBAction)cancelPressed:(id)sender; |
||||
- (IBAction)sendFeedbackPressed:(id)sender; |
||||
- (IBAction)openApptentivePressed:(id)sender; |
||||
@end |
@ -0,0 +1,378 @@
|
||||
// |
||||
// ATFeedbackWindowController.m |
||||
// ApptentiveConnect |
||||
// |
||||
// Created by Andrew Wooster on 6/1/11. |
||||
// Copyright 2011 Apptentive, Inc. All rights reserved. |
||||
// |
||||
#import <AddressBook/AddressBook.h> |
||||
|
||||
#import "ATFeedbackWindowController.h" |
||||
#import "ATBackend.h" |
||||
#import "ATConnect.h" |
||||
#import "ATContactStorage.h" |
||||
#import "ATImageView.h" |
||||
#import "ATConnect_FeedbackWindowPrivate.h" |
||||
#import "ATUtilities.h" |
||||
#import "ATWebClient.h" |
||||
#import <QuartzCore/QuartzCore.h> |
||||
|
||||
@interface ATFeedbackWindowController (Private) |
||||
- (void)setup; |
||||
- (void)teardown; |
||||
/*! Fills in the contact information. */ |
||||
- (void)fillInContactInfo; |
||||
/*! Returns the text view for the current feedback type. */ |
||||
- (NSTextView *)currentTextView; |
||||
/*! Takes text from current text view and puts in feedback. */ |
||||
- (void)updateFeedbackWithText; |
||||
/*! Takes text from feedback and puts in current text view. */ |
||||
- (void)updateTextWithFeedback; |
||||
- (void)setScreenshotToFilename:(NSString *)filename; |
||||
- (void)imageChanged:(NSNotification *)notification; |
||||
@end |
||||
|
||||
|
||||
@implementation ATFeedbackWindowController |
||||
@synthesize feedback; |
||||
- (id)initWithFeedback:(ATFeedback *)newFeedback { |
||||
NSBundle *bundle = [ATConnect resourceBundle]; |
||||
NSString *path = [bundle pathForResource:@"ATFeedbackWindow" ofType:@"nib"]; |
||||
if ((self = [super initWithWindowNibPath:path owner:self])) { |
||||
self.feedback = newFeedback; |
||||
} |
||||
return self; |
||||
} |
||||
|
||||
- (void)dealloc { |
||||
[self teardown]; |
||||
[super dealloc]; |
||||
} |
||||
|
||||
- (void)windowDidLoad { |
||||
[super windowDidLoad]; |
||||
[self setup]; |
||||
} |
||||
|
||||
#pragma mark Actions |
||||
- (IBAction)browseForScreenshotPressed:(id)sender { |
||||
NSOpenPanel *openPanel = [NSOpenPanel openPanel]; |
||||
[openPanel setCanChooseFiles:YES]; |
||||
[openPanel setCanCreateDirectories:NO]; |
||||
[openPanel setAllowsMultipleSelection:NO]; |
||||
[openPanel setAllowedFileTypes:[NSArray arrayWithObjects:@"jpg", @"jpeg", @"png", @"gif", @"bmp", nil]]; |
||||
if ([openPanel runModal] == NSOKButton) { |
||||
NSArray *URLs = [openPanel URLs]; |
||||
for (NSURL *URL in URLs) { |
||||
[self setScreenshotToFilename:[URL path]]; |
||||
} |
||||
} |
||||
} |
||||
|
||||
- (IBAction)cancelPressed:(id)sender { |
||||
[self close]; |
||||
} |
||||
|
||||
- (IBAction)sendFeedbackPressed:(id)sender { |
||||
@synchronized(self) { |
||||
if (!feedbackRequest) { |
||||
[self updateFeedbackWithText]; |
||||
[progressIndicator setHidden:NO]; |
||||
[progressIndicator startAnimation:self]; |
||||
[progressIndicator setDoubleValue:0.01]; |
||||
|
||||
feedbackRequest = [[[ATWebClient sharedClient] requestForPostingFeedback:self.feedback] retain]; |
||||
feedbackRequest.delegate = self; |
||||
[feedbackRequest start]; |
||||
[sendButton setEnabled:NO]; |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
- (IBAction)openApptentivePressed:(id)sender { |
||||
[[NSWorkspace sharedWorkspace] openURL:[[ATBackend sharedBackend] apptentiveHomepageURL]]; |
||||
} |
||||
|
||||
#pragma mark ATAPIRequestDelegate |
||||
- (void)at_APIRequestDidFinish:(ATAPIRequest *)request result:(id)result { |
||||
@synchronized(self) { |
||||
feedbackRequest.delegate = nil; |
||||
[feedbackRequest release]; |
||||
feedbackRequest = nil; |
||||
[progressIndicator setDoubleValue:1.0]; |
||||
[progressIndicator stopAnimation:self]; |
||||
[progressIndicator setHidden:YES]; |
||||
|
||||
NSAlert *alert = [[[NSAlert alloc] init] autorelease]; |
||||
[alert addButtonWithTitle:@"Okay"]; |
||||
[alert setMessageText:@"Thanks! Your feedback has been sent successfully"]; |
||||
[alert setAlertStyle:NSInformationalAlertStyle]; |
||||
[alert beginSheetModalForWindow:self.window modalDelegate:self didEndSelector:@selector(thanksSheetDidClose:returnCode:contextInfo:) contextInfo:nil]; |
||||
} |
||||
} |
||||
|
||||
- (void)at_APIRequestDidProgress:(ATAPIRequest *)request { |
||||
@synchronized(self) { |
||||
[progressIndicator setDoubleValue:(double)[request percentageComplete]]; |
||||
} |
||||
} |
||||
|
||||
- (void)at_APIRequestDidFail:(ATAPIRequest *)request { |
||||
//!! |
||||
[sendButton setEnabled:YES]; |
||||
[progressIndicator stopAnimation:self]; |
||||
[progressIndicator setHidden:YES]; |
||||
|
||||
NSAlert *alert = [[[NSAlert alloc] init] autorelease]; |
||||
[alert addButtonWithTitle:ATLocalizedString(@"Try Again", @"Button title for failed request retry.")]; |
||||
[alert addButtonWithTitle:ATLocalizedString(@"Cancel", @"Cancel")]; |
||||
[alert setMessageText:request.errorTitle]; |
||||
[alert setInformativeText:request.errorMessage]; |
||||
[alert setAlertStyle:NSWarningAlertStyle]; |
||||
[alert setIcon:[NSImage imageNamed:NSImageNameCaution]]; |
||||
[alert beginSheetModalForWindow:self.window modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil]; |
||||
feedbackRequest.delegate = nil; |
||||
[feedbackRequest release]; |
||||
feedbackRequest = nil; |
||||
} |
||||
|
||||
- (void)alertDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { |
||||
if (returnCode == NSAlertFirstButtonReturn) { |
||||
[self sendFeedbackPressed:self]; |
||||
} else if (returnCode == NSAlertSecondButtonReturn) { |
||||
[self close]; |
||||
} |
||||
} |
||||
|
||||
- (void)thanksSheetDidClose:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { |
||||
[[ATBackend sharedBackend] setCurrentFeedback:nil]; |
||||
[self performSelectorOnMainThread:@selector(close) withObject:nil waitUntilDone:NO]; |
||||
} |
||||
|
||||
#pragma mark NSWindowDelegate |
||||
- (void)windowWillClose:(NSNotification *)notification { |
||||
[self teardown]; |
||||
} |
||||
|
||||
#pragma mark NSComboBoxDelegate |
||||
- (void)comboBoxSelectionDidChange:(NSNotification *)notification { |
||||
NSComboBox *sender = (NSComboBox *)[notification object]; |
||||
if (sender) { |
||||
NSString *value = (NSString *)[sender itemObjectValueAtIndex:[sender indexOfSelectedItem]]; |
||||
if (value) { |
||||
if (sender == emailBox) { |
||||
self.feedback.email = value; |
||||
} else if (sender == phoneNumberBox) { |
||||
self.feedback.phone = value; |
||||
} else if (sender == nameBox) { |
||||
self.feedback.name = value; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
#pragma mark NSTextViewDelegate |
||||
- (void)controlTextDidChange:(NSNotification *)aNotification { |
||||
NSControl *sender = (NSControl *)[aNotification object]; |
||||
if (sender && [sender isKindOfClass:[NSComboBox class]]) { |
||||
NSString *value = [sender stringValue]; |
||||
if (value) { |
||||
if (sender == emailBox) { |
||||
self.feedback.email = value; |
||||
} else if (sender == phoneNumberBox) { |
||||
self.feedback.phone = value; |
||||
} else if (sender == nameBox) { |
||||
self.feedback.name = value; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@end |
||||
|
||||
|
||||
@implementation ATFeedbackWindowController (Private) |
||||
- (void)setup { |
||||
|
||||
CALayer *viewLayer = [CALayer layer]; |
||||
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(255.0, 255.0, 255.0, 0.8)]; //RGB plus Alpha Channel |
||||
[self.window.contentView setWantsLayer:YES]; // view's backing store is using a Core Animation Layer |
||||
[self.window.contentView setLayer:viewLayer]; |
||||
self.window.titlebarAppearsTransparent = YES; |
||||
self.window.styleMask |= NSFullSizeContentViewWindowMask; |
||||
|
||||
self.window.titleVisibility = NSWindowTitleHidden; |
||||
self.window.delegate = self; |
||||
[self.window center]; |
||||
[self.window setTitle:@"Send Feedback"]; |
||||
[self fillInContactInfo]; |
||||
[self updateTextWithFeedback]; |
||||
if ([self.feedback hasScreenshot]) { |
||||
NSImage *screenshot = [[self.feedback copyScreenshot] autorelease]; |
||||
screenshotView.image = screenshot; |
||||
} |
||||
|
||||
[feedbackTextView setTextContainerInset:NSMakeSize(4, 4)]; |
||||
|
||||
NSString *placeholder = [[ATConnect sharedConnection] customPlaceholderText]; |
||||
if (placeholder) { |
||||
feedbackTextView.placeholder = placeholder; |
||||
} |
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(imageChanged:) name:ATImageViewContentsChanged object:nil]; |
||||
[logoImageView setImage:[ATBackend imageNamed:@"at_logo_info"]]; |
||||
[logoImageView setTarget:self]; |
||||
[logoImageView setAction:@selector(openApptentivePressed:)]; |
||||
|
||||
[sendButton setTitle:@"Send Feedback"]; |
||||
[cancelButton setTitle:@"Cancel"]; |
||||
|
||||
} |
||||
|
||||
- (void)teardown { |
||||
[self updateFeedbackWithText]; |
||||
[[ATConnect sharedConnection] feedbackWindowDidClose:self]; |
||||
self.feedback = nil; |
||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:ATImageViewContentsChanged object:nil]; |
||||
} |
||||
|
||||
- (void)fillInContactInfo { |
||||
ATContactStorage *contactStorage = [ATContactStorage sharedContactStorage]; |
||||
NSMutableArray *names = [NSMutableArray array]; |
||||
NSMutableArray *emails = [NSMutableArray array]; |
||||
NSMutableArray *phoneNumbers = [NSMutableArray array]; |
||||
|
||||
if (contactStorage.name) { |
||||
[names addObject:contactStorage.name]; |
||||
} |
||||
if (contactStorage.email) { |
||||
[emails addObject:contactStorage.email]; |
||||
} |
||||
if (contactStorage.phone) { |
||||
[phoneNumbers addObject:contactStorage.phone]; |
||||
} |
||||
|
||||
if (self.feedback.name) { |
||||
[names addObject:self.feedback.name]; |
||||
} |
||||
if (self.feedback.email) { |
||||
[emails addObject:self.feedback.email]; |
||||
} |
||||
if (self.feedback.phone) { |
||||
[phoneNumbers addObject:self.feedback.phone]; |
||||
} |
||||
|
||||
ABPerson *me = nil; |
||||
|
||||
// Uncommenting the following line will cause OS X to prompt the user for Contacts access. |
||||
// "THIS_APP would like to access your contacts. [Don't Allow] [OK]" |
||||
// Disabling for now. |
||||
// me = [[ABAddressBook sharedAddressBook] me]; |
||||
|
||||
if (me) { |
||||
NSString *firstName = [me valueForProperty:kABFirstNameProperty]; |
||||
NSString *middleName = [me valueForProperty:kABMiddleNameProperty]; |
||||
NSString *lastName = [me valueForProperty:kABLastNameProperty]; |
||||
NSMutableArray *nameParts = [NSMutableArray array]; |
||||
if (firstName) { |
||||
[nameParts addObject:firstName]; |
||||
} |
||||
if (middleName) { |
||||
[nameParts addObject:middleName]; |
||||
} |
||||
if (lastName) { |
||||
[nameParts addObject:lastName]; |
||||
} |
||||
if ([nameParts count]) { |
||||
NSString *newName = [nameParts componentsJoinedByString:@" "]; |
||||
if (contactStorage.name == nil || ![contactStorage.name isEqualToString:newName]) { |
||||
[names addObject:newName]; |
||||
} |
||||
} |
||||
|
||||
|
||||
ABMultiValue *abEmails = [me valueForProperty:kABEmailProperty]; |
||||
if (abEmails && [abEmails count]) { |
||||
for (int i = 0; i < [abEmails count]; i++) { |
||||
NSString *abEmail = [abEmails valueAtIndex:i]; |
||||
if (contactStorage.email == nil || ![contactStorage.email isEqualToString:abEmail]) { |
||||
[emails addObject:abEmail]; |
||||
} |
||||
} |
||||
} |
||||
ABMultiValue *abPhoneNumbers = [me valueForProperty:kABPhoneProperty]; |
||||
if (abPhoneNumbers && [abPhoneNumbers count]) { |
||||
for (int i = 0; i < [abPhoneNumbers count]; i++) { |
||||
NSString *abPhoneNumber = [abPhoneNumbers valueAtIndex:i]; |
||||
if (contactStorage.phone == nil || ![contactStorage.phone isEqualToString:abPhoneNumber]) { |
||||
[phoneNumbers addObject:abPhoneNumber]; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
[ATUtilities uniquifyArray:names]; |
||||
[ATUtilities uniquifyArray:emails]; |
||||
[ATUtilities uniquifyArray:phoneNumbers]; |
||||
|
||||
|
||||
if (nameBox && [names count]) { |
||||
[nameBox addItemsWithObjectValues:names]; |
||||
if (self.feedback.name && [names containsObject:self.feedback.name]) { |
||||
[nameBox selectItemAtIndex:[names indexOfObject:self.feedback.name]]; |
||||
} else { |
||||
[nameBox selectItemAtIndex:0]; |
||||
} |
||||
} |
||||
if (emailBox && [emails count]) { |
||||
[emailBox addItemsWithObjectValues:emails]; |
||||
if (self.feedback.email && [emails containsObject:self.feedback.email]) { |
||||
[emailBox selectItemAtIndex:[emails indexOfObject:self.feedback.email]]; |
||||
} else { |
||||
[emailBox selectItemAtIndex:0]; |
||||
} |
||||
} |
||||
if (phoneNumberBox && [phoneNumbers count]) { |
||||
[phoneNumberBox addItemsWithObjectValues:phoneNumbers]; |
||||
if (self.feedback.phone && [phoneNumbers containsObject:self.feedback.phone]) { |
||||
[phoneNumberBox selectItemAtIndex:[phoneNumbers indexOfObject:self.feedback.phone]]; |
||||
} else { |
||||
[phoneNumberBox selectItemAtIndex:0]; |
||||
} |
||||
} |
||||
} |
||||
|
||||
- (NSTextView *)currentTextView { |
||||
NSTextView *result = feedbackTextView; |
||||
return result; |
||||
} |
||||
|
||||
- (void)updateFeedbackWithText { |
||||
NSString *text = [[[self currentTextView] textStorage] string]; |
||||
self.feedback.text = text; |
||||
} |
||||
|
||||
- (void)updateTextWithFeedback { |
||||
NSTextView *currentTextView = [self currentTextView]; |
||||
NSRange range = NSMakeRange(0, [[currentTextView textStorage] length]); |
||||
NSString *replacement = self.feedback.text ? self.feedback.text : @""; |
||||
[[currentTextView textStorage] replaceCharactersInRange:range withString:replacement]; |
||||
} |
||||
|
||||
- (void)setScreenshotToFilename:(NSString *)filename { |
||||
NSImage *image = [[NSImage alloc] initWithContentsOfFile:filename]; |
||||
if (image) { |
||||
self.feedback.screenshot = image; |
||||
[screenshotView setImage:image]; |
||||
} |
||||
[image release]; |
||||
} |
||||
|
||||
- (void)imageChanged:(NSNotification *)notification { |
||||
NSObject *obj = [notification object]; |
||||
if (obj == screenshotView) { |
||||
NSImage *feedbackScreenshot = [[self.feedback copyScreenshot] autorelease]; |
||||
if ([screenshotView image] != feedbackScreenshot) { |
||||
self.feedback.screenshot = [screenshotView image]; |
||||
} |
||||
} |
||||
} |
||||
@end |
@ -0,0 +1,15 @@
|
||||
//
|
||||
// ATConnect_FeedbackWindowPrivate.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 6/28/11.
|
||||
// Copyright 2011 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
#import "ATConnect.h" |
||||
|
||||
|
||||
@interface ATConnect (FeedbackWindowPrivate) |
||||
- (void)feedbackWindowDidClose:(id)sender; |
||||
@end |
@ -0,0 +1,19 @@
|
||||
// |
||||
// ATConnect_FeedbackWindowPrivate.m |
||||
// ApptentiveConnect |
||||
// |
||||
// Created by Andrew Wooster on 6/28/11. |
||||
// Copyright 2011 Apptentive, Inc. All rights reserved. |
||||
// |
||||
|
||||
#import "ATConnect_FeedbackWindowPrivate.h" |
||||
|
||||
|
||||
@implementation ATConnect (FeedbackWindowPrivate) |
||||
- (void)feedbackWindowDidClose:(id)sender { |
||||
if (feedbackWindowController && feedbackWindowController == sender) { |
||||
[feedbackWindowController autorelease]; |
||||
feedbackWindowController = nil; |
||||
} |
||||
} |
||||
@end |
@ -0,0 +1,16 @@
|
||||
//
|
||||
// ATImageButton.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 7/2/11.
|
||||
// Copyright 2011 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
|
||||
|
||||
@interface ATImageButton : NSImageView { |
||||
|
||||
} |
||||
|
||||
@end |
@ -0,0 +1,18 @@
|
||||
// |
||||
// ATImageButton.m |
||||
// ApptentiveConnect |
||||
// |
||||
// Created by Andrew Wooster on 7/2/11. |
||||
// Copyright 2011 Apptentive, Inc. All rights reserved. |
||||
// |
||||
|
||||
#import "ATImageButton.h" |
||||
|
||||
|
||||
@implementation ATImageButton |
||||
- (void)mouseDown:(NSEvent *)theEvent { |
||||
if ([self target] && [self action]) { |
||||
[NSApp sendAction:[self action] to:[self target] from:self]; |
||||
} |
||||
} |
||||
@end |
@ -0,0 +1,17 @@
|
||||
//
|
||||
// ATImageView.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 6/28/11.
|
||||
// Copyright 2011 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
|
||||
NSString *const ATImageViewContentsChanged; |
||||
|
||||
@interface ATImageView : NSImageView { |
||||
|
||||
} |
||||
|
||||
@end |
@ -0,0 +1,27 @@
|
||||
// |
||||
// ATImageView.m |
||||
// ApptentiveConnect |
||||
// |
||||
// Created by Andrew Wooster on 6/28/11. |
||||
// Copyright 2011 Apptentive, Inc. All rights reserved. |
||||
// |
||||
|
||||
#import "ATImageView.h" |
||||
|
||||
|
||||
NSString *const ATImageViewContentsChanged = @"ATImageViewContentsChanged"; |
||||
|
||||
@implementation ATImageView |
||||
|
||||
- (void)setImage:(NSImage *)newImage { |
||||
BOOL wasNew = NO; |
||||
if ([self image] != newImage) { |
||||
wasNew = YES; |
||||
} |
||||
[super setImage:newImage]; |
||||
if (wasNew) { |
||||
[[NSNotificationCenter defaultCenter] postNotificationName:ATImageViewContentsChanged object:self]; |
||||
} |
||||
} |
||||
@end |
||||
|
@ -0,0 +1,17 @@
|
||||
//
|
||||
// ATPlaceholderTextView.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 8/30/12.
|
||||
// Copyright (c) 2012 Apptentive, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
|
||||
@interface ATPlaceholderTextView : NSTextView { |
||||
@private |
||||
NSString *placeholder; |
||||
} |
||||
@property (nonatomic, retain) NSString *placeholder; |
||||
- (BOOL)isDefault; |
||||
@end |
@ -0,0 +1,65 @@
|
||||
// |
||||
// ATPlaceholderTextView.m |
||||
// ApptentiveConnect |
||||
// |
||||
// Created by Andrew Wooster on 8/30/12. |
||||
// Copyright (c) 2012 Apptentive, Inc. All rights reserved. |
||||
// |
||||
|
||||
#import "ATPlaceholderTextView.h" |
||||
|
||||
@implementation ATPlaceholderTextView |
||||
@synthesize placeholder; |
||||
|
||||
- (id)initWithFrame:(NSRect)frame { |
||||
if ((self = [super initWithFrame:frame])) { |
||||
} |
||||
return self; |
||||
} |
||||
|
||||
- (void)dealloc { |
||||
[placeholder release], placeholder = nil; |
||||
[super dealloc]; |
||||
} |
||||
|
||||
- (void)drawRect:(NSRect)dirtyRect { |
||||
[super drawRect:dirtyRect]; |
||||
if (placeholder != nil && [self isDefault]) { |
||||
CGRect r = NSRectToCGRect([self frame]); |
||||
r.origin.x += 6; |
||||
CGSize inset = NSSizeToCGSize([self textContainerInset]); |
||||
NSRect textRect = NSRectFromCGRect(CGRectInset(r, inset.width, inset.height)); |
||||
NSAttributedString *s = [[NSAttributedString alloc] initWithString:self.placeholder attributes:[NSDictionary dictionaryWithObject:[NSColor grayColor] forKey:NSForegroundColorAttributeName]]; |
||||
[s drawInRect:textRect]; |
||||
[s release], s = nil; |
||||
} |
||||
} |
||||
|
||||
- (void)setPlaceholder:(NSString *)newPlaceholder { |
||||
if (placeholder != newPlaceholder) { |
||||
[placeholder release]; |
||||
placeholder = nil; |
||||
placeholder = [newPlaceholder retain]; |
||||
[self setNeedsDisplay:YES]; |
||||
} |
||||
} |
||||
|
||||
- (BOOL)isDefault { |
||||
if (![self string] || [[self string] length] == 0) return YES; |
||||
return NO; |
||||
} |
||||
|
||||
- (BOOL)becomeFirstResponder { |
||||
if (placeholder != nil) { |
||||
[self setNeedsDisplay:YES]; |
||||
} |
||||
return [super becomeFirstResponder]; |
||||
} |
||||
|
||||
- (BOOL)resignFirstResponder { |
||||
if (placeholder != nil) { |
||||
[self setNeedsDisplay:YES]; |
||||
} |
||||
return [super resignFirstResponder]; |
||||
} |
||||
@end |
@ -0,0 +1,17 @@
|
||||
//
|
||||
// ATSampleTest.h
|
||||
// ApptentiveConnect
|
||||
//
|
||||
// Created by Andrew Wooster on 5/30/11.
|
||||
// Copyright 2011 Planetary Scale LLC. All rights reserved.
|
||||
//
|
||||
|
||||
#import <SenTestingKit/SenTestingKit.h> |
||||
|
||||
|
||||
@interface ATSampleTest : SenTestCase { |
||||
|
||||
} |
||||
|
||||
- (void)testTests; |
||||
@end |
@ -0,0 +1,17 @@
|
||||
// |
||||
// ATSampleTest.m |
||||
// ApptentiveConnect |
||||
// |
||||
// Created by Andrew Wooster on 5/30/11. |
||||
// Copyright 2011 Planetary Scale LLC. All rights reserved. |
||||
// |
||||
|
||||
#import "ATSampleTest.h" |
||||
|
||||
|
||||
@implementation ATSampleTest |
||||
|
||||
- (void)testTests { |
||||
STAssertTrue(YES, @"Should always pass."); |
||||
} |
||||
@end |
@ -0,0 +1,22 @@
|
||||
<?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>English</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>${EXECUTABLE_NAME}</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>BNDL</string> |
||||
<key>CFBundleShortVersionString</key> |
||||
<string>1.0</string> |
||||
<key>CFBundleSignature</key> |
||||
<string>????</string> |
||||
<key>CFBundleVersion</key> |
||||
<string>1</string> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,249 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> |
||||
<dependencies> |
||||
<deployment identifier="macosx"/> |
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/> |
||||
<capability name="box content view" minToolsVersion="7.0"/> |
||||
</dependencies> |
||||
<objects> |
||||
<customObject id="-2" userLabel="File's Owner" customClass="ATFeedbackWindowController"> |
||||
<connections> |
||||
<outlet property="cancelButton" destination="40" id="112"/> |
||||
<outlet property="emailBox" destination="24" id="67"/> |
||||
<outlet property="feedbackTextView" destination="109" id="111"/> |
||||
<outlet property="nameBox" destination="22" id="66"/> |
||||
<outlet property="phoneNumberBox" destination="26" id="68"/> |
||||
<outlet property="progressIndicator" destination="57" id="60"/> |
||||
<outlet property="screenshotView" destination="13" id="88"/> |
||||
<outlet property="sendButton" destination="38" id="92"/> |
||||
<outlet property="window" destination="1" id="3"/> |
||||
</connections> |
||||
</customObject> |
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> |
||||
<customObject id="-3" userLabel="Application"/> |
||||
<window title="Send Feedback" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" animationBehavior="default" id="1"> |
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/> |
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> |
||||
<rect key="contentRect" x="309" y="98" width="379" height="528"/> |
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/> |
||||
<view key="contentView" id="2"> |
||||
<rect key="frame" x="0.0" y="0.0" width="379" height="528"/> |
||||
<autoresizingMask key="autoresizingMask"/> |
||||
<subviews> |
||||
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="104"> |
||||
<rect key="frame" x="20" y="230" width="339" height="176"/> |
||||
<autoresizingMask key="autoresizingMask"/> |
||||
<clipView key="contentView" id="ERA-pO-91r"> |
||||
<rect key="frame" x="1" y="1" width="337" height="174"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
||||
<subviews> |
||||
<textView importsGraphics="NO" richText="NO" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="109" customClass="ATPlaceholderTextView"> |
||||
<rect key="frame" x="0.0" y="0.0" width="337" height="174"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> |
||||
<size key="minSize" width="337" height="174"/> |
||||
<size key="maxSize" width="689" height="10000000"/> |
||||
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<size key="minSize" width="337" height="174"/> |
||||
<size key="maxSize" width="689" height="10000000"/> |
||||
<connections> |
||||
<outlet property="delegate" destination="-2" id="110"/> |
||||
</connections> |
||||
</textView> |
||||
</subviews> |
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> |
||||
</clipView> |
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="0.99128919860627185" horizontal="YES" id="108"> |
||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/> |
||||
<autoresizingMask key="autoresizingMask"/> |
||||
</scroller> |
||||
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="107"> |
||||
<rect key="frame" x="322" y="1" width="16" height="174"/> |
||||
<autoresizingMask key="autoresizingMask"/> |
||||
</scroller> |
||||
</scrollView> |
||||
<view id="103"> |
||||
<rect key="frame" x="20" y="172" width="693" height="57"/> |
||||
<autoresizingMask key="autoresizingMask"/> |
||||
<subviews> |
||||
<imageView id="13" customClass="ATImageView"> |
||||
<rect key="frame" x="0.0" y="4" width="48" height="48"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<imageCell key="cell" selectable="YES" editable="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="14"/> |
||||
</imageView> |
||||
<textField verticalHuggingPriority="750" id="15"> |
||||
<rect key="frame" x="50" y="20" width="292" height="17"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Attach a screenshot. (Optional)" id="16"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<button verticalHuggingPriority="750" id="84"> |
||||
<rect key="frame" x="248" y="11" width="98" height="32"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<buttonCell key="cell" type="push" title="Browse…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="85"> |
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> |
||||
<font key="font" metaFont="system"/> |
||||
</buttonCell> |
||||
<connections> |
||||
<action selector="browseForScreenshotPressed:" target="-2" id="86"/> |
||||
</connections> |
||||
</button> |
||||
</subviews> |
||||
</view> |
||||
<box autoresizesSubviews="NO" title="Contact Information (Optional)" borderType="line" id="21"> |
||||
<rect key="frame" x="17" y="56" width="345" height="116"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<view key="contentView" id="tQf-lo-L4t"> |
||||
<rect key="frame" x="1" y="1" width="343" height="100"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
||||
<subviews> |
||||
<comboBox verticalHuggingPriority="750" id="22" userLabel="Name Box"> |
||||
<rect key="frame" x="112" y="66" width="223" height="26"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="23"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> |
||||
</comboBoxCell> |
||||
<connections> |
||||
<outlet property="delegate" destination="-2" id="89"/> |
||||
</connections> |
||||
</comboBox> |
||||
<comboBox verticalHuggingPriority="750" id="26" userLabel="Phone Number Box"> |
||||
<rect key="frame" x="112" y="10" width="223" height="26"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="27"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> |
||||
</comboBoxCell> |
||||
<connections> |
||||
<outlet property="delegate" destination="-2" id="91"/> |
||||
</connections> |
||||
</comboBox> |
||||
<textField verticalHuggingPriority="750" id="28"> |
||||
<rect key="frame" x="10" y="71" width="99" height="17"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Name:" id="29"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<textField verticalHuggingPriority="750" id="30"> |
||||
<rect key="frame" x="10" y="44" width="99" height="17"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Email:" id="31"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<textField verticalHuggingPriority="750" id="32"> |
||||
<rect key="frame" x="10" y="16" width="99" height="17"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Phone Number:" id="33"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<comboBox verticalHuggingPriority="750" id="24" userLabel="Email Box"> |
||||
<rect key="frame" x="112" y="36" width="223" height="26"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="25"> |
||||
<font key="font" metaFont="system"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> |
||||
</comboBoxCell> |
||||
<connections> |
||||
<outlet property="delegate" destination="-2" id="90"/> |
||||
</connections> |
||||
</comboBox> |
||||
</subviews> |
||||
</view> |
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/> |
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> |
||||
</box> |
||||
<button verticalHuggingPriority="750" id="38"> |
||||
<rect key="frame" x="231" y="12" width="134" height="32"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<buttonCell key="cell" type="push" title="Send Feedback" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="39"> |
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> |
||||
<font key="font" metaFont="system"/> |
||||
</buttonCell> |
||||
<connections> |
||||
<action selector="sendFeedbackPressed:" target="-2" id="65"/> |
||||
</connections> |
||||
</button> |
||||
<progressIndicator hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="bar" id="57"> |
||||
<rect key="frame" x="20" y="19" width="128" height="20"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
</progressIndicator> |
||||
<textField verticalHuggingPriority="750" id="105"> |
||||
<rect key="frame" x="118" y="450" width="242" height="25"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="We'd love to hear your feedback!" id="106"> |
||||
<font key="font" size="13" name="HelveticaNeue-Light"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<textField verticalHuggingPriority="750" id="w67-Zy-sbN"> |
||||
<rect key="frame" x="118" y="429" width="242" height="25"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Entering your contact information will help" id="acW-hX-N0a"> |
||||
<font key="font" size="12" name="HelveticaNeue-Thin"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<textField verticalHuggingPriority="750" id="Zyi-mo-cyd"> |
||||
<rect key="frame" x="118" y="414" width="242" height="25"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="us get back to you!" id="dmd-4c-7qG"> |
||||
<font key="font" size="12" name="HelveticaNeue-Thin"/> |
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
<button verticalHuggingPriority="750" id="40"> |
||||
<rect key="frame" x="154" y="12" width="82" height="32"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="41"> |
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> |
||||
<font key="font" metaFont="system"/> |
||||
<string key="keyEquivalent" base64-UTF8="YES"> |
||||
Gw |
||||
</string> |
||||
</buttonCell> |
||||
<connections> |
||||
<action selector="cancelPressed:" target="-2" id="64"/> |
||||
</connections> |
||||
</button> |
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="yby-ks-U3D"> |
||||
<rect key="frame" x="22" y="423" width="91" height="81"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-256" id="GY7-Dm-Gic"/> |
||||
</imageView> |
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="Xda-0B-qgr"> |
||||
<rect key="frame" x="118" y="473" width="158" height="35"/> |
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> |
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Clocker v1.2" id="TOY-gt-W6r"> |
||||
<font key="font" size="29" name="HelveticaNeue-Thin"/> |
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> |
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> |
||||
</textFieldCell> |
||||
</textField> |
||||
</subviews> |
||||
</view> |
||||
<point key="canvasLocation" x="59.5" y="54"/> |
||||
</window> |
||||
</objects> |
||||
<resources> |
||||
<image name="ClockerIcon-256" width="256" height="256"/> |
||||
</resources> |
||||
</document> |
@ -0,0 +1,34 @@
|
||||
2015-02-28 pkamb v0.4.12 |
||||
-------------------------- |
||||
This release removes a request to access the OS X Contacts list to pre-fill the Feedback Dialog form. |
||||
|
||||
The Contacts permission request was unexpected to some developers and users. This will be re-added as an option in the future. |
||||
|
||||
2014-12-05 wooster v0.4.11 |
||||
-------------------------- |
||||
Fixes problem where prompting on launch would never work. |
||||
|
||||
This was a regression due to a bad merge. |
||||
|
||||
2012-10-08 wooster v0.4.8 |
||||
------------------------- |
||||
|
||||
Fixing APPTENTIVE-571, in which custom app data wasn't being sent with feedback. |
||||
|
||||
2012-09-19 wooster v0.4.7 |
||||
------------------------- |
||||
The big change here is a switch to git subtrees from a submodule for the copy of apptentive-ios in the project. This makes checking out the project and getting started much easier. |
||||
|
||||
Changes: |
||||
|
||||
* Fix for ratings dialog not showing up due to reachability failing. |
||||
* OSX-6 Switch to git subtrees for apptentive-ios |
||||
|
||||
2012-08-29 wooster v0.4.6 |
||||
------------------------- |
||||
Changes: |
||||
|
||||
* Pulled in v0.4.5 of apptentive-ios. |
||||
* Went from JSONKit to PrefixedJSONKit. |
||||
* Removed methods for displaying different feedback window types on OS X. |
||||
* Added placeholder text in feedback window. |
@ -0,0 +1,9 @@
|
||||
Contributing |
||||
------------ |
||||
We love contributions! |
||||
|
||||
Any contributions to the master apptentive-osx project must sign the [Individual Contributor License Agreement (CLA)](https://docs.google.com/a/apptentive.com/spreadsheet/viewform?formkey=dDhMaXJKQnRoX0dRMzZNYnp5bk1Sbmc6MQ#gid=0). It's a doc that makes our lawyers happy and ensures we can provide a solid open source project. |
||||
|
||||
When you want to submit a change, send us a [pull request](https://github.com/apptentive/apptentive-osx/pulls). Before we merge, we'll check to make sure you're on the list of people who've signed our CLA. |
||||
|
||||
Thanks! |
@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */ |
||||
|
@ -0,0 +1,32 @@
|
||||
<?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>English</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>${EXECUTABLE_NAME}</string> |
||||
<key>CFBundleIconFile</key> |
||||
<string>ApptentiveLogo</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>com.apptentive.${PRODUCT_NAME:rfc1034identifier}</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundleName</key> |
||||
<string>${PRODUCT_NAME}</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>APPL</string> |
||||
<key>CFBundleShortVersionString</key> |
||||
<string>1.0</string> |
||||
<key>CFBundleSignature</key> |
||||
<string>????</string> |
||||
<key>CFBundleVersion</key> |
||||
<string>1</string> |
||||
<key>LSMinimumSystemVersion</key> |
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string> |
||||
<key>NSMainNibFile</key> |
||||
<string>MainMenu</string> |
||||
<key>NSPrincipalClass</key> |
||||
<string>NSApplication</string> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,416 @@
|
||||
// !$*UTF8*$! |
||||
{ |
||||
archiveVersion = 1; |
||||
classes = { |
||||
}; |
||||
objectVersion = 46; |
||||
objects = { |
||||
|
||||
/* Begin PBXBuildFile section */ |
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; |
||||
256AC3DA0F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m */; }; |
||||
491CA3B915F065DF0003BC38 /* ApptentiveLogo.icns in Resources */ = {isa = PBXBuildFile; fileRef = 491CA3A515F026E10003BC38 /* ApptentiveLogo.icns */; }; |
||||
49626DDA13970DC30093534C /* ApptentiveConnect.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49626DD713970DB80093534C /* ApptentiveConnect.framework */; }; |
||||
49626DDF13970DD60093534C /* ApptentiveConnect.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 49626DD713970DB80093534C /* ApptentiveConnect.framework */; }; |
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; |
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; |
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; |
||||
/* End PBXBuildFile section */ |
||||
|
||||
/* Begin PBXContainerItemProxy section */ |
||||
49626DD613970DB80093534C /* PBXContainerItemProxy */ = { |
||||
isa = PBXContainerItemProxy; |
||||
containerPortal = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */; |
||||
proxyType = 2; |
||||
remoteGlobalIDString = 8DC2EF5B0486A6940098B216; |
||||
remoteInfo = ApptentiveConnect; |
||||
}; |
||||
49626DD813970DB80093534C /* PBXContainerItemProxy */ = { |
||||
isa = PBXContainerItemProxy; |
||||
containerPortal = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */; |
||||
proxyType = 2; |
||||
remoteGlobalIDString = 49626B6D13942A2B0093534C; |
||||
remoteInfo = ApptentiveUnitTests; |
||||
}; |
||||
49626DDB13970DCE0093534C /* PBXContainerItemProxy */ = { |
||||
isa = PBXContainerItemProxy; |
||||
containerPortal = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */; |
||||
proxyType = 1; |
||||
remoteGlobalIDString = 8DC2EF4F0486A6940098B216; |
||||
remoteInfo = ApptentiveConnect; |
||||
}; |
||||
/* End PBXContainerItemProxy section */ |
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */ |
||||
49626D9613970A080093534C /* CopyFiles */ = { |
||||
isa = PBXCopyFilesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
dstPath = ""; |
||||
dstSubfolderSpec = 10; |
||||
files = ( |
||||
49626DDF13970DD60093534C /* ApptentiveConnect.framework in CopyFiles */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
49626E0013970FE60093534C /* Copy Products */ = { |
||||
isa = PBXCopyFilesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
dstPath = ""; |
||||
dstSubfolderSpec = 16; |
||||
files = ( |
||||
); |
||||
name = "Copy Products"; |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXCopyFilesBuildPhase section */ |
||||
|
||||
/* Begin PBXFileReference section */ |
||||
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; |
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; |
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; |
||||
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; }; |
||||
256AC3D80F4B6AC300CF3369 /* FeedbackDemoAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedbackDemoAppDelegate.h; sourceTree = "<group>"; }; |
||||
256AC3D90F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FeedbackDemoAppDelegate.m; sourceTree = "<group>"; }; |
||||
256AC3F00F4B6AF500CF3369 /* FeedbackDemo_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedbackDemo_Prefix.pch; sourceTree = "<group>"; }; |
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; |
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; |
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; |
||||
491CA3A515F026E10003BC38 /* ApptentiveLogo.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ApptentiveLogo.icns; sourceTree = "<group>"; }; |
||||
49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ApptentiveConnect.xcodeproj; path = ../ApptentiveConnect/ApptentiveConnect.xcodeproj; sourceTree = SOURCE_ROOT; }; |
||||
4971B31513BB955100774B70 /* defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = "<group>"; }; |
||||
4972847913CA6273002AD591 /* ATAppRatingFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATAppRatingFlow.h; path = "../apptentive-ios/ApptentiveConnect/source/Rating Flow/ATAppRatingFlow.h"; sourceTree = SOURCE_ROOT; }; |
||||
49891FE813B3BCA1007967BA /* ATConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect.h; path = "../apptentive-ios/ApptentiveConnect/source/ATConnect.h"; sourceTree = SOURCE_ROOT; }; |
||||
8D1107310486CEB800E47090 /* FeedbackDemo-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "FeedbackDemo-Info.plist"; sourceTree = "<group>"; }; |
||||
8D1107320486CEB800E47090 /* FeedbackDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FeedbackDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||
/* End PBXFileReference section */ |
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */ |
||||
8D11072E0486CEB800E47090 /* Frameworks */ = { |
||||
isa = PBXFrameworksBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
49626DDA13970DC30093534C /* ApptentiveConnect.framework in Frameworks */, |
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXFrameworksBuildPhase section */ |
||||
|
||||
/* Begin PBXGroup section */ |
||||
080E96DDFE201D6D7F000001 /* Classes */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
256AC3D80F4B6AC300CF3369 /* FeedbackDemoAppDelegate.h */, |
||||
256AC3D90F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m */, |
||||
4971B31513BB955100774B70 /* defines.h */, |
||||
); |
||||
name = Classes; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, |
||||
); |
||||
name = "Linked Frameworks"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */, |
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, |
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */, |
||||
); |
||||
name = "Other Frameworks"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
19C28FACFE9D520D11CA2CBB /* Products */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
8D1107320486CEB800E47090 /* FeedbackDemo.app */, |
||||
); |
||||
name = Products; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
29B97314FDCFA39411CA2CEA /* FeedbackDemo */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49891FE813B3BCA1007967BA /* ATConnect.h */, |
||||
4972847913CA6273002AD591 /* ATAppRatingFlow.h */, |
||||
49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */, |
||||
080E96DDFE201D6D7F000001 /* Classes */, |
||||
29B97315FDCFA39411CA2CEA /* Other Sources */, |
||||
29B97317FDCFA39411CA2CEA /* Resources */, |
||||
29B97323FDCFA39411CA2CEA /* Frameworks */, |
||||
19C28FACFE9D520D11CA2CBB /* Products */, |
||||
); |
||||
name = FeedbackDemo; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
256AC3F00F4B6AF500CF3369 /* FeedbackDemo_Prefix.pch */, |
||||
29B97316FDCFA39411CA2CEA /* main.m */, |
||||
); |
||||
name = "Other Sources"; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
29B97317FDCFA39411CA2CEA /* Resources */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
491CA3A415F026E10003BC38 /* art */, |
||||
8D1107310486CEB800E47090 /* FeedbackDemo-Info.plist */, |
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, |
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */, |
||||
); |
||||
name = Resources; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, |
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, |
||||
); |
||||
name = Frameworks; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
491CA3A415F026E10003BC38 /* art */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
491CA3A515F026E10003BC38 /* ApptentiveLogo.icns */, |
||||
); |
||||
path = art; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
49626DD213970DB80093534C /* Products */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
49626DD713970DB80093534C /* ApptentiveConnect.framework */, |
||||
49626DD913970DB80093534C /* ApptentiveUnitTests.octest */, |
||||
); |
||||
name = Products; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXGroup section */ |
||||
|
||||
/* Begin PBXNativeTarget section */ |
||||
8D1107260486CEB800E47090 /* FeedbackDemo */ = { |
||||
isa = PBXNativeTarget; |
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FeedbackDemo" */; |
||||
buildPhases = ( |
||||
49626E0013970FE60093534C /* Copy Products */, |
||||
8D1107290486CEB800E47090 /* Resources */, |
||||
8D11072C0486CEB800E47090 /* Sources */, |
||||
8D11072E0486CEB800E47090 /* Frameworks */, |
||||
49626D9613970A080093534C /* CopyFiles */, |
||||
); |
||||
buildRules = ( |
||||
); |
||||
dependencies = ( |
||||
49626DDC13970DCE0093534C /* PBXTargetDependency */, |
||||
); |
||||
name = FeedbackDemo; |
||||
productInstallPath = "$(HOME)/Applications"; |
||||
productName = FeedbackDemo; |
||||
productReference = 8D1107320486CEB800E47090 /* FeedbackDemo.app */; |
||||
productType = "com.apple.product-type.application"; |
||||
}; |
||||
/* End PBXNativeTarget section */ |
||||
|
||||
/* Begin PBXProject section */ |
||||
29B97313FDCFA39411CA2CEA /* Project object */ = { |
||||
isa = PBXProject; |
||||
attributes = { |
||||
LastUpgradeCheck = 0460; |
||||
}; |
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FeedbackDemo" */; |
||||
compatibilityVersion = "Xcode 3.2"; |
||||
developmentRegion = English; |
||||
hasScannedForEncodings = 1; |
||||
knownRegions = ( |
||||
English, |
||||
Japanese, |
||||
French, |
||||
German, |
||||
); |
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* FeedbackDemo */; |
||||
projectDirPath = ""; |
||||
projectReferences = ( |
||||
{ |
||||
ProductGroup = 49626DD213970DB80093534C /* Products */; |
||||
ProjectRef = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */; |
||||
}, |
||||
); |
||||
projectRoot = ""; |
||||
targets = ( |
||||
8D1107260486CEB800E47090 /* FeedbackDemo */, |
||||
); |
||||
}; |
||||
/* End PBXProject section */ |
||||
|
||||
/* Begin PBXReferenceProxy section */ |
||||
49626DD713970DB80093534C /* ApptentiveConnect.framework */ = { |
||||
isa = PBXReferenceProxy; |
||||
fileType = wrapper.framework; |
||||
path = ApptentiveConnect.framework; |
||||
remoteRef = 49626DD613970DB80093534C /* PBXContainerItemProxy */; |
||||
sourceTree = BUILT_PRODUCTS_DIR; |
||||
}; |
||||
49626DD913970DB80093534C /* ApptentiveUnitTests.octest */ = { |
||||
isa = PBXReferenceProxy; |
||||
fileType = wrapper.cfbundle; |
||||
path = ApptentiveUnitTests.octest; |
||||
remoteRef = 49626DD813970DB80093534C /* PBXContainerItemProxy */; |
||||
sourceTree = BUILT_PRODUCTS_DIR; |
||||
}; |
||||
/* End PBXReferenceProxy section */ |
||||
|
||||
/* Begin PBXResourcesBuildPhase section */ |
||||
8D1107290486CEB800E47090 /* Resources */ = { |
||||
isa = PBXResourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, |
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, |
||||
491CA3B915F065DF0003BC38 /* ApptentiveLogo.icns in Resources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXResourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXSourcesBuildPhase section */ |
||||
8D11072C0486CEB800E47090 /* Sources */ = { |
||||
isa = PBXSourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
8D11072D0486CEB800E47090 /* main.m in Sources */, |
||||
256AC3DA0F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m in Sources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXSourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXTargetDependency section */ |
||||
49626DDC13970DCE0093534C /* PBXTargetDependency */ = { |
||||
isa = PBXTargetDependency; |
||||
name = ApptentiveConnect; |
||||
targetProxy = 49626DDB13970DCE0093534C /* PBXContainerItemProxy */; |
||||
}; |
||||
/* End PBXTargetDependency section */ |
||||
|
||||
/* Begin PBXVariantGroup section */ |
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { |
||||
isa = PBXVariantGroup; |
||||
children = ( |
||||
089C165DFE840E0CC02AAC07 /* English */, |
||||
); |
||||
name = InfoPlist.strings; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { |
||||
isa = PBXVariantGroup; |
||||
children = ( |
||||
1DDD58150DA1D0A300B32029 /* English */, |
||||
); |
||||
name = MainMenu.xib; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXVariantGroup section */ |
||||
|
||||
/* Begin XCBuildConfiguration section */ |
||||
C01FCF4B08A954540054247B /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
COMBINE_HIDPI_IMAGES = YES; |
||||
COPY_PHASE_STRIP = NO; |
||||
FRAMEWORK_SEARCH_PATHS = ""; |
||||
GCC_DYNAMIC_NO_PIC = NO; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = FeedbackDemo_Prefix.pch; |
||||
INFOPLIST_FILE = "FeedbackDemo-Info.plist"; |
||||
INSTALL_PATH = "$(HOME)/Applications"; |
||||
MACOSX_DEPLOYMENT_TARGET = 10.7; |
||||
OTHER_LDFLAGS = ( |
||||
"-ObjC", |
||||
"-all_load", |
||||
); |
||||
PRODUCT_NAME = FeedbackDemo; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
C01FCF4C08A954540054247B /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
COMBINE_HIDPI_IMAGES = YES; |
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
||||
FRAMEWORK_SEARCH_PATHS = ""; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = FeedbackDemo_Prefix.pch; |
||||
INFOPLIST_FILE = "FeedbackDemo-Info.plist"; |
||||
INSTALL_PATH = "$(HOME)/Applications"; |
||||
MACOSX_DEPLOYMENT_TARGET = 10.7; |
||||
OTHER_LDFLAGS = ( |
||||
"-ObjC", |
||||
"-all_load", |
||||
); |
||||
PRODUCT_NAME = FeedbackDemo; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
C01FCF4F08A954540054247B /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; |
||||
GCC_C_LANGUAGE_STANDARD = gnu99; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
ONLY_ACTIVE_ARCH = YES; |
||||
SDKROOT = macosx; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
C01FCF5008A954540054247B /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; |
||||
GCC_C_LANGUAGE_STANDARD = gnu99; |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
SDKROOT = macosx; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
/* End XCBuildConfiguration section */ |
||||
|
||||
/* Begin XCConfigurationList section */ |
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FeedbackDemo" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
C01FCF4B08A954540054247B /* Debug */, |
||||
C01FCF4C08A954540054247B /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FeedbackDemo" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
C01FCF4F08A954540054247B /* Debug */, |
||||
C01FCF5008A954540054247B /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
/* End XCConfigurationList section */ |
||||
}; |
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; |
||||
} |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Workspace |
||||
version = "1.0"> |
||||
<FileRef |
||||
location = "self:"> |
||||
</FileRef> |
||||
</Workspace> |
@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0720" |
||||
version = "1.3"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "8D1107260486CEB800E47090" |
||||
BuildableName = "FeedbackDemo.app" |
||||
BlueprintName = "FeedbackDemo" |
||||
ReferencedContainer = "container:FeedbackDemo.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildActionEntry> |
||||
</BuildActionEntries> |
||||
</BuildAction> |
||||
<TestAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
<Testables> |
||||
</Testables> |
||||
<MacroExpansion> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "8D1107260486CEB800E47090" |
||||
BuildableName = "FeedbackDemo.app" |
||||
BlueprintName = "FeedbackDemo" |
||||
ReferencedContainer = "container:FeedbackDemo.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
<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"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "8D1107260486CEB800E47090" |
||||
BuildableName = "FeedbackDemo.app" |
||||
BlueprintName = "FeedbackDemo" |
||||
ReferencedContainer = "container:FeedbackDemo.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
buildConfiguration = "Release" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
debugDocumentVersioning = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "8D1107260486CEB800E47090" |
||||
BuildableName = "FeedbackDemo.app" |
||||
BlueprintName = "FeedbackDemo" |
||||
ReferencedContainer = "container:FeedbackDemo.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
@ -0,0 +1,22 @@
|
||||
<?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>SchemeUserState</key> |
||||
<dict> |
||||
<key>FeedbackDemo.xcscheme</key> |
||||
<dict> |
||||
<key>orderHint</key> |
||||
<integer>2</integer> |
||||
</dict> |
||||
</dict> |
||||
<key>SuppressBuildableAutocreation</key> |
||||
<dict> |
||||
<key>8D1107260486CEB800E47090</key> |
||||
<dict> |
||||
<key>primary</key> |
||||
<true/> |
||||
</dict> |
||||
</dict> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,22 @@
|
||||
//
|
||||
// FeedbackDemoAppDelegate.h
|
||||
// FeedbackDemo
|
||||
//
|
||||
// Created by Andrew Wooster on 5/30/11.
|
||||
// Copyright 2011 Planetary Scale LLC. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
#import <ApptentiveConnect/ATConnect.h> |
||||
|
||||
@interface FeedbackDemoAppDelegate : NSObject <NSApplicationDelegate> { |
||||
NSWindow *window; |
||||
NSTextField *versionTextField; |
||||
} |
||||
|
||||
@property (assign) IBOutlet NSWindow *window; |
||||
@property (assign) IBOutlet NSTextField *versionTextField; |
||||
|
||||
- (IBAction)showFeedbackWindow:(id)sender; |
||||
- (IBAction)showRatingFlow:(id)sender; |
||||
@end |
@ -0,0 +1,39 @@
|
||||
// |
||||
// FeedbackDemoAppDelegate.m |
||||
// FeedbackDemo |
||||
// |
||||
// Created by Andrew Wooster on 5/30/11. |
||||
// Copyright 2011 Planetary Scale LLC. All rights reserved. |
||||
// |
||||
|
||||
#import "FeedbackDemoAppDelegate.h" |
||||
#import <ApptentiveConnect/ATConnect.h> |
||||
#import <ApptentiveConnect/ATAppRatingFlow.h> |
||||
#import "defines.h" |
||||
|
||||
@implementation FeedbackDemoAppDelegate |
||||
|
||||
@synthesize window; |
||||
@synthesize versionTextField; |
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { |
||||
// Insert code here to initialize your application |
||||
[[ATConnect sharedConnection] setApiKey:kApptentiveAPIKey]; |
||||
self.versionTextField.stringValue = [NSString stringWithFormat:@"ApptentiveConnect v%@", kATConnectVersionString]; |
||||
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID]; |
||||
[ratingFlow appDidLaunch:YES]; |
||||
} |
||||
|
||||
- (IBAction)showFeedbackWindow:(id)sender { |
||||
[[ATConnect sharedConnection] showFeedbackWindow:sender]; |
||||
} |
||||
|
||||
- (IBAction)showFeedbackWindowForFeedback:(id)sender { |
||||
[[ATConnect sharedConnection] showFeedbackWindow:self]; |
||||
} |
||||
|
||||
- (IBAction)showRatingFlow:(id)sender { |
||||
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID]; |
||||
[ratingFlow showEnjoymentDialog:sender]; |
||||
} |
||||
@end |
@ -0,0 +1,7 @@
|
||||
// |
||||
// Prefix header for all source files of the 'FeedbackDemo' target in the 'FeedbackDemo' project |
||||
// |
||||
|
||||
#ifdef __OBJC__ |
||||
#import <Cocoa/Cocoa.h> |
||||
#endif |
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* defines.h |
||||
* FeedbackDemo |
||||
* |
||||
* Created by Andrew Wooster on 6/29/11. |
||||
* Copyright 2011 Apptentive. All rights reserved. |
||||
* |
||||
*/ |
||||
|
||||
#define kApptentiveAPIKey @"<your API key>" |
||||
#define kApptentiveAppID @"<your App Store ID>" |
@ -0,0 +1,14 @@
|
||||
// |
||||
// main.m |
||||
// FeedbackDemo |
||||
// |
||||
// Created by Andrew Wooster on 5/30/11. |
||||
// Copyright 2011 Planetary Scale LLC. All rights reserved. |
||||
// |
||||
|
||||
#import <Cocoa/Cocoa.h> |
||||
|
||||
int main(int argc, char *argv[]) |
||||
{ |
||||
return NSApplicationMain(argc, (const char **) argv); |
||||
} |
@ -0,0 +1,24 @@
|
||||
Copyright (c) 2011, Apptentive, Inc. |
||||
All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are met: |
||||
* Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in the |
||||
documentation and/or other materials provided with the distribution. |
||||
* Neither the name of the Apptentive, Inc. nor the |
||||
names of its contributors may be used to endorse or promote products |
||||
derived from this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
||||
DISCLAIMED. IN NO EVENT SHALL Apptentive, Inc. BE LIABLE FOR ANY |
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,125 @@
|
||||
Apptentive Mac SDK |
||||
================== |
||||
|
||||
This Cocoa library for OS X allows you to add a quick and easy in-app-feedback |
||||
mechanism to your Mac applications. Feedback is sent to the Apptentive web |
||||
service. |
||||
|
||||
Quickstart |
||||
========== |
||||
|
||||
Sample Application |
||||
------------------ |
||||
The sample application FeedbackDemo demonstrates how to integrate the SDK |
||||
with your application. |
||||
|
||||
|
||||
Required Frameworks |
||||
------------------- |
||||
In order to use `ApptentiveConnect`, your project must link against the |
||||
following frameworks: |
||||
|
||||
* AppKit |
||||
* CoreGraphics |
||||
* Foundation |
||||
* QuartzCore |
||||
* SystemConfiguration |
||||
|
||||
Project Settings for Xcode 4 |
||||
---------------------------- |
||||
|
||||
Check out the `apptentive-osx` project from GitHub. You'll either want to put it in a |
||||
sub-folder of your project or, if you use `git`, add it as a [git submodule](http://help.github.com/submodules/). |
||||
|
||||
In your target's `Build Settings` section, add the following to your Other Linker Flags settings: |
||||
|
||||
`-ObjC -all_load` |
||||
|
||||
Then, open your project in Xcode and drag the `ApptentiveConnect.xcodeproj` project file |
||||
to your project: |
||||
|
||||
![Step 1](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step1.png) |
||||
|
||||
In your apps' target settings, add `ApptentiveConnect` to the "Target Dependencies" build phase: |
||||
|
||||
![Step 2](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step2.png) |
||||
|
||||
Next, add `ApptentiveConnect.framework` to the "Link Binary With Libraries" build phase: |
||||
|
||||
![Step 3](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step3.png) |
||||
|
||||
Finally, drag the `ApptentiveConnect.framework` from the `ApptentiveConnect` project to the |
||||
"Copy Bundle Resources" build phase: |
||||
|
||||
![Step 4](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step4.png) |
||||
|
||||
Using the Library |
||||
----------------- |
||||
|
||||
`ApptentiveConnect` queues feedback and attempts to upload in the background. This |
||||
is intended to provide as quick a mechanism for submitting feedback as possible. |
||||
|
||||
In order for queued/interrupted feedback uploads to continue uploading, we |
||||
recommending instantiating `ATConnect` and setting the API key at application |
||||
startup, like: |
||||
|
||||
``` objective-c |
||||
#import <ApptentiveConnect/ATConnect.h> |
||||
// ... |
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { |
||||
ATConnect *connection = [ATConnect sharedConnection]; |
||||
connection.apiKey = kApptentiveAPIKey; |
||||
// ... |
||||
} |
||||
``` |
||||
|
||||
Where `kApptentiveAPIKey` is an `NSString` containing your API key. As soon |
||||
as you set the API key on the shared connection object, any queued feedback |
||||
will start to upload, pending network availability. You also should not have |
||||
to set the API key again on the shared connection object. |
||||
|
||||
Now, you can show the Apptentive feedback UI with: |
||||
|
||||
``` objective-c |
||||
#import <ApptentiveConnect/ATConnect.h> |
||||
// ... |
||||
ATConnect *connection = [ATConnect sharedConnection]; |
||||
[connection showFeedbackWindow:sender]; |
||||
``` |
||||
|
||||
Easy! |
||||
|
||||
App Rating Flow |
||||
--------------- |
||||
`ApptentiveConnect` now provides an app rating flow similar to other projects |
||||
such as [appirator](https://github.com/arashpayan/appirater). To use it, add |
||||
the `ATAppRatingFlow.h` header file to your project. |
||||
|
||||
Then, at startup, instantiate a shared `ATAppRatingFlow` object with your |
||||
iTunes app ID (see "Finding Your iTunes App ID" below): |
||||
|
||||
``` objective-c |
||||
#import <ApptentiveConnect/ATAppRatingFlow.h> |
||||
// ... |
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { |
||||
[[ATConnect sharedConnection] setApiKey:kApptentiveAPIKey]; |
||||
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID]; |
||||
[ratingFlow appDidLaunch:YES]; |
||||
} |
||||
``` |
||||
|
||||
You can also choose to show the dialog manually: |
||||
|
||||
``` objective-c |
||||
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID]; |
||||
[ratingFlow showEnjoymentDialog:sender]; |
||||
``` |
||||
|
||||
This is helpful if you want to implement custom triggers for the ratings |
||||
flow. |
||||
|
||||
**Finding Your iTunes App ID** |
||||
In [iTunesConnect](https://itunesconnect.apple.com/), go to "Manage Your |
||||
Applications" and click on your application. In the "App Information" |
||||
section of the page, look for the "Apple ID". It will be a number. This is |
||||
your iTunes application ID. |
@ -0,0 +1,21 @@
|
||||
# xcode noise |
||||
build/ |
||||
build/* |
||||
*/build/* |
||||
*.pbxuser |
||||
*.mode1v3 |
||||
*.mode2v3 |
||||
*.perspectivev3 |
||||
xcuserdata/* |
||||
xcuserdata/ |
||||
|
||||
# OSX noise |
||||
.DS_Store |
||||
profile |
||||
Icon* |
||||
|
||||
# Emacs noise |
||||
*~ |
||||
|
||||
# other noise |
||||
.svn |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Workspace |
||||
version = "1.0"> |
||||
<FileRef |
||||
location = "self:ApptentiveConnect.xcodeproj"> |
||||
</FileRef> |
||||
</Workspace> |
@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0460" |
||||
version = "1.8"> |
||||
<BuildAction |
||||
parallelizeBuildables = "NO" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "496DC37E1333D35600743F65" |
||||
BuildableName = "libApptentiveConnect.a" |
||||
BlueprintName = "ApptentiveConnect" |
||||
ReferencedContainer = "container:ApptentiveConnect.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildActionEntry> |
||||
</BuildActionEntries> |
||||
</BuildAction> |
||||
<TestAction |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
buildConfiguration = "Debug"> |
||||
<Testables> |
||||
<TestableReference |
||||
skipped = "NO"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "496DC38B1333D35600743F65" |
||||
BuildableName = "ApptentiveConnectTests.octest" |
||||
BlueprintName = "ApptentiveConnectTests" |
||||
ReferencedContainer = "container:ApptentiveConnect.xcodeproj"> |
||||
</BuildableReference> |
||||
</TestableReference> |
||||
</Testables> |
||||
</TestAction> |
||||
<LaunchAction |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
displayScaleIsEnabled = "NO" |
||||
displayScale = "1.00" |
||||
launchStyle = "0" |
||||
useCustomWorkingDirectory = "NO" |
||||
buildConfiguration = "Debug" |
||||
ignoresPersistentStateOnLaunch = "NO" |
||||
debugDocumentVersioning = "YES" |
||||
allowLocationSimulation = "YES"> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
displayScaleIsEnabled = "NO" |
||||
displayScale = "1.00" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
buildConfiguration = "Release" |
||||
debugDocumentVersioning = "YES"> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0460" |
||||
version = "1.8"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "49D1118B13341A7C00603373" |
||||
BuildableName = "ApptentiveResources.bundle" |
||||
BlueprintName = "ApptentiveResources" |
||||
ReferencedContainer = "container:ApptentiveConnect.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildActionEntry> |
||||
</BuildActionEntries> |
||||
</BuildAction> |
||||
<TestAction |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
buildConfiguration = "Debug"> |
||||
<Testables> |
||||
</Testables> |
||||
</TestAction> |
||||
<LaunchAction |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" |
||||
displayScaleIsEnabled = "NO" |
||||
displayScale = "1.00" |
||||
launchStyle = "0" |
||||
useCustomWorkingDirectory = "NO" |
||||
buildConfiguration = "Debug" |
||||
ignoresPersistentStateOnLaunch = "NO" |
||||
debugDocumentVersioning = "YES" |
||||
allowLocationSimulation = "YES"> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
displayScaleIsEnabled = "NO" |
||||
displayScale = "1.00" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
buildConfiguration = "Release" |
||||
debugDocumentVersioning = "YES"> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 1006 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 961 B |