Ifd_Mobile 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/bin/Ifd_Mobile +25 -0
  3. data/bin/generate.rb +20 -0
  4. data/bin/helper.rb +51 -0
  5. data/lib/Ifd_Mobile.rb +1 -0
  6. data/lib/Ifd_Mobile/methods/IFD_Assertion.rb +44 -0
  7. data/lib/Ifd_Mobile/methods/core.rb +128 -0
  8. data/lib/Ifd_Mobile/methods/lib_var.rb +54 -0
  9. data/lib/Ifd_Mobile/methods/required_files.rb +18 -0
  10. data/lib/Ifd_Mobile/version.rb +5 -0
  11. data/project/Gemfile +7 -0
  12. data/project/Gemfile.lock +182 -0
  13. data/project/apps/TestApp/Default-568h@2x.png +0 -0
  14. data/project/apps/TestApp/Test App 2/GestureTestViewController.h +18 -0
  15. data/project/apps/TestApp/Test App 2/GestureTestViewController.m +48 -0
  16. data/project/apps/TestApp/Test App 2/GestureTestViewController.xib +47 -0
  17. data/project/apps/TestApp/Test App 2/MyViewControllerViewController.h +42 -0
  18. data/project/apps/TestApp/Test App 2/MyViewControllerViewController.m +193 -0
  19. data/project/apps/TestApp/Test App 2/TA2AppDelegate.h +28 -0
  20. data/project/apps/TestApp/Test App 2/TA2AppDelegate.m +85 -0
  21. data/project/apps/TestApp/Test App 2/TestApp-Info.plist +40 -0
  22. data/project/apps/TestApp/Test App 2/TestApp-Prefix.pch +29 -0
  23. data/project/apps/TestApp/Test App 2/en.lproj/InfoPlist.strings +21 -0
  24. data/project/apps/TestApp/Test App 2/en.lproj/Localizable.strings +0 -0
  25. data/project/apps/TestApp/Test App 2/en.lproj/MyViewControllerViewController.xib +175 -0
  26. data/project/apps/TestApp/Test App 2/main.m +31 -0
  27. data/project/apps/TestApp/TestApp.xcodeproj/project.pbxproj +336 -0
  28. data/project/apps/TestApp/TestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  29. data/project/apps/TestApp/TestApp.xcodeproj/project.xcworkspace/xcuserdata/anhpham.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  30. data/project/apps/TestApp/TestApp.xcodeproj/xcuserdata/anhpham.xcuserdatad/xcschemes/TestApp.xcscheme +88 -0
  31. data/project/apps/TestApp/TestApp.xcodeproj/xcuserdata/anhpham.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
  32. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/Default-568h@2x.png +0 -0
  33. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/GestureTestViewController.nib/objects-8.0+.nib +0 -0
  34. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/GestureTestViewController.nib/objects.nib +0 -0
  35. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/GestureTestViewController.nib/runtime.nib +0 -0
  36. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/Info.plist +0 -0
  37. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/PkgInfo +1 -0
  38. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/TestApp +0 -0
  39. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/en.lproj/InfoPlist.strings +0 -0
  40. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/en.lproj/Localizable.strings +0 -0
  41. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/en.lproj/MyViewControllerViewController.nib/objects-8.0+.nib +0 -0
  42. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/en.lproj/MyViewControllerViewController.nib/objects.nib +0 -0
  43. data/project/apps/TestApp/build/release-iphonesimulator/TestApp.app/en.lproj/MyViewControllerViewController.nib/runtime.nib +0 -0
  44. data/project/apps/selendroid-test-app.apk +0 -0
  45. data/project/features/android/Android_test.feature +10 -0
  46. data/project/features/iOS/iOS_test.feature +11 -0
  47. data/project/features/step_definitions/repositories/android_ob_test.rb +2 -0
  48. data/project/features/step_definitions/repositories/ios_ob_test.rb +3 -0
  49. data/project/features/support/env.rb +7 -0
  50. data/project/features/support/hooks.rb +24 -0
  51. data/project/features/support/project_env.rb +38 -0
  52. metadata +155 -0
@@ -0,0 +1,18 @@
1
+ //
2
+ // GestureTestViewController.h
3
+ // TestApp
4
+ //
5
+ // Created by ThinkSys- Amit on 12/07/13.
6
+ //
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import <MapKit/MapKit.h>
11
+
12
+ @interface GestureTestViewController : UIViewController<UIGestureRecognizerDelegate>
13
+ @property (retain, nonatomic) IBOutlet MKMapView *mapView;
14
+
15
+
16
+ - (IBAction)handleRotation:(UIRotationGestureRecognizer*)sender;
17
+
18
+ @end
@@ -0,0 +1,48 @@
1
+ //
2
+ // GestureTestViewController.m
3
+ // TestApp
4
+ //
5
+ // Created by ThinkSys- Amit on 12/07/13.
6
+ //
7
+ //
8
+
9
+ #import "GestureTestViewController.h"
10
+
11
+ @interface GestureTestViewController ()
12
+
13
+ @end
14
+
15
+ @implementation GestureTestViewController
16
+
17
+ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
18
+ {
19
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
20
+ if (self) {
21
+ // Custom initialization
22
+ }
23
+ return self;
24
+ }
25
+
26
+ - (void)viewDidLoad
27
+ {
28
+ [super viewDidLoad];
29
+ // Do any additional setup after loading the view from its nib.
30
+ }
31
+
32
+ - (void)didReceiveMemoryWarning
33
+ {
34
+ [super didReceiveMemoryWarning];
35
+ // Dispose of any resources that can be recreated.
36
+ }
37
+
38
+ - (IBAction)handleRotation:(UIRotationGestureRecognizer*)sender
39
+ {
40
+ NSLog(@"Rotation Starts");
41
+ sender.view.transform = CGAffineTransformRotate(sender.view.transform, sender.rotation);
42
+ sender.rotation = 0;
43
+ }
44
+ - (void)dealloc {
45
+ [_mapView release];
46
+ [super dealloc];
47
+ }
48
+ @end
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4514" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
3
+ <dependencies>
4
+ <deployment defaultVersion="1552" identifier="iOS"/>
5
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
6
+ </dependencies>
7
+ <objects>
8
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="GestureTestViewController">
9
+ <connections>
10
+ <outlet property="mapView" destination="4" id="24"/>
11
+ <outlet property="view" destination="1" id="3"/>
12
+ </connections>
13
+ </placeholder>
14
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
15
+ <view contentMode="scaleToFill" id="1">
16
+ <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
17
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
18
+ <subviews>
19
+ <mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" showsUserLocation="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4">
20
+ <rect key="frame" x="35" y="83" width="250" height="250"/>
21
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
22
+ <gestureRecognizers/>
23
+ <constraints>
24
+ <constraint firstAttribute="width" constant="250" id="18"/>
25
+ <constraint firstAttribute="height" constant="250" id="20"/>
26
+ </constraints>
27
+ <connections>
28
+ <outletCollection property="gestureRecognizers" destination="14" appends="YES" id="15"/>
29
+ </connections>
30
+ </mapView>
31
+ </subviews>
32
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
33
+ <constraints>
34
+ <constraint firstItem="4" firstAttribute="top" secondItem="1" secondAttribute="top" constant="83" id="22"/>
35
+ <constraint firstItem="4" firstAttribute="centerX" secondItem="1" secondAttribute="centerX" id="23"/>
36
+ </constraints>
37
+ <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
38
+ <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
39
+ </view>
40
+ <rotationGestureRecognizer id="14">
41
+ <connections>
42
+ <action selector="handleRotation:" destination="-1" id="16"/>
43
+ <outlet property="delegate" destination="-1" id="25"/>
44
+ </connections>
45
+ </rotationGestureRecognizer>
46
+ </objects>
47
+ </document>
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright 2012 Appium Committers
3
+ *
4
+ * Licensed to the Apache Software Foundation (ASF) under one
5
+ * or more contributor license agreements. See the NOTICE file
6
+ * distributed with this work for additional information
7
+ * regarding copyright ownership. The ASF licenses this file
8
+ * to you under the Apache License, Version 2.0 (the
9
+ * "License"); you may not use this file except in compliance
10
+ * with the License. You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing,
15
+ * software distributed under the License is distributed on an
16
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
+ * KIND, either express or implied. See the License for the
18
+ * specific language governing permissions and limitations
19
+ * under the License.
20
+ */
21
+
22
+ #import <UIKit/UIKit.h>
23
+ #import <CoreLocation/CoreLocation.h>
24
+ #import "GestureTestViewController.h"
25
+
26
+ @interface MyViewControllerViewController : UIViewController <UITextFieldDelegate,CLLocationManagerDelegate>
27
+ @property (retain, nonatomic) IBOutlet UITextField *firstArg;
28
+ @property (retain, nonatomic) IBOutlet UITextField *secondArg;
29
+ @property (retain, nonatomic) IBOutlet UILabel *answerLabel;
30
+ @property (retain, nonatomic) IBOutlet UISwitch *locationStatus;
31
+ @property (retain, nonatomic) IBOutlet UIButton *computeSumButton;
32
+ @property (nonatomic, retain) CLLocationManager *locationMgr;
33
+
34
+ - (IBAction)testGesture:(id)sender;
35
+ - (IBAction)computeAction:(id)sender;
36
+ - (IBAction)showAlert:(id)sender;
37
+ - (IBAction)crashApp:(id)sender;
38
+ - (BOOL)textFieldShouldReturn:(UITextField *)textField;
39
+ - (void)logLocationAuthFromTimer:(NSTimer *)timer;
40
+ - (void)logLocationAuth;
41
+
42
+ @end
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Copyright 2012 Appium Committers
3
+ *
4
+ * Licensed to the Apache Software Foundation (ASF) under one
5
+ * or more contributor license agreements. See the NOTICE file
6
+ * distributed with this work for additional information
7
+ * regarding copyright ownership. The ASF licenses this file
8
+ * to you under the Apache License, Version 2.0 (the
9
+ * "License"); you may not use this file except in compliance
10
+ * with the License. You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing,
15
+ * software distributed under the License is distributed on an
16
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
+ * KIND, either express or implied. See the License for the
18
+ * specific language governing permissions and limitations
19
+ * under the License.
20
+ */
21
+
22
+ #import "MyViewControllerViewController.h"
23
+ #import <AddressBook/AddressBook.h>
24
+ #import <CoreLocation/CoreLocation.h>
25
+
26
+ @interface MyViewControllerViewController ()
27
+
28
+ @end
29
+
30
+ @implementation MyViewControllerViewController
31
+ @synthesize computeSumButton;
32
+ @synthesize answerLabel;
33
+ @synthesize firstArg;
34
+ @synthesize secondArg;
35
+ @synthesize locationMgr;
36
+ @synthesize locationStatus;
37
+
38
+ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
39
+ {
40
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
41
+ if (self) {
42
+ // Custom initialization
43
+ self.locationMgr = [[CLLocationManager alloc] init];
44
+ self.locationMgr.desiredAccuracy = kCLLocationAccuracyBest;
45
+ self.locationMgr.delegate = self;
46
+ [self logLocationAuth];
47
+ }
48
+
49
+ return self;
50
+ }
51
+
52
+ - (void)viewDidLoad
53
+ {
54
+ [super viewDidLoad];
55
+ // Do any additional setup after loading the view from its nib.
56
+ firstArg.returnKeyType = UIReturnKeyDone;
57
+ secondArg.returnKeyType = UIReturnKeyDone;
58
+ firstArg.delegate = self;
59
+ secondArg.delegate = self;
60
+ [NSTimer scheduledTimerWithTimeInterval:0.2
61
+ target:self
62
+ selector:@selector(logLocationAuthFromTimer:)
63
+ userInfo:nil
64
+ repeats:NO];
65
+
66
+ [firstArg setAccessibilityIdentifier:@"IntegerA"];
67
+ [secondArg setAccessibilityIdentifier:@"IntegerB"];
68
+ [computeSumButton setAccessibilityIdentifier:@"ComputeSumButton"];
69
+ [answerLabel setAccessibilityIdentifier:@"Answer"];
70
+ [locationStatus setAccessibilityIdentifier:@"locationStatus"];
71
+
72
+ UISwipeGestureRecognizer * swipe =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeUp:)];
73
+ swipe.direction = UISwipeGestureRecognizerDirectionUp;
74
+ [self.view addGestureRecognizer:swipe];
75
+ [swipe release];
76
+
77
+ computeSumButton.titleLabel.text = NSLocalizedString(@"main.button.computeSum", @"Compute Sum button");
78
+ }
79
+
80
+ -(void)swipeUp:(UISwipeGestureRecognizer*)gestureRecognizer
81
+ {
82
+ [secondArg resignFirstResponder];
83
+ }
84
+
85
+
86
+ - (void)logLocationAuthFromTimer:(NSTimer *)timer
87
+ {
88
+ [self logLocationAuth];
89
+ }
90
+
91
+ - (void)logLocationAuth
92
+ {
93
+ CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
94
+ if (status != kCLAuthorizationStatusRestricted && status != kCLAuthorizationStatusDenied) {
95
+ locationStatus.on = YES;
96
+ } else {
97
+ locationStatus.on = NO;
98
+ }
99
+ }
100
+
101
+ - (void)viewDidUnload
102
+ {
103
+ [self setFirstArg:nil];
104
+ [self setSecondArg:nil];
105
+ [self setAnswerLabel:nil];
106
+ [self setLocationStatus:nil];
107
+ [super viewDidUnload];
108
+ // Release any retained subviews of the main view.
109
+ // e.g. self.myOutlet = nil;
110
+ }
111
+
112
+ - (BOOL)textFieldShouldReturn:(UITextField *)textField {
113
+ [textField resignFirstResponder];
114
+ return YES;
115
+ }
116
+
117
+ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
118
+ {
119
+ return (interfaceOrientation == UIInterfaceOrientationPortrait);
120
+ }
121
+
122
+ - (void)dealloc {
123
+ [self.locationMgr release];
124
+ self.locationMgr = nil;
125
+ [firstArg release];
126
+ [secondArg release];
127
+ [answerLabel release];
128
+ [computeSumButton release];
129
+ [super dealloc];
130
+ }
131
+ - (IBAction)testGesture:(id)sender
132
+ {
133
+ GestureTestViewController *test = [[GestureTestViewController alloc] initWithNibName:@"GestureTestViewController" bundle:nil];
134
+ [self presentViewController:test animated:YES completion:NULL];
135
+ }
136
+
137
+ - (IBAction)computeAction:(id)sender {
138
+ int a = [[firstArg text] intValue];
139
+ int b = [[secondArg text] intValue];
140
+ int sum = a + b;
141
+ NSString *newLabelValue = [NSString stringWithFormat:@"%d",sum];
142
+ [answerLabel setText:newLabelValue];
143
+ [answerLabel setAccessibilityLabel:newLabelValue];
144
+ }
145
+
146
+ - (IBAction)showAlert:(id)sender {
147
+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cool title"
148
+ message:@"this alert is so cool."
149
+ delegate:nil
150
+ cancelButtonTitle:@"Cancel"
151
+ otherButtonTitles:@"OK", nil];
152
+ [alert show];
153
+ [alert release];
154
+ }
155
+
156
+ - (IBAction)crashApp:(id)sender {
157
+ abort();
158
+ }
159
+
160
+ - (void)requestContactsPermission {
161
+ ABAddressBookRef book = [MyViewControllerViewController addressBookForPermissionRequest];
162
+ [self popContactsPermissionDialogWithAddressBook:book];
163
+ }
164
+
165
+ - (void)popContactsPermissionDialogWithAddressBook:(ABAddressBookRef)book {
166
+ ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
167
+ });
168
+ CFRelease (book);
169
+ }
170
+
171
+ + (ABAddressBookRef)addressBookForPermissionRequest {
172
+ CFErrorRef error = NULL;
173
+ return ABAddressBookCreateWithOptions(NULL, &error);
174
+ }
175
+
176
+ - (IBAction)accessContactsAlert:(id)sender {
177
+ if ([MyViewControllerViewController addressBookAuthorizationStatus] == kABAuthorizationStatusNotDetermined) {
178
+ [self requestContactsPermission];
179
+ }
180
+ }
181
+
182
+ - (IBAction)accessLocationAlert:(id)sender {
183
+ CLLocationManager *locationManager = [[CLLocationManager alloc] init];
184
+
185
+ [locationManager startUpdatingLocation];
186
+ [locationManager stopUpdatingLocation];
187
+ }
188
+
189
+ + (ABAuthorizationStatus)addressBookAuthorizationStatus {
190
+ return ABAddressBookGetAuthorizationStatus();
191
+ }
192
+
193
+ @end
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright 2012 Appium Committers
3
+ *
4
+ * Licensed to the Apache Software Foundation (ASF) under one
5
+ * or more contributor license agreements. See the NOTICE file
6
+ * distributed with this work for additional information
7
+ * regarding copyright ownership. The ASF licenses this file
8
+ * to you under the Apache License, Version 2.0 (the
9
+ * "License"); you may not use this file except in compliance
10
+ * with the License. You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing,
15
+ * software distributed under the License is distributed on an
16
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
+ * KIND, either express or implied. See the License for the
18
+ * specific language governing permissions and limitations
19
+ * under the License.
20
+ */
21
+
22
+ #import <UIKit/UIKit.h>
23
+
24
+ @interface TA2AppDelegate : UIResponder <UIApplicationDelegate>
25
+
26
+ @property (strong, nonatomic) UIWindow *window;
27
+
28
+ @end
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright 2012 Appium Committers
3
+ *
4
+ * Licensed to the Apache Software Foundation (ASF) under one
5
+ * or more contributor license agreements. See the NOTICE file
6
+ * distributed with this work for additional information
7
+ * regarding copyright ownership. The ASF licenses this file
8
+ * to you under the Apache License, Version 2.0 (the
9
+ * "License"); you may not use this file except in compliance
10
+ * with the License. You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing,
15
+ * software distributed under the License is distributed on an
16
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
+ * KIND, either express or implied. See the License for the
18
+ * specific language governing permissions and limitations
19
+ * under the License.
20
+ */
21
+
22
+ #import "TA2AppDelegate.h"
23
+ #import "MyViewControllerViewController.h"
24
+
25
+ @interface TA2AppDelegate ()
26
+
27
+ @property (nonatomic, retain) UIViewController *myAddVC;
28
+ @end
29
+
30
+ @implementation TA2AppDelegate
31
+
32
+ @synthesize window = _window;
33
+ @synthesize myAddVC;
34
+
35
+
36
+
37
+
38
+ - (void)dealloc
39
+ {
40
+ [_window release];
41
+ [super dealloc];
42
+ }
43
+
44
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
45
+ {
46
+ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
47
+ // Override point for customization after application launch.
48
+ self.window.backgroundColor = [UIColor whiteColor];
49
+ [self.window makeKeyAndVisible];
50
+
51
+ self.myAddVC = [[MyViewControllerViewController alloc] init];
52
+ self.myAddVC.view.frame = self.window.bounds;
53
+ [self.window setRootViewController:self.myAddVC];
54
+
55
+ return YES;
56
+ }
57
+
58
+ - (void)applicationWillResignActive:(UIApplication *)application
59
+ {
60
+ // 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.
61
+ // 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.
62
+ }
63
+
64
+ - (void)applicationDidEnterBackground:(UIApplication *)application
65
+ {
66
+ // 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.
67
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
68
+ }
69
+
70
+ - (void)applicationWillEnterForeground:(UIApplication *)application
71
+ {
72
+ // 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.
73
+ }
74
+
75
+ - (void)applicationDidBecomeActive:(UIApplication *)application
76
+ {
77
+ // 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.
78
+ }
79
+
80
+ - (void)applicationWillTerminate:(UIApplication *)application
81
+ {
82
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
83
+ }
84
+
85
+ @end