├── README.md
├── FlurryUsageSample
├── en.lproj
│ └── InfoPlist.strings
├── ViewController.h
├── FirstViewController.h
├── AppDelegate.h
├── main.m
├── FlurryUsageSample-Prefix.pch
├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── LaunchImage.launchimage
│ │ └── Contents.json
├── FirstViewController.m
├── ViewController.m
├── FlurryUsageSample-Info.plist
├── AppDelegate.m
└── Base.lproj
│ └── Main.storyboard
├── FlurryUsageSampleTests
├── en.lproj
│ └── InfoPlist.strings
├── FlurryUsageSampleTests-Info.plist
└── FlurryUsageSampleTests.m
├── Flurry
├── libFlurry_4.3.0.a
└── Flurry.h
├── .gitignore
└── FlurryUsageSample.xcodeproj
├── project.xcworkspace
└── contents.xcworkspacedata
├── xcuserdata
└── tangqiao.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
├── xcshareddata
└── xcschemes
│ └── FlurryUsageSample.xcscheme
└── project.pbxproj
/README.md:
--------------------------------------------------------------------------------
1 | This is a demo project for using flurry.
2 |
--------------------------------------------------------------------------------
/FlurryUsageSample/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/FlurryUsageSampleTests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Flurry/libFlurry_4.3.0.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tangqiaoboy/FlurryUsageSample/HEAD/Flurry/libFlurry_4.3.0.a
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | FlurryUsageSample.xcodeproj/xcuserdata/*
2 | .DS_Store
3 | FlurryUsageSample.xcodeproj/project.xcworkspace/*
4 |
--------------------------------------------------------------------------------
/FlurryUsageSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/FlurryUsageSample/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-24.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FlurryUsageSample/FirstViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FirstViewController.h
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-25.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FirstViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FlurryUsageSample/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-24.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FlurryUsageSample/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-24.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "AppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/FlurryUsageSample/FlurryUsageSample-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_5_0
10 | #warning "This project uses features only available in iOS SDK 5.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #import "Flurry.h"
17 | #endif
18 |
--------------------------------------------------------------------------------
/FlurryUsageSample/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "40x40",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "60x60",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FlurryUsageSample/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "subtype" : "retina4",
14 | "extent" : "full-screen",
15 | "minimum-system-version" : "7.0",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FlurryUsageSample/FirstViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // FirstViewController.m
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-25.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import "FirstViewController.h"
10 |
11 | #define FLURRY_EVENT_KEY @"First View Controller"
12 |
13 | @implementation FirstViewController
14 |
15 | - (void)viewWillAppear:(BOOL)animated {
16 | [super viewWillAppear:animated];
17 | // 开始统计时间
18 | [Flurry logEvent:FLURRY_EVENT_KEY timed:YES];
19 | }
20 |
21 | - (void)viewWillDisappear:(BOOL)animated {
22 | [super viewWillDisappear:animated];
23 | // 结束统计时间
24 | [Flurry endTimedEvent:FLURRY_EVENT_KEY withParameters:nil];
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/FlurryUsageSample.xcodeproj/xcuserdata/tangqiao.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | FlurryUsageSample.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 45803E2A18192D48000E5CAA
16 |
17 | primary
18 |
19 |
20 | 45803E4B18192D48000E5CAA
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/FlurryUsageSampleTests/FlurryUsageSampleTests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | com.devtang.${PRODUCT_NAME:rfc1034identifier}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/FlurryUsageSample/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-24.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 |
11 | @implementation ViewController
12 |
13 | - (void)viewDidLoad
14 | {
15 | [super viewDidLoad];
16 | }
17 |
18 | - (void)didReceiveMemoryWarning
19 | {
20 | [super didReceiveMemoryWarning];
21 | }
22 |
23 | - (IBAction)firstButtonPressed:(id)sender {
24 | [Flurry logEvent:@"First Button Pressed"];
25 | [Flurry logEvent:@"Button Pressed"
26 | withParameters:@{@"target": @"first"}];
27 | }
28 |
29 | - (IBAction)secondButtonPressed:(id)sender {
30 | [Flurry logEvent:@"Second Button Pressed"];
31 | [Flurry logEvent:@"Button Pressed"
32 | withParameters:@{@"target": @"second"}];
33 | }
34 | @end
35 |
--------------------------------------------------------------------------------
/FlurryUsageSampleTests/FlurryUsageSampleTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // FlurryUsageSampleTests.m
3 | // FlurryUsageSampleTests
4 | //
5 | // Created by TangQiao on 13-10-24.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FlurryUsageSampleTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation FlurryUsageSampleTests
16 |
17 | - (void)setUp
18 | {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown
24 | {
25 | // Put teardown code here. This method is called after the invocation of each test method in the class.
26 | [super tearDown];
27 | }
28 |
29 | - (void)testExample
30 | {
31 | XCTAssertEqual(@"1", @"1", @"test pass");
32 | }
33 |
34 | - (void)testExample2
35 | {
36 | XCTAssertEqual(@"1", @"1", @"test failure");
37 | }
38 |
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/FlurryUsageSample/FlurryUsageSample-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.devtang.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/FlurryUsageSample/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // FlurryUsageSample
4 | //
5 | // Created by TangQiao on 13-10-24.
6 | // Copyright (c) 2013年 TangQiao. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @implementation AppDelegate
12 |
13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 | {
15 | // Override point for customization after application launch.
16 | [Flurry startSession:@"X28BBKTNZ9H3VYTBDBG3"];
17 | return YES;
18 | }
19 |
20 | - (void)applicationWillResignActive:(UIApplication *)application
21 | {
22 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
23 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
24 | }
25 |
26 | - (void)applicationDidEnterBackground:(UIApplication *)application
27 | {
28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
30 | }
31 |
32 | - (void)applicationWillEnterForeground:(UIApplication *)application
33 | {
34 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
35 | }
36 |
37 | - (void)applicationDidBecomeActive:(UIApplication *)application
38 | {
39 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
40 | }
41 |
42 | - (void)applicationWillTerminate:(UIApplication *)application
43 | {
44 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/FlurryUsageSample.xcodeproj/xcshareddata/xcschemes/FlurryUsageSample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
61 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
79 |
80 |
86 |
87 |
88 |
89 |
91 |
92 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/FlurryUsageSample/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
30 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/FlurryUsageSample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 4500835E181A0FF1004CEA60 /* FirstViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4500835D181A0FF1004CEA60 /* FirstViewController.m */; };
11 | 45803E2F18192D48000E5CAA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E2E18192D48000E5CAA /* Foundation.framework */; };
12 | 45803E3118192D48000E5CAA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E3018192D48000E5CAA /* CoreGraphics.framework */; };
13 | 45803E3318192D48000E5CAA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E3218192D48000E5CAA /* UIKit.framework */; };
14 | 45803E3918192D48000E5CAA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 45803E3718192D48000E5CAA /* InfoPlist.strings */; };
15 | 45803E3B18192D48000E5CAA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 45803E3A18192D48000E5CAA /* main.m */; };
16 | 45803E3F18192D48000E5CAA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 45803E3E18192D48000E5CAA /* AppDelegate.m */; };
17 | 45803E4218192D48000E5CAA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 45803E4018192D48000E5CAA /* Main.storyboard */; };
18 | 45803E4518192D48000E5CAA /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 45803E4418192D48000E5CAA /* ViewController.m */; };
19 | 45803E4718192D48000E5CAA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 45803E4618192D48000E5CAA /* Images.xcassets */; };
20 | 45803E4E18192D48000E5CAA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E4D18192D48000E5CAA /* XCTest.framework */; };
21 | 45803E4F18192D48000E5CAA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E2E18192D48000E5CAA /* Foundation.framework */; };
22 | 45803E5018192D48000E5CAA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E3218192D48000E5CAA /* UIKit.framework */; };
23 | 45803E5818192D48000E5CAA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 45803E5618192D48000E5CAA /* InfoPlist.strings */; };
24 | 45803E5A18192D48000E5CAA /* FlurryUsageSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 45803E5918192D48000E5CAA /* FlurryUsageSampleTests.m */; };
25 | 45803E6618192DD2000E5CAA /* libFlurry_4.3.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E6518192DD2000E5CAA /* libFlurry_4.3.0.a */; };
26 | 45803E6E181934EA000E5CAA /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E6D181934EA000E5CAA /* SystemConfiguration.framework */; };
27 | 45803E6F1819359D000E5CAA /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45803E6B181934CF000E5CAA /* Security.framework */; };
28 | /* End PBXBuildFile section */
29 |
30 | /* Begin PBXContainerItemProxy section */
31 | 45803E5118192D48000E5CAA /* PBXContainerItemProxy */ = {
32 | isa = PBXContainerItemProxy;
33 | containerPortal = 45803E2318192D48000E5CAA /* Project object */;
34 | proxyType = 1;
35 | remoteGlobalIDString = 45803E2A18192D48000E5CAA;
36 | remoteInfo = FlurryUsageSample;
37 | };
38 | /* End PBXContainerItemProxy section */
39 |
40 | /* Begin PBXFileReference section */
41 | 4500835C181A0FF1004CEA60 /* FirstViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstViewController.h; sourceTree = ""; };
42 | 4500835D181A0FF1004CEA60 /* FirstViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstViewController.m; sourceTree = ""; };
43 | 45803E2B18192D48000E5CAA /* FlurryUsageSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlurryUsageSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
44 | 45803E2E18192D48000E5CAA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
45 | 45803E3018192D48000E5CAA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
46 | 45803E3218192D48000E5CAA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
47 | 45803E3618192D48000E5CAA /* FlurryUsageSample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "FlurryUsageSample-Info.plist"; sourceTree = ""; };
48 | 45803E3818192D48000E5CAA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
49 | 45803E3A18192D48000E5CAA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
50 | 45803E3C18192D48000E5CAA /* FlurryUsageSample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FlurryUsageSample-Prefix.pch"; sourceTree = ""; };
51 | 45803E3D18192D48000E5CAA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
52 | 45803E3E18192D48000E5CAA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
53 | 45803E4118192D48000E5CAA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
54 | 45803E4318192D48000E5CAA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
55 | 45803E4418192D48000E5CAA /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
56 | 45803E4618192D48000E5CAA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
57 | 45803E4C18192D48000E5CAA /* FlurryUsageSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FlurryUsageSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
58 | 45803E4D18192D48000E5CAA /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
59 | 45803E5518192D48000E5CAA /* FlurryUsageSampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "FlurryUsageSampleTests-Info.plist"; sourceTree = ""; };
60 | 45803E5718192D48000E5CAA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
61 | 45803E5918192D48000E5CAA /* FlurryUsageSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlurryUsageSampleTests.m; sourceTree = ""; };
62 | 45803E6418192DD2000E5CAA /* Flurry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Flurry.h; sourceTree = ""; };
63 | 45803E6518192DD2000E5CAA /* libFlurry_4.3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libFlurry_4.3.0.a; sourceTree = ""; };
64 | 45803E6918193445000E5CAA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
65 | 45803E6B181934CF000E5CAA /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
66 | 45803E6D181934EA000E5CAA /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
67 | /* End PBXFileReference section */
68 |
69 | /* Begin PBXFrameworksBuildPhase section */
70 | 45803E2818192D48000E5CAA /* Frameworks */ = {
71 | isa = PBXFrameworksBuildPhase;
72 | buildActionMask = 2147483647;
73 | files = (
74 | 45803E6F1819359D000E5CAA /* Security.framework in Frameworks */,
75 | 45803E6E181934EA000E5CAA /* SystemConfiguration.framework in Frameworks */,
76 | 45803E3118192D48000E5CAA /* CoreGraphics.framework in Frameworks */,
77 | 45803E6618192DD2000E5CAA /* libFlurry_4.3.0.a in Frameworks */,
78 | 45803E3318192D48000E5CAA /* UIKit.framework in Frameworks */,
79 | 45803E2F18192D48000E5CAA /* Foundation.framework in Frameworks */,
80 | );
81 | runOnlyForDeploymentPostprocessing = 0;
82 | };
83 | 45803E4918192D48000E5CAA /* Frameworks */ = {
84 | isa = PBXFrameworksBuildPhase;
85 | buildActionMask = 2147483647;
86 | files = (
87 | 45803E4E18192D48000E5CAA /* XCTest.framework in Frameworks */,
88 | 45803E5018192D48000E5CAA /* UIKit.framework in Frameworks */,
89 | 45803E4F18192D48000E5CAA /* Foundation.framework in Frameworks */,
90 | );
91 | runOnlyForDeploymentPostprocessing = 0;
92 | };
93 | /* End PBXFrameworksBuildPhase section */
94 |
95 | /* Begin PBXGroup section */
96 | 45803E2218192D48000E5CAA = {
97 | isa = PBXGroup;
98 | children = (
99 | 45803E3418192D48000E5CAA /* FlurryUsageSample */,
100 | 45803E6318192DD2000E5CAA /* Flurry */,
101 | 45803E5318192D48000E5CAA /* FlurryUsageSampleTests */,
102 | 45803E2D18192D48000E5CAA /* Frameworks */,
103 | 45803E2C18192D48000E5CAA /* Products */,
104 | );
105 | sourceTree = "";
106 | };
107 | 45803E2C18192D48000E5CAA /* Products */ = {
108 | isa = PBXGroup;
109 | children = (
110 | 45803E2B18192D48000E5CAA /* FlurryUsageSample.app */,
111 | 45803E4C18192D48000E5CAA /* FlurryUsageSampleTests.xctest */,
112 | );
113 | name = Products;
114 | sourceTree = "";
115 | };
116 | 45803E2D18192D48000E5CAA /* Frameworks */ = {
117 | isa = PBXGroup;
118 | children = (
119 | 45803E6D181934EA000E5CAA /* SystemConfiguration.framework */,
120 | 45803E6B181934CF000E5CAA /* Security.framework */,
121 | 45803E6918193445000E5CAA /* CFNetwork.framework */,
122 | 45803E2E18192D48000E5CAA /* Foundation.framework */,
123 | 45803E3018192D48000E5CAA /* CoreGraphics.framework */,
124 | 45803E3218192D48000E5CAA /* UIKit.framework */,
125 | 45803E4D18192D48000E5CAA /* XCTest.framework */,
126 | );
127 | name = Frameworks;
128 | sourceTree = "";
129 | };
130 | 45803E3418192D48000E5CAA /* FlurryUsageSample */ = {
131 | isa = PBXGroup;
132 | children = (
133 | 45803E3D18192D48000E5CAA /* AppDelegate.h */,
134 | 45803E3E18192D48000E5CAA /* AppDelegate.m */,
135 | 45803E4018192D48000E5CAA /* Main.storyboard */,
136 | 45803E4318192D48000E5CAA /* ViewController.h */,
137 | 45803E4418192D48000E5CAA /* ViewController.m */,
138 | 45803E4618192D48000E5CAA /* Images.xcassets */,
139 | 45803E3518192D48000E5CAA /* Supporting Files */,
140 | 4500835C181A0FF1004CEA60 /* FirstViewController.h */,
141 | 4500835D181A0FF1004CEA60 /* FirstViewController.m */,
142 | );
143 | path = FlurryUsageSample;
144 | sourceTree = "";
145 | };
146 | 45803E3518192D48000E5CAA /* Supporting Files */ = {
147 | isa = PBXGroup;
148 | children = (
149 | 45803E3618192D48000E5CAA /* FlurryUsageSample-Info.plist */,
150 | 45803E3718192D48000E5CAA /* InfoPlist.strings */,
151 | 45803E3A18192D48000E5CAA /* main.m */,
152 | 45803E3C18192D48000E5CAA /* FlurryUsageSample-Prefix.pch */,
153 | );
154 | name = "Supporting Files";
155 | sourceTree = "";
156 | };
157 | 45803E5318192D48000E5CAA /* FlurryUsageSampleTests */ = {
158 | isa = PBXGroup;
159 | children = (
160 | 45803E5918192D48000E5CAA /* FlurryUsageSampleTests.m */,
161 | 45803E5418192D48000E5CAA /* Supporting Files */,
162 | );
163 | path = FlurryUsageSampleTests;
164 | sourceTree = "";
165 | };
166 | 45803E5418192D48000E5CAA /* Supporting Files */ = {
167 | isa = PBXGroup;
168 | children = (
169 | 45803E5518192D48000E5CAA /* FlurryUsageSampleTests-Info.plist */,
170 | 45803E5618192D48000E5CAA /* InfoPlist.strings */,
171 | );
172 | name = "Supporting Files";
173 | sourceTree = "";
174 | };
175 | 45803E6318192DD2000E5CAA /* Flurry */ = {
176 | isa = PBXGroup;
177 | children = (
178 | 45803E6418192DD2000E5CAA /* Flurry.h */,
179 | 45803E6518192DD2000E5CAA /* libFlurry_4.3.0.a */,
180 | );
181 | path = Flurry;
182 | sourceTree = "";
183 | };
184 | /* End PBXGroup section */
185 |
186 | /* Begin PBXNativeTarget section */
187 | 45803E2A18192D48000E5CAA /* FlurryUsageSample */ = {
188 | isa = PBXNativeTarget;
189 | buildConfigurationList = 45803E5D18192D48000E5CAA /* Build configuration list for PBXNativeTarget "FlurryUsageSample" */;
190 | buildPhases = (
191 | 45803E2718192D48000E5CAA /* Sources */,
192 | 45803E2818192D48000E5CAA /* Frameworks */,
193 | 45803E2918192D48000E5CAA /* Resources */,
194 | );
195 | buildRules = (
196 | );
197 | dependencies = (
198 | );
199 | name = FlurryUsageSample;
200 | productName = FlurryUsageSample;
201 | productReference = 45803E2B18192D48000E5CAA /* FlurryUsageSample.app */;
202 | productType = "com.apple.product-type.application";
203 | };
204 | 45803E4B18192D48000E5CAA /* FlurryUsageSampleTests */ = {
205 | isa = PBXNativeTarget;
206 | buildConfigurationList = 45803E6018192D48000E5CAA /* Build configuration list for PBXNativeTarget "FlurryUsageSampleTests" */;
207 | buildPhases = (
208 | 45803E4818192D48000E5CAA /* Sources */,
209 | 45803E4918192D48000E5CAA /* Frameworks */,
210 | 45803E4A18192D48000E5CAA /* Resources */,
211 | );
212 | buildRules = (
213 | );
214 | dependencies = (
215 | 45803E5218192D48000E5CAA /* PBXTargetDependency */,
216 | );
217 | name = FlurryUsageSampleTests;
218 | productName = FlurryUsageSampleTests;
219 | productReference = 45803E4C18192D48000E5CAA /* FlurryUsageSampleTests.xctest */;
220 | productType = "com.apple.product-type.bundle.unit-test";
221 | };
222 | /* End PBXNativeTarget section */
223 |
224 | /* Begin PBXProject section */
225 | 45803E2318192D48000E5CAA /* Project object */ = {
226 | isa = PBXProject;
227 | attributes = {
228 | LastUpgradeCheck = 0500;
229 | ORGANIZATIONNAME = TangQiao;
230 | TargetAttributes = {
231 | 45803E4B18192D48000E5CAA = {
232 | TestTargetID = 45803E2A18192D48000E5CAA;
233 | };
234 | };
235 | };
236 | buildConfigurationList = 45803E2618192D48000E5CAA /* Build configuration list for PBXProject "FlurryUsageSample" */;
237 | compatibilityVersion = "Xcode 3.2";
238 | developmentRegion = English;
239 | hasScannedForEncodings = 0;
240 | knownRegions = (
241 | en,
242 | Base,
243 | );
244 | mainGroup = 45803E2218192D48000E5CAA;
245 | productRefGroup = 45803E2C18192D48000E5CAA /* Products */;
246 | projectDirPath = "";
247 | projectRoot = "";
248 | targets = (
249 | 45803E2A18192D48000E5CAA /* FlurryUsageSample */,
250 | 45803E4B18192D48000E5CAA /* FlurryUsageSampleTests */,
251 | );
252 | };
253 | /* End PBXProject section */
254 |
255 | /* Begin PBXResourcesBuildPhase section */
256 | 45803E2918192D48000E5CAA /* Resources */ = {
257 | isa = PBXResourcesBuildPhase;
258 | buildActionMask = 2147483647;
259 | files = (
260 | 45803E4718192D48000E5CAA /* Images.xcassets in Resources */,
261 | 45803E3918192D48000E5CAA /* InfoPlist.strings in Resources */,
262 | 45803E4218192D48000E5CAA /* Main.storyboard in Resources */,
263 | );
264 | runOnlyForDeploymentPostprocessing = 0;
265 | };
266 | 45803E4A18192D48000E5CAA /* Resources */ = {
267 | isa = PBXResourcesBuildPhase;
268 | buildActionMask = 2147483647;
269 | files = (
270 | 45803E5818192D48000E5CAA /* InfoPlist.strings in Resources */,
271 | );
272 | runOnlyForDeploymentPostprocessing = 0;
273 | };
274 | /* End PBXResourcesBuildPhase section */
275 |
276 | /* Begin PBXSourcesBuildPhase section */
277 | 45803E2718192D48000E5CAA /* Sources */ = {
278 | isa = PBXSourcesBuildPhase;
279 | buildActionMask = 2147483647;
280 | files = (
281 | 45803E4518192D48000E5CAA /* ViewController.m in Sources */,
282 | 45803E3F18192D48000E5CAA /* AppDelegate.m in Sources */,
283 | 45803E3B18192D48000E5CAA /* main.m in Sources */,
284 | 4500835E181A0FF1004CEA60 /* FirstViewController.m in Sources */,
285 | );
286 | runOnlyForDeploymentPostprocessing = 0;
287 | };
288 | 45803E4818192D48000E5CAA /* Sources */ = {
289 | isa = PBXSourcesBuildPhase;
290 | buildActionMask = 2147483647;
291 | files = (
292 | 45803E5A18192D48000E5CAA /* FlurryUsageSampleTests.m in Sources */,
293 | );
294 | runOnlyForDeploymentPostprocessing = 0;
295 | };
296 | /* End PBXSourcesBuildPhase section */
297 |
298 | /* Begin PBXTargetDependency section */
299 | 45803E5218192D48000E5CAA /* PBXTargetDependency */ = {
300 | isa = PBXTargetDependency;
301 | target = 45803E2A18192D48000E5CAA /* FlurryUsageSample */;
302 | targetProxy = 45803E5118192D48000E5CAA /* PBXContainerItemProxy */;
303 | };
304 | /* End PBXTargetDependency section */
305 |
306 | /* Begin PBXVariantGroup section */
307 | 45803E3718192D48000E5CAA /* InfoPlist.strings */ = {
308 | isa = PBXVariantGroup;
309 | children = (
310 | 45803E3818192D48000E5CAA /* en */,
311 | );
312 | name = InfoPlist.strings;
313 | sourceTree = "";
314 | };
315 | 45803E4018192D48000E5CAA /* Main.storyboard */ = {
316 | isa = PBXVariantGroup;
317 | children = (
318 | 45803E4118192D48000E5CAA /* Base */,
319 | );
320 | name = Main.storyboard;
321 | sourceTree = "";
322 | };
323 | 45803E5618192D48000E5CAA /* InfoPlist.strings */ = {
324 | isa = PBXVariantGroup;
325 | children = (
326 | 45803E5718192D48000E5CAA /* en */,
327 | );
328 | name = InfoPlist.strings;
329 | sourceTree = "";
330 | };
331 | /* End PBXVariantGroup section */
332 |
333 | /* Begin XCBuildConfiguration section */
334 | 45803E5B18192D48000E5CAA /* Debug */ = {
335 | isa = XCBuildConfiguration;
336 | buildSettings = {
337 | ALWAYS_SEARCH_USER_PATHS = NO;
338 | ARCHS = "$(ARCHS_STANDARD)";
339 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
340 | CLANG_CXX_LIBRARY = "libc++";
341 | CLANG_ENABLE_MODULES = YES;
342 | CLANG_ENABLE_OBJC_ARC = YES;
343 | CLANG_WARN_BOOL_CONVERSION = YES;
344 | CLANG_WARN_CONSTANT_CONVERSION = YES;
345 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
346 | CLANG_WARN_EMPTY_BODY = YES;
347 | CLANG_WARN_ENUM_CONVERSION = YES;
348 | CLANG_WARN_INT_CONVERSION = YES;
349 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
350 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
351 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
352 | COPY_PHASE_STRIP = NO;
353 | GCC_C_LANGUAGE_STANDARD = gnu99;
354 | GCC_DYNAMIC_NO_PIC = NO;
355 | GCC_OPTIMIZATION_LEVEL = 0;
356 | GCC_PREPROCESSOR_DEFINITIONS = (
357 | "DEBUG=1",
358 | "$(inherited)",
359 | );
360 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
361 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
362 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
363 | GCC_WARN_UNDECLARED_SELECTOR = YES;
364 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
365 | GCC_WARN_UNUSED_FUNCTION = YES;
366 | GCC_WARN_UNUSED_VARIABLE = YES;
367 | IPHONEOS_DEPLOYMENT_TARGET = 5.0;
368 | ONLY_ACTIVE_ARCH = YES;
369 | SDKROOT = iphoneos;
370 | };
371 | name = Debug;
372 | };
373 | 45803E5C18192D48000E5CAA /* Release */ = {
374 | isa = XCBuildConfiguration;
375 | buildSettings = {
376 | ALWAYS_SEARCH_USER_PATHS = NO;
377 | ARCHS = "$(ARCHS_STANDARD)";
378 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
379 | CLANG_CXX_LIBRARY = "libc++";
380 | CLANG_ENABLE_MODULES = YES;
381 | CLANG_ENABLE_OBJC_ARC = YES;
382 | CLANG_WARN_BOOL_CONVERSION = YES;
383 | CLANG_WARN_CONSTANT_CONVERSION = YES;
384 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
385 | CLANG_WARN_EMPTY_BODY = YES;
386 | CLANG_WARN_ENUM_CONVERSION = YES;
387 | CLANG_WARN_INT_CONVERSION = YES;
388 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
389 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
390 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
391 | COPY_PHASE_STRIP = YES;
392 | ENABLE_NS_ASSERTIONS = NO;
393 | GCC_C_LANGUAGE_STANDARD = gnu99;
394 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
395 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
396 | GCC_WARN_UNDECLARED_SELECTOR = YES;
397 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
398 | GCC_WARN_UNUSED_FUNCTION = YES;
399 | GCC_WARN_UNUSED_VARIABLE = YES;
400 | IPHONEOS_DEPLOYMENT_TARGET = 5.0;
401 | SDKROOT = iphoneos;
402 | VALIDATE_PRODUCT = YES;
403 | };
404 | name = Release;
405 | };
406 | 45803E5E18192D48000E5CAA /* Debug */ = {
407 | isa = XCBuildConfiguration;
408 | buildSettings = {
409 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
410 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
411 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
412 | GCC_PREFIX_HEADER = "FlurryUsageSample/FlurryUsageSample-Prefix.pch";
413 | INFOPLIST_FILE = "FlurryUsageSample/FlurryUsageSample-Info.plist";
414 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
415 | LIBRARY_SEARCH_PATHS = (
416 | "$(inherited)",
417 | "$(SRCROOT)/Flurry",
418 | );
419 | PRODUCT_NAME = "$(TARGET_NAME)";
420 | WRAPPER_EXTENSION = app;
421 | };
422 | name = Debug;
423 | };
424 | 45803E5F18192D48000E5CAA /* Release */ = {
425 | isa = XCBuildConfiguration;
426 | buildSettings = {
427 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
428 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
429 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
430 | GCC_PREFIX_HEADER = "FlurryUsageSample/FlurryUsageSample-Prefix.pch";
431 | INFOPLIST_FILE = "FlurryUsageSample/FlurryUsageSample-Info.plist";
432 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
433 | LIBRARY_SEARCH_PATHS = (
434 | "$(inherited)",
435 | "$(SRCROOT)/Flurry",
436 | );
437 | PRODUCT_NAME = "$(TARGET_NAME)";
438 | WRAPPER_EXTENSION = app;
439 | };
440 | name = Release;
441 | };
442 | 45803E6118192D48000E5CAA /* Debug */ = {
443 | isa = XCBuildConfiguration;
444 | buildSettings = {
445 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
446 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/FlurryUsageSample.app/FlurryUsageSample";
447 | FRAMEWORK_SEARCH_PATHS = (
448 | "$(SDKROOT)/Developer/Library/Frameworks",
449 | "$(inherited)",
450 | "$(DEVELOPER_FRAMEWORKS_DIR)",
451 | );
452 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
453 | GCC_PREFIX_HEADER = "FlurryUsageSample/FlurryUsageSample-Prefix.pch";
454 | GCC_PREPROCESSOR_DEFINITIONS = (
455 | "DEBUG=1",
456 | "$(inherited)",
457 | );
458 | INFOPLIST_FILE = "FlurryUsageSampleTests/FlurryUsageSampleTests-Info.plist";
459 | PRODUCT_NAME = "$(TARGET_NAME)";
460 | TEST_HOST = "$(BUNDLE_LOADER)";
461 | WRAPPER_EXTENSION = xctest;
462 | };
463 | name = Debug;
464 | };
465 | 45803E6218192D48000E5CAA /* Release */ = {
466 | isa = XCBuildConfiguration;
467 | buildSettings = {
468 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
469 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/FlurryUsageSample.app/FlurryUsageSample";
470 | FRAMEWORK_SEARCH_PATHS = (
471 | "$(SDKROOT)/Developer/Library/Frameworks",
472 | "$(inherited)",
473 | "$(DEVELOPER_FRAMEWORKS_DIR)",
474 | );
475 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
476 | GCC_PREFIX_HEADER = "FlurryUsageSample/FlurryUsageSample-Prefix.pch";
477 | INFOPLIST_FILE = "FlurryUsageSampleTests/FlurryUsageSampleTests-Info.plist";
478 | PRODUCT_NAME = "$(TARGET_NAME)";
479 | TEST_HOST = "$(BUNDLE_LOADER)";
480 | WRAPPER_EXTENSION = xctest;
481 | };
482 | name = Release;
483 | };
484 | /* End XCBuildConfiguration section */
485 |
486 | /* Begin XCConfigurationList section */
487 | 45803E2618192D48000E5CAA /* Build configuration list for PBXProject "FlurryUsageSample" */ = {
488 | isa = XCConfigurationList;
489 | buildConfigurations = (
490 | 45803E5B18192D48000E5CAA /* Debug */,
491 | 45803E5C18192D48000E5CAA /* Release */,
492 | );
493 | defaultConfigurationIsVisible = 0;
494 | defaultConfigurationName = Release;
495 | };
496 | 45803E5D18192D48000E5CAA /* Build configuration list for PBXNativeTarget "FlurryUsageSample" */ = {
497 | isa = XCConfigurationList;
498 | buildConfigurations = (
499 | 45803E5E18192D48000E5CAA /* Debug */,
500 | 45803E5F18192D48000E5CAA /* Release */,
501 | );
502 | defaultConfigurationIsVisible = 0;
503 | defaultConfigurationName = Release;
504 | };
505 | 45803E6018192D48000E5CAA /* Build configuration list for PBXNativeTarget "FlurryUsageSampleTests" */ = {
506 | isa = XCConfigurationList;
507 | buildConfigurations = (
508 | 45803E6118192D48000E5CAA /* Debug */,
509 | 45803E6218192D48000E5CAA /* Release */,
510 | );
511 | defaultConfigurationIsVisible = 0;
512 | defaultConfigurationName = Release;
513 | };
514 | /* End XCConfigurationList section */
515 | };
516 | rootObject = 45803E2318192D48000E5CAA /* Project object */;
517 | }
518 |
--------------------------------------------------------------------------------
/Flurry/Flurry.h:
--------------------------------------------------------------------------------
1 | //
2 | // Flurry.h
3 | // Flurry iOS Analytics Agent
4 | //
5 | // Copyright 2009-2012 Flurry, Inc. All rights reserved.
6 | //
7 | // Methods in this header file are for use with Flurry Analytics
8 |
9 | #import
10 |
11 | /*!
12 | * @brief Provides all available methods for defining and reporting Analytics from use
13 | * of your app.
14 | *
15 | * Set of methods that allow developers to capture detailed, aggregate information
16 | * regarding the use of their app by end users.
17 | *
18 | * @note This class provides methods necessary for correct function of FlurryAds.h.
19 | * For information on how to use Flurry's Ads SDK to
20 | * attract high-quality users and monetize your user base see Support Center - Publishers.
21 | *
22 | * @author 2009 - 2013 Flurry, Inc. All Rights Reserved.
23 | * @version 4.3.0
24 | *
25 | */
26 |
27 | /*!
28 | * @brief Enum for setting up log output level.
29 | * @since 4.2.0
30 | *
31 | */
32 | typedef enum {
33 | FlurryLogLevelNone = 0, //No output
34 | FlurryLogLevelCriticalOnly, //Default, outputs only critical log events
35 | FlurryLogLevelDebug, //Debug level, outputs critical and main log events
36 | FlurryLogLevelAll //Highest level, outputs all log events
37 | } FlurryLogLevel;
38 |
39 |
40 | @interface Flurry : NSObject {
41 | }
42 |
43 | /** @name Pre-Session Calls
44 | * Optional sdk settings that should be called before start session.
45 | */
46 | //@{
47 |
48 | /*!
49 | * @brief Explicitly specifies the App Version that Flurry will use to group Analytics data.
50 | * @since 2.7
51 | *
52 | * This is an optional method that overrides the App Version Flurry uses for reporting. Flurry will
53 | * use the CFBundleVersion in your info.plist file when this method is not invoked.
54 | *
55 | * @note There is a maximum of 605 versions allowed for a single app. \n
56 | * This method must be called prior to invoking #startSession:.
57 | *
58 | * @param version The custom version name.
59 | */
60 |
61 | + (void)setAppVersion:(NSString *)version;
62 |
63 | /*!
64 | * @brief Retrieves the Flurry Agent Build Version.
65 | * @since 2.7
66 | *
67 | * This is an optional method that retrieves the Flurry Agent Version the app is running under.
68 | * It is most often used if reporting an unexpected behavior of the SDK to
69 | * Flurry Support
70 | *
71 | * @note This method must be called prior to invoking #startSession:. \n
72 | * FAQ for the iPhone SDK is located at
73 | * Support Center - iPhone FAQ.
74 | *
75 | * @see #setLogLevel: for information on how to view debugging information on your console.
76 | *
77 | * @return The agent version of the Flurry SDK.
78 | *
79 | */
80 | + (NSString *)getFlurryAgentVersion;
81 |
82 | /*!
83 | * @brief Displays an exception in the debug log if thrown during a Session.
84 | * @since 2.7
85 | *
86 | * This is an optional method that augments the debug logs with exceptions that occur during the session.
87 | * You must both capture exceptions to Flurry and set debug logging to enabled for this method to
88 | * display information to the console. The default setting for this method is @c NO.
89 | *
90 | * @note This method must be called prior to invoking #startSession:.
91 | *
92 | * @see #setLogLevel: for information on how to view debugging information on your console. \n
93 | * #logError:message:exception: for details on logging exceptions. \n
94 | * #logError:message:error: for details on logging errors.
95 | *
96 | * @param value @c YES to show errors in debug logs, @c NO to omit errors in debug logs.
97 | */
98 | + (void)setShowErrorInLogEnabled:(BOOL)value;
99 |
100 | /*!
101 | * @brief Generates debug logs to console.
102 | * @since 2.7
103 | *
104 | * This is an optional method that displays debug information related to the Flurry SDK.
105 | * display information to the console. The default setting for this method is @c NO
106 | * which sets the log level to @c FlurryLogLevelCriticalOnly.
107 | * When set to @c YES the debug log level is set to @c FlurryLogLevelDebug
108 | *
109 | * @note This method must be called prior to invoking #startSession:. If the method, setLogLevel is called later in the code, debug logging will be automatically enabled.
110 | *
111 | * @param value @c YES to show debug logs, @c NO to omit debug logs.
112 | *
113 | */
114 | + (void)setDebugLogEnabled:(BOOL)value;
115 |
116 | /*!
117 | * @brief Generates debug logs to console.
118 | * @since 4.2.2
119 | *
120 | * This is an optional method that displays debug information related to the Flurry SDK.
121 | * display information to the console. The default setting for this method is @c FlurryLogLevelCritycalOnly.
122 | *
123 | * @note Its good practice to call this method prior to invoking #startSession:. If debug logging is disabled earlier, this method will enable it.
124 | *
125 | * @param value Log level
126 | *
127 | */
128 | + (void)setLogLevel:(FlurryLogLevel)value;
129 |
130 | /*!
131 | * @brief Set the timeout for expiring a Flurry session.
132 | * @since 2.7
133 | *
134 | * This is an optional method that sets the time the app may be in the background before
135 | * starting a new session upon resume. The default value for the session timeout is 10
136 | * seconds in the background.
137 | *
138 | * @note This method must be called prior to invoking #startSession:.
139 | *
140 | * @param seconds The time in seconds to set the session timeout to.
141 | */
142 | + (void)setSessionContinueSeconds:(int)seconds;
143 |
144 | /*!
145 | * @brief Send data over a secure transport.
146 | * @since 3.0
147 | *
148 | * This is an optional method that sends data over an SSL connection when enabled. The
149 | * default value is @c NO.
150 | *
151 | * @note This method must be called prior to invoking #startSession:.
152 | *
153 | * @param value @c YES to send data over secure connection.
154 | */
155 | + (void)setSecureTransportEnabled:(BOOL)value;
156 |
157 | /*!
158 | * @brief Enable automatic collection of crash reports.
159 | * @since 4.1
160 | *
161 | * This is an optional method that collects crash reports when enabled. The
162 | * default value is @c NO.
163 | *
164 | * @note This method must be called prior to invoking #startSession:.
165 | *
166 | * @param value @c YES to enable collection of crash reports.
167 | */
168 | + (void)setCrashReportingEnabled:(BOOL)value;
169 |
170 | //@}
171 |
172 | /*!
173 | * @brief Start a Flurry session for the project denoted by @c apiKey.
174 | * @since 2.6
175 | *
176 | * This method serves as the entry point to Flurry Analytics collection. It must be
177 | * called in the scope of @c applicationDidFinishLaunching. The session will continue
178 | * for the period the app is in the foreground until your app is backgrounded for the
179 | * time specified in #setSessionContinueSeconds:. If the app is resumed in that period
180 | * the session will continue, otherwise a new session will begin.
181 | *
182 | * Crash reporting will not be enabled. See #setCrashReportingEnabled: for
183 | * more information.
184 | *
185 | * @note If testing on a simulator, please be sure to send App to background via home
186 | * button. Flurry depends on the iOS lifecycle to be complete for full reporting.
187 | *
188 | * @see #setSessionContinueSeconds: for details on setting a custom session timeout.
189 | *
190 | * @code
191 | * - (void)applicationDidFinishLaunching:(UIApplication *)application
192 | {
193 | // Optional Flurry startup methods
194 | [Flurry startSession:@"YOUR_API_KEY"];
195 | // ....
196 | }
197 | * @endcode
198 | *
199 | * @param apiKey The API key for this project.
200 | */
201 |
202 | + (void)startSession:(NSString *)apiKey;
203 |
204 |
205 | /*!
206 | * @brief Start a Flurry session for the project denoted by @c apiKey.
207 | * @since 4.0.8
208 | *
209 | * This method serves as the entry point to Flurry Analytics collection. It must be
210 | * called in the scope of @c applicationDidFinishLaunching passing in the launchOptions param.
211 | * The session will continue
212 | * for the period the app is in the foreground until your app is backgrounded for the
213 | * time specified in #setSessionContinueSeconds:. If the app is resumed in that period
214 | * the session will continue, otherwise a new session will begin.
215 | *
216 | * @note If testing on a simulator, please be sure to send App to background via home
217 | * button. Flurry depends on the iOS lifecycle to be complete for full reporting.
218 | *
219 | * @see #setSessionContinueSeconds: for details on setting a custom session timeout.
220 | *
221 | * @code
222 | * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
223 | {
224 | // Optional Flurry startup methods
225 | [Flurry startSession:@"YOUR_API_KEY" withOptions:launchOptions];
226 | // ....
227 | }
228 | * @endcode
229 | *
230 | * @param apiKey The API key for this project.
231 | * @param options passed launchOptions from the applicatin's didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
232 |
233 | */
234 | + (void) startSession:(NSString *)apiKey withOptions:(id)options;
235 |
236 |
237 | /*!
238 | * @brief Pauses a Flurry session left running in background.
239 | * @since 4.2.2
240 | *
241 | * This method should be used in case of #setBackgroundSessionEnabled: set to YES. It can be
242 | * called when application finished all background tasks (such as playing music) to pause session.
243 | *
244 | * @see #setBackgroundSessionEnabled: for details on setting a custom behaviour on resigning activity.
245 | *
246 | * @code
247 | * - (void)allBackgroundTasksFinished
248 | {
249 | // ....
250 | [Flurry pauseBackgroundSession];
251 | // ....
252 | }
253 | * @endcode
254 | *
255 | */
256 | + (void)pauseBackgroundSession;
257 |
258 |
259 | /** @name Event and Error Logging
260 | * Methods for reporting custom events and errors during the session.
261 | */
262 | //@{
263 |
264 | /*!
265 | * @brief Records a custom event specified by @c eventName.
266 | * @since 2.8.4
267 | *
268 | * This method allows you to specify custom events within your app. As a general rule
269 | * you should capture events related to user navigation within your app, any action
270 | * around monetization, and other events as they are applicable to tracking progress
271 | * towards your business goals.
272 | *
273 | * @note You should not pass private or confidential information about your users in a
274 | * custom event. \n
275 | * Where applicable, you should make a concerted effort to use timed events with
276 | * parameters (#logEvent:withParameters:timed:) or events with parameters
277 | * (#logEvent:withParameters:). This provides valuable information around the time the user
278 | * spends within an action (e.g. - time spent on a level or viewing a page) or characteristics
279 | * of an action (e.g. - Buy Event that has a Parameter of Widget with Value Golden Sword).
280 | *
281 | * @see #logEvent:withParameters: for details on storing events with parameters. \n
282 | * #logEvent:timed: for details on storing timed events. \n
283 | * #logEvent:withParameters:timed: for details on storing timed events with parameters. \n
284 | * #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating
285 | * parameters.
286 | *
287 | * @code
288 | * - (void)interestingAppAction
289 | {
290 | [Flurry logEvent:@"Interesting_Action"];
291 | // Perform interesting action
292 | }
293 | * @endcode
294 | *
295 | * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme
296 | * that can be easily understood by non-technical people in your business domain.
297 | */
298 | + (void)logEvent:(NSString *)eventName;
299 |
300 | /*!
301 | * @brief Records a custom parameterized event specified by @c eventName with @c parameters.
302 | * @since 2.8.4
303 | *
304 | * This method overrides #logEvent to allow you to associate parameters with an event. Parameters
305 | * are extremely valuable as they allow you to store characteristics of an action. For example,
306 | * if a user purchased an item it may be helpful to know what level that user was on.
307 | * By setting this parameter you will be able to view a distribution of levels for the purcahsed
308 | * event on the Flurrly Dev Portal.
309 | *
310 | * @note You should not pass private or confidential information about your users in a
311 | * custom event. \n
312 | * A maximum of 10 parameter names may be associated with any event. Sending
313 | * over 10 parameter names with a single event will result in no parameters being logged
314 | * for that event. You may specify an infinite number of Parameter values. For example,
315 | * a Search Box would have 1 parameter name (e.g. - Search Box) and many values, which would
316 | * allow you to see what values users look for the most in your app. \n
317 | * Where applicable, you should make a concerted effort to use timed events with
318 | * parameters (#logEvent:withParameters:timed:). This provides valuable information
319 | * around the time the user spends within an action (e.g. - time spent on a level or
320 | * viewing a page).
321 | *
322 | * @see #logEvent:withParameters:timed: for details on storing timed events with parameters. \n
323 | * #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating
324 | * parameters.
325 | *
326 | * @code
327 | * - (void)userPurchasedSomethingCool
328 | {
329 | NSDictionary *params =
330 | [NSDictionary dictionaryWithObjectsAndKeys:@"Cool Item", // Parameter Value
331 | @"Item Purchased", // Parameter Name
332 | nil];
333 | [Flurry logEvent:@"Something Cool Purchased" withParameters:params];
334 | // Give user cool item
335 | }
336 | * @endcode
337 | *
338 | * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme
339 | * that can be easily understood by non-technical people in your business domain.
340 | * @param parameters A map containing Name-Value pairs of parameters.
341 | */
342 | + (void)logEvent:(NSString *)eventName withParameters:(NSDictionary *)parameters;
343 |
344 | /*!
345 | * @brief Records an app exception. Commonly used to catch unhandled exceptions.
346 | * @since 2.7
347 | *
348 | * This method captures an exception for reporting to Flurry. We recommend adding an uncaught
349 | * exception listener to capture any exceptions that occur during usage that is not
350 | * anticipated by your app.
351 | *
352 | * @see #logError:message:error: for details on capturing errors.
353 | *
354 | * @code
355 | * - (void) uncaughtExceptionHandler(NSException *exception)
356 | {
357 | [Flurry logError:@"Uncaught" message:@"Crash!" exception:exception];
358 | }
359 |
360 | - (void)applicationDidFinishLaunching:(UIApplication *)application
361 | {
362 | NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
363 | [Flurry startSession:@"YOUR_API_KEY"];
364 | // ....
365 | }
366 | * @endcode
367 | *
368 | * @param errorID Name of the error.
369 | * @param message The message to associate with the error.
370 | * @param exception The exception object to report.
371 | */
372 | + (void)logError:(NSString *)errorID message:(NSString *)message exception:(NSException *)exception;
373 |
374 | /*!
375 | * @brief Records an app error.
376 | * @since 2.7
377 | *
378 | * This method captures an error for reporting to Flurry.
379 | *
380 | * @see #logError:message:exception: for details on capturing exceptions.
381 | *
382 | * @code
383 | * - (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
384 | {
385 | [Flurry logError:@"WebView No Load" message:[error localizedDescription] error:error];
386 | }
387 | * @endcode
388 | *
389 | * @param errorID Name of the error.
390 | * @param message The message to associate with the error.
391 | * @param error The error object to report.
392 | */
393 | + (void)logError:(NSString *)errorID message:(NSString *)message error:(NSError *)error;
394 |
395 | /*!
396 | * @brief Records a timed event specified by @c eventName.
397 | * @since 2.8.4
398 | *
399 | * This method overrides #logEvent to allow you to capture the length of an event. This can
400 | * be extremely valuable to understand the level of engagement with a particular action. For
401 | * example, you can capture how long a user spends on a level or reading an article.
402 | *
403 | * @note You should not pass private or confidential information about your users in a
404 | * custom event. \n
405 | * Where applicable, you should make a concerted effort to use parameters with your timed
406 | * events (#logEvent:withParameters:timed:). This provides valuable information
407 | * around the characteristics of an action (e.g. - Buy Event that has a Parameter of Widget with
408 | * Value Golden Sword).
409 | *
410 | * @see #logEvent:withParameters:timed: for details on storing timed events with parameters. \n
411 | * #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating
412 | * parameters.
413 | *
414 | * @code
415 | * - (void)startLevel
416 | {
417 | [Flurry logEvent:@"Level Played" timed:YES];
418 | // Start user on level
419 | }
420 |
421 | - (void)endLevel
422 | {
423 | [Flurry endTimedEvent:@"Level Played" withParameters:nil];
424 | // User done with level
425 | }
426 | * @endcode
427 | *
428 | * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme
429 | * that can be easily understood by non-technical people in your business domain.
430 | * @param timed Specifies the event will be timed.
431 | */
432 | + (void)logEvent:(NSString *)eventName timed:(BOOL)timed;
433 |
434 | /*!
435 | * @brief Records a custom parameterized timed event specified by @c eventName with @c parameters.
436 | * @since 2.8.4
437 | *
438 | * This method overrides #logEvent to allow you to capture the length of an event with parameters.
439 | * This can be extremely valuable to understand the level of engagement with a particular action
440 | * and the characteristics associated with that action. For example, you can capture how long a user
441 | * spends on a level or reading an article. Parameters can be used to capture, for example, the
442 | * author of an article or if something was purchased while on the level.
443 | *
444 | * @note You should not pass private or confidential information about your users in a
445 | * custom event.
446 | *
447 | * @see #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating
448 | * parameters.
449 | *
450 | * @code
451 | * - (void)startLevel
452 | {
453 | NSDictionary *params =
454 | [NSDictionary dictionaryWithObjectsAndKeys:@"100", // Parameter Value
455 | @"Current Points", // Parameter Name
456 | nil];
457 |
458 | [Flurry logEvent:@"Level Played" withParameters:params timed:YES];
459 | // Start user on level
460 | }
461 |
462 | - (void)endLevel
463 | {
464 | // User gained additional 100 points in Level
465 | NSDictionary *params =
466 | [NSDictionary dictionaryWithObjectsAndKeys:@"200", // Parameter Value
467 | @"Current Points", // Parameter Name
468 | nil];
469 | [Flurry endTimedEvent:@"Level Played" withParameters:params];
470 | // User done with level
471 | }
472 | * @endcode
473 | *
474 | * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme
475 | * that can be easily understood by non-technical people in your business domain.
476 | * @param parameters A map containing Name-Value pairs of parameters.
477 | * @param timed Specifies the event will be timed.
478 | */
479 | + (void)logEvent:(NSString *)eventName withParameters:(NSDictionary *)parameters timed:(BOOL)timed;
480 |
481 | /*!
482 | * @brief Ends a timed event specified by @c eventName and optionally updates parameters with @c parameters.
483 | * @since 2.8.4
484 | *
485 | * This method ends an existing timed event. If parameters are provided, this will overwrite existing
486 | * parameters with the same name or create new parameters if the name does not exist in the parameter
487 | * map set by #logEvent:withParameters:timed:.
488 | *
489 | * @note You should not pass private or confidential information about your users in a
490 | * custom event. \n
491 | * If the app is backgrounded prior to ending a timed event, the Flurry SDK will automatically
492 | * end the timer on the event. \n
493 | * #endTimedEvent:withParameters: is ignored if called on a previously
494 | * terminated event.
495 | *
496 | * @see #logEvent:withParameters:timed: for details on starting a timed event with parameters.
497 | *
498 | * @code
499 | * - (void)startLevel
500 | {
501 | NSDictionary *params =
502 | [NSDictionary dictionaryWithObjectsAndKeys:@"100", // Parameter Value
503 | @"Current Points", // Parameter Name
504 | nil];
505 |
506 | [Flurry logEvent:@"Level Played" withParameters:params timed:YES];
507 | // Start user on level
508 | }
509 |
510 | - (void)endLevel
511 | {
512 | // User gained additional 100 points in Level
513 | NSDictionary *params =
514 | [NSDictionary dictionaryWithObjectsAndKeys:@"200", // Parameter Value
515 | @"Current Points", // Parameter Name
516 | nil];
517 | [Flurry endTimedEvent:@"Level Played" withParameters:params];
518 | // User done with level
519 | }
520 | * @endcode
521 | *
522 | * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme
523 | * that can be easily understood by non-technical people in your business domain.
524 | * @param parameters A map containing Name-Value pairs of parameters.
525 | */
526 | + (void)endTimedEvent:(NSString *)eventName withParameters:(NSDictionary *)parameters; // non-nil parameters will update the parameters
527 |
528 | //@}
529 |
530 |
531 | /** @name Page View Methods
532 | * Count page views.
533 | */
534 | //@{
535 |
536 | /*!
537 | * @brief Automatically track page views on a @c UINavigationController or @c UITabBarController.
538 | * @since 2.7
539 | *
540 | * This method increments the page view count for a session based on traversing a UINavigationController
541 | * or UITabBarController. The page view count is only a counter for the number of transitions in your
542 | * app. It does not associate a name with the page count. To associate a name with a count of occurences
543 | * see #logEvent:.
544 | *
545 | * @note Please make sure you assign the Tab and Navigation controllers to the view controllers before
546 | * passing them to this method.
547 | *
548 | * @see #logPageView for details on explictly incrementing page view count.
549 | *
550 | * @code
551 | * -(void) trackViewsFromTabBar:(UITabBarController*) tabBar
552 | {
553 | [Flurry logAllPageViews:tabBar];
554 | }
555 | * @endcode
556 | *
557 | * @param target The navigation or tab bar controller.
558 | */
559 | + (void)logAllPageViews:(id)target;
560 |
561 | /*!
562 | * @brief Explicitly track a page view during a session.
563 | * @since 2.7
564 | *
565 | * This method increments the page view count for a session when invoked. It does not associate a name
566 | * with the page count. To associate a name with a count of occurences see #logEvent:.
567 | *
568 | * @see #logAllPageViews for details on automatically incrementing page view count based on user
569 | * traversing navigation or tab bar controller.
570 | *
571 | * @code
572 | * -(void) trackView
573 | {
574 | [Flurry logPageView];
575 | }
576 | * @endcode
577 | *
578 | */
579 | + (void)logPageView;
580 |
581 | //@}
582 |
583 | /** @name User Info
584 | * Methods to set user information.
585 | */
586 | //@{
587 |
588 | /*!
589 | * @brief Assign a unique id for a user in your app.
590 | * @since 2.7
591 | *
592 | * @note Please be sure not to use this method to pass any private or confidential information
593 | * about the user.
594 | *
595 | * @param userID The app id for a user.
596 | */
597 | + (void)setUserID:(NSString *)userID;
598 |
599 | /*!
600 | * @brief Set your user's age in years.
601 | * @since 2.7
602 | *
603 | * Use this method to capture the age of your user. Only use this method if you collect this
604 | * information explictly from your user (i.e. - there is no need to set a default value).
605 | *
606 | * @note The age is aggregated across all users of your app and not available on a per user
607 | * basis.
608 | *
609 | * @param age Reported age of user.
610 | *
611 | */
612 | + (void)setAge:(int)age;
613 |
614 | /*!
615 | * @brief Set your user's gender.
616 | * @since 2.7
617 | *
618 | * Use this method to capture the gender of your user. Only use this method if you collect this
619 | * information explictly from your user (i.e. - there is no need to set a default value). Allowable
620 | * values are @c @"m" or @c @"f"
621 | *
622 | * @note The gender is aggregated across all users of your app and not available on a per user
623 | * basis.
624 | *
625 | * @param gender Reported gender of user.
626 | *
627 | */
628 | + (void)setGender:(NSString *)gender; // user's gender m or f
629 |
630 | //@}
631 |
632 | /** @name Location Reporting
633 | * Methods for setting location information.
634 | */
635 | //@{
636 | /*!
637 | * @brief Set the location of the session.
638 | * @since 2.7
639 | *
640 | * Use information from the CLLocationManager to specify the location of the session. Flurry does not
641 | * automatically track this information or include the CLLocation framework.
642 | *
643 | * @note Only the last location entered is captured per session. \n
644 | * Regardless of accuracy specified, the Flurry SDK will only report location at city level or higher. \n
645 | * Location is aggregated across all users of your app and not available on a per user basis. \n
646 | * This information should only be captured if it is germaine to the use of your app.
647 | *
648 | * @code
649 | CLLocationManager *locationManager = [[CLLocationManager alloc] init];
650 | [locationManager startUpdatingLocation];
651 | * @endcode
652 | *
653 | * After starting the location manager, you can set the location with Flurry. You can implement
654 | * CLLocationManagerDelegate to be aware of when the location is updated. Below is an example
655 | * of how to use this method, after you have recieved a location update from the locationManager.
656 | *
657 | * @code
658 | CLLocation *location = locationManager.location;
659 | [Flurry setLatitude:location.coordinate.latitude
660 | longitude:location.coordinate.longitude
661 | horizontalAccuracy:location.horizontalAccuracy
662 | verticalAccuracy:location.verticalAccuracy];
663 | * @endcode
664 | * @param latitude The latitude.
665 | * @param longitude The longitude.
666 | * @param horizontalAccuracy The radius of uncertainty for the location in meters.
667 | * @param verticalAccuracy The accuracy of the altitude value in meters.
668 | *
669 | */
670 | + (void)setLatitude:(double)latitude longitude:(double)longitude horizontalAccuracy:(float)horizontalAccuracy verticalAccuracy:(float)verticalAccuracy;
671 |
672 | //@}
673 |
674 | /** @name Session Reporting Calls
675 | * Optional methods that can be called at any point to control session reporting.
676 | */
677 | //@{
678 |
679 | /*!
680 | * @brief Set session to report when app closes.
681 | * @since 2.7
682 | *
683 | * Use this method report session data when the app is closed. The default value is @c YES.
684 | *
685 | * @note This method is rarely invoked in iOS >= 3.2 due to the updated iOS lifecycle.
686 | *
687 | * @see #setSessionReportsOnPauseEnabled:
688 | *
689 | * @param sendSessionReportsOnClose YES to send on close, NO to omit reporting on close.
690 | *
691 | */
692 | + (void)setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose;
693 |
694 | /*!
695 | * @brief Set session to report when app is sent to the background.
696 | * @since 2.7
697 | *
698 | * Use this method report session data when the app is paused. The default value is @c YES.
699 | *
700 | * @param setSessionReportsOnPauseEnabled YES to send on pause, NO to omit reporting on pause.
701 | *
702 | */
703 | + (void)setSessionReportsOnPauseEnabled:(BOOL)setSessionReportsOnPauseEnabled;
704 |
705 | /*!
706 | * @brief Set session to support background execution.
707 | * @since 4.2.2
708 | *
709 | * Use this method to enable reporting of errors and events when application is
710 | * running in backgorund (such applications have UIBackgroundModes in Info.plist).
711 | * You should call #pauseBackgroundSession when appropriate in background mode to
712 | * pause the session (for example when played song completed in background)
713 | *
714 | * Default value is @c NO
715 | *
716 | * @see #pauseBackgroundSession for details
717 | *
718 | * @param setBackgroundSessionEnabled YES to enbale background support and
719 | * continue log events and errors for running session.
720 | */
721 | + (void)setBackgroundSessionEnabled:(BOOL)setBackgroundSessionEnabled;
722 |
723 | /*!
724 | * @brief Enable custom event logging.
725 | * @since 2.7
726 | *
727 | * Use this method to allow the capture of custom events. The default value is @c YES.
728 | *
729 | * @param value YES to enable event logging, NO to stop custom logging.
730 | *
731 | */
732 | + (void)setEventLoggingEnabled:(BOOL)value;
733 |
734 | /*!
735 | * @brief Set device push token.
736 | * @since 2.7
737 | *
738 | * After the device has successfully registered with APNS, call this method to set the push token received from APNS.
739 | *
740 | *
741 | */
742 | + (void)setPushToken:(NSString *)pushToken;
743 |
744 |
745 | //@}
746 |
747 | @end
748 |
--------------------------------------------------------------------------------