2
0

Integrated Apptentive.

[ADDED]     Experimental support for Apptentive.
This commit is contained in:
Maarten Billemont 2012-05-23 08:58:01 +02:00
parent 2d8f2943e5
commit ac14b10752
7 changed files with 192 additions and 16 deletions

3
.gitmodules vendored
View File

@ -7,3 +7,6 @@
[submodule "External/iCloudStoreManager"] [submodule "External/iCloudStoreManager"]
path = External/iCloudStoreManager path = External/iCloudStoreManager
url = git://github.com/alekseyn/iCloudStoreManager.git url = git://github.com/alekseyn/iCloudStoreManager.git
[submodule "External/apptentive"]
path = External/apptentive
url = git://github.com/apptentive/apptentive-ios.git

View File

@ -0,0 +1,8 @@
<?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>API Key</key>
<string></string>
</dict>
</plist>

2
External/Pearl vendored

@ -1 +1 @@
Subproject commit fea9295f84e16534f70b616e622946bdd518f27e Subproject commit f92b0b1490e483d1bd4b8b6d1b9482c7ecfd4e44

1
External/apptentive vendored Submodule

@ -0,0 +1 @@
Subproject commit 3b6635e131d19f049fec1fd943afd89855185d39

View File

@ -74,6 +74,10 @@
DA95D5F614DF0B9F008D1B94 /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CC14DF0691008D1B94 /* IASKPSTextFieldSpecifierViewCell.xib */; }; DA95D5F614DF0B9F008D1B94 /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CC14DF0691008D1B94 /* IASKPSTextFieldSpecifierViewCell.xib */; };
DA95D5F714DF0B9F008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CD14DF0691008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib */; }; DA95D5F714DF0B9F008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CD14DF0691008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
DA95D5F814DF0B9F008D1B94 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CE14DF0691008D1B94 /* IASKSpecifierValuesView.xib */; }; DA95D5F814DF0B9F008D1B94 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA95D5CE14DF0691008D1B94 /* IASKSpecifierValuesView.xib */; };
DAAC35DB156BD62F00C5FD93 /* libApptentiveConnect.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAAC35D2156BD51600C5FD93 /* libApptentiveConnect.a */; };
DAAC35DC156BD66800C5FD93 /* ApptentiveResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DAAC35D6156BD51600C5FD93 /* ApptentiveResources.bundle */; };
DAAC35DE156BD77D00C5FD93 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */; };
DAAC35E4156BDBA700C5FD93 /* Apptentive.plist in Resources */ = {isa = PBXBuildFile; fileRef = DAAC35E2156BDBA700C5FD93 /* Apptentive.plist */; };
DAB8D45D15036BCF00CED3BC /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D43C15036BCF00CED3BC /* MasterPassword.xcdatamodeld */; }; DAB8D45D15036BCF00CED3BC /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D43C15036BCF00CED3BC /* MasterPassword.xcdatamodeld */; };
DAB8D45E15036BCF00CED3BC /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D43F15036BCF00CED3BC /* InfoPlist.strings */; }; DAB8D45E15036BCF00CED3BC /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D43F15036BCF00CED3BC /* InfoPlist.strings */; };
DAB8D45F15036BCF00CED3BC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D44115036BCF00CED3BC /* main.m */; }; DAB8D45F15036BCF00CED3BC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D44115036BCF00CED3BC /* main.m */; };
@ -858,6 +862,41 @@
remoteGlobalIDString = DA67FE5D14E4834300DB7CC9; remoteGlobalIDString = DA67FE5D14E4834300DB7CC9;
remoteInfo = util; remoteInfo = util;
}; };
DAAC35D1156BD51600C5FD93 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 496DC37F1333D35600743F65;
remoteInfo = ApptentiveConnect;
};
DAAC35D3156BD51600C5FD93 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 496DC38C1333D35600743F65;
remoteInfo = ApptentiveConnectTests;
};
DAAC35D5156BD51600C5FD93 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 49D1118C13341A7C00603373;
remoteInfo = ApptentiveResources;
};
DAAC35D7156BD61D00C5FD93 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 496DC37E1333D35600743F65;
remoteInfo = ApptentiveConnect;
};
DAAC35D9156BD61D00C5FD93 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 49D1118B13341A7C00603373;
remoteInfo = ApptentiveResources;
};
DAC63283148681200075AEA5 /* PBXContainerItemProxy */ = { DAC63283148681200075AEA5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = DA5BFA3B147E415C00F98B1E /* Project object */; containerPortal = DA5BFA3B147E415C00F98B1E /* Project object */;
@ -943,6 +982,11 @@
DA95D5CD14DF0691008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; }; DA95D5CD14DF0691008D1B94 /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; };
DA95D5CE14DF0691008D1B94 /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; }; DA95D5CE14DF0691008D1B94 /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; };
DA95D5F014DF0B1E008D1B94 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; DA95D5F014DF0B1E008D1B94 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ApptentiveConnect.xcodeproj; path = External/apptentive/ApptentiveConnect/ApptentiveConnect.xcodeproj; sourceTree = "<group>"; };
DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
DAAC35E2156BDBA700C5FD93 /* Apptentive.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Apptentive.plist; sourceTree = "<group>"; };
DAAC35E5156BDBC100C5FD93 /* ATConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect.h; path = ../External/apptentive/ApptentiveConnect/source/ATConnect.h; sourceTree = "<group>"; };
DAAC35E6156BDF0E00C5FD93 /* ATAppRatingFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATAppRatingFlow.h; path = "../External/apptentive/ApptentiveConnect/source/Rating Flow/ATAppRatingFlow.h"; sourceTree = "<group>"; };
DAB8D43D15036BCF00CED3BC /* MasterPassword.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MasterPassword.xcdatamodel; sourceTree = "<group>"; }; DAB8D43D15036BCF00CED3BC /* MasterPassword.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MasterPassword.xcdatamodel; sourceTree = "<group>"; };
DAB8D44015036BCF00CED3BC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; DAB8D44015036BCF00CED3BC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
DAB8D44115036BCF00CED3BC /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; DAB8D44115036BCF00CED3BC /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
@ -1731,6 +1775,8 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
DAAC35DE156BD77D00C5FD93 /* CoreTelephony.framework in Frameworks */,
DAAC35DB156BD62F00C5FD93 /* libApptentiveConnect.a in Frameworks */,
DA44260A1557D9E40052177D /* libiCloudStoreManager.a in Frameworks */, DA44260A1557D9E40052177D /* libiCloudStoreManager.a in Frameworks */,
DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */, DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */,
DAD312BF1552A1BD00A3F9ED /* libLocalytics.a in Frameworks */, DAD312BF1552A1BD00A3F9ED /* libLocalytics.a in Frameworks */,
@ -1810,6 +1856,7 @@
DA5BFA39147E415C00F98B1E = { DA5BFA39147E415C00F98B1E = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */,
DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */, DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */,
DA5BFA50147E415C00F98B1E /* MasterPassword */, DA5BFA50147E415C00F98B1E /* MasterPassword */,
DAB8D46F15036BF600CED3BC /* Resources */, DAB8D46F15036BF600CED3BC /* Resources */,
@ -1821,6 +1868,7 @@
DAD3125E15528C9C00A3F9ED /* Crashlytics */, DAD3125E15528C9C00A3F9ED /* Crashlytics */,
DAD3126115528C9C00A3F9ED /* TestFlight */, DAD3126115528C9C00A3F9ED /* TestFlight */,
DAD3127315528CD200A3F9ED /* Localytics */, DAD3127315528CD200A3F9ED /* Localytics */,
DAAC35E0156BDBA700C5FD93 /* Apptentive */,
DA4425D71557BF260052177D /* iCloudStoreManager */, DA4425D71557BF260052177D /* iCloudStoreManager */,
DA5BFA47147E415C00F98B1E /* Frameworks */, DA5BFA47147E415C00F98B1E /* Frameworks */,
DA5BFA45147E415C00F98B1E /* Products */, DA5BFA45147E415C00F98B1E /* Products */,
@ -1844,6 +1892,7 @@
DA5BFA47147E415C00F98B1E /* Frameworks */ = { DA5BFA47147E415C00F98B1E /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */,
DAD312C01552A20800A3F9ED /* libsqlite3.dylib */, DAD312C01552A20800A3F9ED /* libsqlite3.dylib */,
DA95D5F014DF0B1E008D1B94 /* MessageUI.framework */, DA95D5F014DF0B1E008D1B94 /* MessageUI.framework */,
DABB981515100B4000B05417 /* SystemConfiguration.framework */, DABB981515100B4000B05417 /* SystemConfiguration.framework */,
@ -1973,6 +2022,26 @@
path = External/InAppSettingsKit/InAppSettingsKit/Xibs; path = External/InAppSettingsKit/InAppSettingsKit/Xibs;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
}; };
DAAC35C9156BD51500C5FD93 /* Products */ = {
isa = PBXGroup;
children = (
DAAC35D2156BD51600C5FD93 /* libApptentiveConnect.a */,
DAAC35D4156BD51600C5FD93 /* ApptentiveConnectTests.octest */,
DAAC35D6156BD51600C5FD93 /* ApptentiveResources.bundle */,
);
name = Products;
sourceTree = "<group>";
};
DAAC35E0156BDBA700C5FD93 /* Apptentive */ = {
isa = PBXGroup;
children = (
DAAC35E6156BDF0E00C5FD93 /* ATAppRatingFlow.h */,
DAAC35E5156BDBC100C5FD93 /* ATConnect.h */,
DAAC35E2156BDBA700C5FD93 /* Apptentive.plist */,
);
path = Apptentive;
sourceTree = "<group>";
};
DAB8D43E15036BCF00CED3BC /* iOS */ = { DAB8D43E15036BCF00CED3BC /* iOS */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -3073,6 +3142,8 @@
buildRules = ( buildRules = (
); );
dependencies = ( dependencies = (
DAAC35D8156BD61D00C5FD93 /* PBXTargetDependency */,
DAAC35DA156BD61D00C5FD93 /* PBXTargetDependency */,
); );
name = MasterPassword; name = MasterPassword;
productName = MasterPassword; productName = MasterPassword;
@ -3189,6 +3260,10 @@
productRefGroup = DA5BFA45147E415C00F98B1E /* Products */; productRefGroup = DA5BFA45147E415C00F98B1E /* Products */;
projectDirPath = ""; projectDirPath = "";
projectReferences = ( projectReferences = (
{
ProductGroup = DAAC35C9156BD51500C5FD93 /* Products */;
ProjectRef = DAAC35C8156BD51500C5FD93 /* ApptentiveConnect.xcodeproj */;
},
{ {
ProductGroup = DA79A9BE1557DDC700BAA07A /* Products */; ProductGroup = DA79A9BE1557DDC700BAA07A /* Products */;
ProjectRef = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */; ProjectRef = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */;
@ -3229,6 +3304,27 @@
remoteRef = DA79A9D11557DDC800BAA07A /* PBXContainerItemProxy */; remoteRef = DA79A9D11557DDC800BAA07A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
DAAC35D2156BD51600C5FD93 /* libApptentiveConnect.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libApptentiveConnect.a;
remoteRef = DAAC35D1156BD51600C5FD93 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
DAAC35D4156BD51600C5FD93 /* ApptentiveConnectTests.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveConnectTests.octest;
remoteRef = DAAC35D3156BD51600C5FD93 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
DAAC35D6156BD51600C5FD93 /* ApptentiveResources.bundle */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveResources.bundle;
remoteRef = DAAC35D5156BD51600C5FD93 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */ /* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */ /* Begin PBXResourcesBuildPhase section */
@ -3237,6 +3333,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
DAB8D97C1503718B00CED3BC /* jquery-1.6.1.min.js in Resources */, DAB8D97C1503718B00CED3BC /* jquery-1.6.1.min.js in Resources */,
DAAC35DC156BD66800C5FD93 /* ApptentiveResources.bundle in Resources */,
DA95D5F314DF0B9B008D1B94 /* IASKAppSettingsView.xib in Resources */, DA95D5F314DF0B9B008D1B94 /* IASKAppSettingsView.xib in Resources */,
DA95D5F414DF0B9F008D1B94 /* IASKAppSettingsWebView.xib in Resources */, DA95D5F414DF0B9F008D1B94 /* IASKAppSettingsWebView.xib in Resources */,
DA95D5F514DF0B9F008D1B94 /* IASKPSSliderSpecifierViewCell.xib in Resources */, DA95D5F514DF0B9F008D1B94 /* IASKPSSliderSpecifierViewCell.xib in Resources */,
@ -3897,6 +3994,7 @@
DA0A1D1215690AD40092735D /* tip_arrow_wood.png in Resources */, DA0A1D1215690AD40092735D /* tip_arrow_wood.png in Resources */,
DA0A1D1515690AF40092735D /* Icon-72@2x.png in Resources */, DA0A1D1515690AF40092735D /* Icon-72@2x.png in Resources */,
DA0A1D1615690AF40092735D /* Icon-Small-50@2x.png in Resources */, DA0A1D1615690AF40092735D /* Icon-Small-50@2x.png in Resources */,
DAAC35E4156BDBA700C5FD93 /* Apptentive.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -4065,6 +4163,16 @@
name = "Makefile-scrypt"; name = "Makefile-scrypt";
targetProxy = DA4DA1D71564470200F6F596 /* PBXContainerItemProxy */; targetProxy = DA4DA1D71564470200F6F596 /* PBXContainerItemProxy */;
}; };
DAAC35D8156BD61D00C5FD93 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = ApptentiveConnect;
targetProxy = DAAC35D7156BD61D00C5FD93 /* PBXContainerItemProxy */;
};
DAAC35DA156BD61D00C5FD93 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = ApptentiveResources;
targetProxy = DAAC35D9156BD61D00C5FD93 /* PBXContainerItemProxy */;
};
DAC63284148681200075AEA5 /* PBXTargetDependency */ = { DAC63284148681200075AEA5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = DAC6325C1486805C0075AEA5 /* uicolor-utilities */; target = DAC6325C1486805C0075AEA5 /* uicolor-utilities */;

View File

@ -15,6 +15,8 @@
#import "LocalyticsSession.h" #import "LocalyticsSession.h"
#import "TestFlight.h" #import "TestFlight.h"
#import <Crashlytics/Crashlytics.h> #import <Crashlytics/Crashlytics.h>
#import "ATConnect.h"
#import "ATAppRatingFlow.h"
@interface MPAppDelegate () @interface MPAppDelegate ()
@ -24,6 +26,9 @@
- (NSString *)crashlyticsInfo; - (NSString *)crashlyticsInfo;
- (NSString *)crashlyticsAPIKey; - (NSString *)crashlyticsAPIKey;
- (NSString *)apptentiveInfo;
- (NSString *)apptentiveAPIKey;
- (NSString *)localyticsInfo; - (NSString *)localyticsInfo;
- (NSString *)localyticsKey; - (NSString *)localyticsKey;
@ -143,8 +148,8 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifndef DEBUG
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
#ifndef DEBUG
@try { @try {
NSString *testFlightToken = [self testFlightToken]; NSString *testFlightToken = [self testFlightToken];
if ([testFlightToken length]) { if ([testFlightToken length]) {
@ -200,9 +205,22 @@
@catch (NSException *exception) { @catch (NSException *exception) {
err(@"Localytics exception: %@", exception); err(@"Localytics exception: %@", exception);
} }
});
#endif #endif
});
@try {
NSString *apptentiveAPIKey = [self apptentiveAPIKey];
if ([apptentiveAPIKey length]) {
dbg(@"Initializing Apptentive");
ATConnect *connection = [ATConnect sharedConnection];
connection.shouldTakeScreenshot = NO;
connection.apiKey = apptentiveAPIKey;
}
}
@catch (NSException *exception) {
err(@"Apptentive: %@", exception);
}
UIImage *navBarImage = [[UIImage imageNamed:@"ui_navbar_container"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; UIImage *navBarImage = [[UIImage imageNamed:@"ui_navbar_container"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsLandscapePhone]; [[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsLandscapePhone];
@ -270,11 +288,19 @@
@"https://youtrack.lyndir.com\n" @"https://youtrack.lyndir.com\n"
viewStyle:UIAlertViewStyleDefault tappedButtonBlock:nil viewStyle:UIAlertViewStyleDefault tappedButtonBlock:nil
cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil]; cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil];
#else
@try {
ATAppRatingFlow *sharedFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:[PearlConfig get].iTunesID];
[sharedFlow appDidLaunch:YES viewController:self.navigationController];
}
@catch (NSException *exception) {
err(@"Apptentive: %@", exception);
}
#endif #endif
[[UIApplication sharedApplication] setStatusBarHidden:NO [[UIApplication sharedApplication] setStatusBarHidden:NO
withAnimation:UIStatusBarAnimationSlide]; withAnimation:UIStatusBarAnimationSlide];
return [super application:application didFinishLaunchingWithOptions:launchOptions]; return [super application:application didFinishLaunchingWithOptions:launchOptions];
} }
@ -351,6 +377,11 @@
} }
[TestFlight passCheckpoint:MPTestFlightCheckpointActivated]; [TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
ATAppRatingFlow *sharedFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:[PearlConfig get].iTunesID];
[sharedFlow appDidEnterForeground:YES viewController:self.navigationController];
[super applicationDidBecomeActive:application];
} }
- (void)applicationDidEnterBackground:(UIApplication *)application { - (void)applicationDidEnterBackground:(UIApplication *)application {
@ -502,6 +533,25 @@
} }
#pragma mark - Apptentive
- (NSDictionary *)apptentiveInfo {
static NSDictionary *apptentiveInfo = nil;
if (apptentiveInfo == nil)
apptentiveInfo = [[NSDictionary alloc] initWithContentsOfURL:
[[NSBundle mainBundle] URLForResource:@"Apptentive" withExtension:@"plist"]];
return apptentiveInfo;
}
- (NSString *)apptentiveAPIKey {
return NullToNil([[self apptentiveInfo] valueForKeyPath:@"API Key"]);
}
#pragma mark - Localytics #pragma mark - Localytics

View File

@ -13,6 +13,7 @@
#import "MPElementGeneratedEntity.h" #import "MPElementGeneratedEntity.h"
#import "MPElementStoredEntity.h" #import "MPElementStoredEntity.h"
#import "IASKAppSettingsViewController.h" #import "IASKAppSettingsViewController.h"
#import "ATConnect.h"
#import <MobileCoreServices/MobileCoreServices.h> #import <MobileCoreServices/MobileCoreServices.h>
@ -393,36 +394,43 @@
return; return;
switch (buttonIndex - [sheet firstOtherButtonIndex]) { switch (buttonIndex - [sheet firstOtherButtonIndex]) {
case 0: case 0: {
[self toggleHelpAnimated:YES]; [self toggleHelpAnimated:YES];
break; break;
}
case 1: { case 1: {
[self setHelpChapter:@"faq"]; [self setHelpChapter:@"faq"];
[self setHelpHidden:NO animated:YES]; [self setHelpHidden:NO animated:YES];
break; break;
} }
case 2: case 2: {
[[MPAppDelegate get] showGuide]; [[MPAppDelegate get] showGuide];
break; break;
case 3: }
{ case 3: {
IASKAppSettingsViewController *settingsVC = [IASKAppSettingsViewController new]; IASKAppSettingsViewController *settingsVC = [IASKAppSettingsViewController new];
settingsVC.delegate = self; settingsVC.delegate = self;
[self.navigationController pushViewController:settingsVC animated:YES]; [self.navigationController pushViewController:settingsVC animated:YES];
break; break;
} }
case 4: case 4: {
[[MPAppDelegate get] export]; [[MPAppDelegate get] export];
break; break;
}
#ifdef ADHOC #ifdef ADHOC
case 5: case 5: {
[TestFlight openFeedbackView]; [TestFlight openFeedbackView];
break; break;
case 6: }
case 6: {
#else #else
case 5: case 5: {
ATConnect *connection = [ATConnect sharedConnection];
[connection presentFeedbackControllerFromViewController:self];
break;
}
case 6: {
#endif #endif
{
[[MPAppDelegate get] signOut:self]; [[MPAppDelegate get] signOut:self];
[[MPAppDelegate get] loadKey:YES]; [[MPAppDelegate get] loadKey:YES];
break; break;
@ -433,9 +441,7 @@
} cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil } cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil
otherTitles: otherTitles:
[self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings", @"Export", [self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings", @"Export",
#ifdef ADHOC
@"Feedback", @"Feedback",
#endif
@"Sign Out", @"Sign Out",
nil]; nil];
} }