@ -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 |