Code from previous app

This commit is contained in:
Patrick Santana 2013-03-04 14:39:10 +01:00
commit 7ed1201c89
276 changed files with 14582 additions and 6318 deletions

3
.gitignore vendored
View file

@ -16,3 +16,6 @@ profile
*.moved-aside
DerivedData
.idea/
// private class
Photo/PrivateAuthenticationService.m

View file

@ -1,57 +1,68 @@
iPhone Analytics SDK Changelog
Google Analytics SDK for iOS Changelog
--------------------------------------------
Version: 1.5.1 (September 2012)
Version: 2.0beta4 Update (Jan 2013)
--------------------------------------------
* Add support for armv7s (for iPhone5).
* Drop support for armv6.
* Remove NoThumb version of library.
* Change default appVersion to the value in CFBundleShortVersionString
instead of CFBundleVersionKey.
* Use HTTPS as the default protocol instead of HTTP.
* Track methods changed to Send (e.g. trackView now called sendView).
* Some minor bug fixes.
--------------------------------------------
Version: 1.5 (April 2012)
Version: 2.0beta3 iOS6 Update (Sep 2012)
--------------------------------------------
* Support for up to 50 custom variables (up from 5).
* Events now include the last tracked page view.
* GANTrackerDelegate protocol methods are now optional.
* Updated BasicExample example app.
* Add armv7s architecture to libGoogleAnalytics.a.
* Remove armv6 architecture from libGoogleAnalytics.a.
--------------------------------------------
Version: 1.4 (November 2011)
Version: 2.0beta3 (Aug 2012)
--------------------------------------------
* Added dispatchSynchronously method.
* Exposed several useful constants.
* Changed location of the Google Analytics
database from Documents to Library.
* The SDK no longer throws NSAsserts for SQLite
database errors.
* Fixed crash when calling trackPageview with an
empty string
* Fixed crashes when calling various GANTracker
methods after stopTracker was called
* Fixed several memory leaks, including one calling
trackPageview with a pageURL that begins with '/'
* Third beta release.
* Added social tracking method to GAITracker:
trackSocial:withAction:withTarget:
* Timing method signature changed to:
trackTiming:withValue:withName:withLabel:
* Manual construction and dispatch methods added to GAITracker:
set:value:
get:
send:params:
* Custom dimension setter methods added to GAITracker:
setCustom:dimension:
setCustom:metric:
* Architecture of data store refactored to prevent reported CoreData issues.
--------------------------------------------
Version: 1.3 (August 2011)
Version: 2.0beta2 (Jun 2012)
--------------------------------------------
* Added anonymizeIp flag.
* Added sampleRate parameter.
* Added support for campaign referrals.
* Second beta release.
* Updated to latest wire format.
* sampleRate changed to double-precision float.
* Excessive tracking is throttled.
* Undispatched tracking information is deleted when opt-out is enabled.
* Undispatched tracking information older than 30 days will be deleted.
* Enhancements to hit dispatcher.
* Rather than periodically retry, the dispatcher will use the Reachability API
when connectivity is lost to get notified when connectivity is reestablished.
* Updated example app.
* Other bugfixes and enhancements.
--------------------------------------------
Version: 1.2 (June 2011)
Version: 2.0beta1 (May 2012)
--------------------------------------------
* Added support for Ecommerce.
* Added Debug flag.
* Added DryRun flag.
* Initial internal beta release.
* Added uncaught exception handling facility.
* Removed 'dispatchEnabled' property from GAI.
* Added 'defaultTracker' property to GAI.
* Added 'close' method to GAITracker.
* Added timing tracking method to GAITracker.
* Added trackView method to GAITracker which takes no argument.
* Transaction item field names updated.
* Updated to latest wire format.
* Event value is interpreted as a 64-bit integer.
* ARMV6 code generation switched from THUMB to ARM.
--------------------------------------------
Version: 1.1 (February 2011)
Version: 2.0alpha1 (April 2012)
--------------------------------------------
* Added support for Custom Variables.
* Added a NoThumb version of the library.
--------------------------------------------
Version: 1.0 (July 2010)
--------------------------------------------
* iOS4 support for iPhone-Analytics.
* Initial internal alpha release.

File diff suppressed because one or more lines are too long

View file

@ -1,48 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
<html>
<head>
<meta name="ROBOTS" content="NOINDEX">
<title>Documentation for GANTracker (GANTracker.h)</title>
<meta http-equiv="Content-Type" content="text/html; charset=ascii">
<meta name="generator" content="HeaderDoc">
<meta name="xcode-display" content="render">
<style type="text/css"><!--.keyword {background:#ffffff; color:#761550;}.template {background:#ffffff; color:#761550;}.number {background: #ffffff; color:#0000ff;}.function {background:#ffffff; color:#000000;}.string {background: #ffffff; color:#891315;}.preprocessor {background:#ffffff; color:#236e25}.comment {background:#ffffff; color:#236e25}.char {background: #ffffff; color:#0000ff;}.var {background:#ffffff; color:#000000;}.type {background:#ffffff; color:#761550;}.param {background:#ffffff; color:#000000;}a:link {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:active {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}h4 {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: tiny; font-weight: bold;}body {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 10pt;}.list_indent { margin-left: 40px; }.declaration_indent { margin-left: 40px; }.param_indent { margin-left: 40px; }.group_indent { margin-left: 40px; }.group_desc_indent { margin-left: 20px; }.warning_indent { margin-left: 40px; }.important_indent { margin-left: 40px; }.hd_tocAccess { font-style: italic; font-size: 10px; font-weight: normal; color: #303030; }--></style>
</head>
<body bgcolor="#edf2f6" link="#000099" vlink="#660066" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<font size="-2"><a href="../../../masterTOC.html" target="_top" headerdoc="topLink">[Top]</a></font><br><table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr height="51" width="100%" bgcolor="#466C9B"><td width="100%">&#160;</td></tr>
<tr><td>
<br><table border="0" cellpadding="0" cellspacing="2" width="148">
<tr>
<td width="15">&#160;</td>
<td colspan="2"><font size="5" color="#330066"><b>Class:</b></font></td>
</tr>
<tr>
<td width="15">&#160;</td>
<td width="15">&#160;</td>
<td><b><font size="+1">GANTracker</font></b></td>
</tr>
<tr>
<td></td>
<td colspan="2">
<h4>
<br><nobr><a href="index.html#top" target="doc">Introduction</a></nobr>
</h4>
<h4><a href="index.html#HeaderDoc_methods" target="doc">Methods</a></h4>
<h5 class="hd_tocAccess">Class Methods</h5>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">+</font><a href="index.html#//apple_ref/occ/clm/GANTracker/sharedTracker" target="doc">sharedTracker</a></nobr><br><h5 class="hd_tocAccess">Instance Methods</h5>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/addTransaction:totalPrice:storeName:totalTax:shippingCost:withError:" target="doc">addTransaction:&#8205;totalPrice:&#8205;storeName:&#8205;totalTax:&#8205;shippingCost:&#8205;withError:&#8205;</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/trackEvent:action:label:value:withError:" target="doc">trackEvent:&#8205;action:&#8205;label:&#8205;value:&#8205;withError:&#8205;</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/setReferrer:withError:" target="doc">setReferrer:withError:</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/stopTracker" target="doc">stopTracker</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/trackTransactions:" target="doc">trackTransactions:</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/setCustomVariableAtIndex:name:value:withError:" target="doc">setCustomVariableAtIndex:&#8205;name:&#8205;value:&#8205;withError:&#8205;</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/dispatchSynchronous:" target="doc">dispatchSynchronous:</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/startTrackerWithAccountID:dispatchPeriod:delegate:" target="doc">startTrackerWithAccountID:&#8205;dispatchPeriod:&#8205;delegate:&#8205;</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/addItem:itemSKU:itemPrice:itemCount:itemName:itemCategory:withError:" target="doc">addItem:&#8205;itemSKU:&#8205;itemPrice:&#8205;itemCount:&#8205;itemName:&#8205;itemCategory:&#8205;withError:&#8205;</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/setCustomVariableAtIndex:name:value:scope:withError:" target="doc">setCustomVariableAtIndex:&#8205;name:&#8205;value:&#8205;scope:&#8205;withError:&#8205;</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/dispatch" target="doc">dispatch</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/trackPageview:withError:" target="doc">trackPageview:withError:</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/clearTransactions:" target="doc">clearTransactions:</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/instm/GANTracker/getVisitorCustomVarAtIndex:" target="doc">getVisitorCustomVarAtIndex:</a></nobr><br><h4><a href="index.html#HeaderDoc_props" target="doc">Properties</a></h4>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/occ/instp/GANTracker/debug" target="doc">debug</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/occ/instp/GANTracker/dryRun" target="doc">dryRun</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/occ/instp/GANTracker/anonymizeIp" target="doc">anonymizeIp</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/occ/instp/GANTracker/sampleRate" target="doc">sampleRate</a></nobr><br><br><h4>Other Reference</h4>
<hr>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="../../index.html" target="_top">Header</a></nobr><br>
</td>
</tr>
</table>
<p>&#160;</p>
<p>
</p>
</td></tr>
</table>
</body>
</html>

View file

@ -1,142 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
<html>
<head>
<title>GANTrackerDelegate</title>
<meta http-equiv="Content-Type" content="text/html; charset=ascii">
<meta name="generator" content="HeaderDoc">
<meta name="xcode-display" content="render">
<style><!--
#tocMenu {
display: block;
position:fixed;
top:0px;
left:0px;
width:210px;
height:100%;
background:transparent;
}
#bodyText {
margin-left: 210px;
}
--></style>
<script language="JavaScript" type="text/javascript"><!--
function hidetoc() {
var origURL = parent.document.URL;
var contentURL = origURL.substring(origURL.indexOf('?')+1, origURL.length);
if (contentURL.length == origURL.length) {
jumpPos = origURL.substring(origURL.indexOf('#')+1, origURL.length);
}
if (contentURL == "hidetoc") {
var toc = document.getElementById('tocMenu');
var body = document.getElementById('bodyText');
if (toc && body) {
toc.style.display = 'none';
body.style.marginLeft = '0px';
}
}
}
--></script><style type="text/css"><!--.keyword {background:#ffffff; color:#761550;}.template {background:#ffffff; color:#761550;}.number {background: #ffffff; color:#0000ff;}.function {background:#ffffff; color:#000000;}.string {background: #ffffff; color:#891315;}.preprocessor {background:#ffffff; color:#236e25}.comment {background:#ffffff; color:#236e25}.char {background: #ffffff; color:#0000ff;}.var {background:#ffffff; color:#000000;}.type {background:#ffffff; color:#761550;}.param {background:#ffffff; color:#000000;}a:link {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:active {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}h4 {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: tiny; font-weight: bold;}body {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 10pt;}.list_indent { margin-left: 40px; }.declaration_indent { margin-left: 40px; }.param_indent { margin-left: 40px; }.group_indent { margin-left: 40px; }.group_desc_indent { margin-left: 20px; }.warning_indent { margin-left: 40px; }.important_indent { margin-left: 40px; }.hd_tocAccess { font-style: italic; font-size: 10px; font-weight: normal; color: #303030; }--></style>
</head>
<body bgcolor="#ffffff" onload="hidetoc();">
<!-- headerDoc=intf; uid=//apple_ref/occ/intf/GANTrackerDelegate; name=GANTrackerDelegate-->
<a name="//apple_ref/occ/intf/GANTrackerDelegate"></a><div id="tocMenu">
<iframe id="toc_content" name="toc_content" src="toc.html" width="210" height="100%" align="left" frameborder="0">This document set is best viewed in a browser that supports iFrames.</iframe>
</div>
<div id="bodyText">
<a name="top"></a>
<hr>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h1><a name="GANTrackerDelegate">GANTrackerDelegate</a></h1>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>Google Analytics tracker delegate. This delegate gets notified when
the tracker dispatches a hit successfully, or when there was an error
dispatching the hit. All delegate methods are optional.
<!-- end abstract --></p>
<p><b>Extends&#160;Protocol:</b> <!-- a logicalPath="//apple_ref/occ/intf/NSObject" -->NSObject<!-- /a --><br><b>Declared In:</b> <a href="../../index.html" target="_top">GANTracker.h</a><br></p>
<div class="declaration_indent">
</div>
<p></p>
<hr>
<br><a name="HeaderDoc_methods"></a>
<h2>Methods</h2>
<dl>
<dt><tt><a href="index.html#//apple_ref/occ/intfm/GANTrackerDelegate/hitDispatched:" target="_top">-hitDispatched:</a></tt></dt>
<dd>
<p>This method is invoked when a hit has been successfully submitted to
Google Analytics.
</p>
</dd>
<dt><tt><a href="index.html#//apple_ref/occ/intfm/GANTrackerDelegate/trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:" target="_top">-trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:</a></tt></dt>
<dd>
<p>This method is invoked when a dispatch to Google Analytics is
completed.
</p>
</dd>
</dl>
<hr>
<!-- headerDoc=intfm; uid=//apple_ref/occ/intfm/GANTrackerDelegate/hitDispatched:; name=GANTrackerDelegate::hitDispatched: --><a name="//apple_ref/occ/intfm/GANTrackerDelegate/hitDispatched:"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="hitDispatched:">hitDispatched:</a></h3>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>This method is invoked when a hit has been successfully submitted to
Google Analytics.
</p>
<!-- end abstract -->
<p></p>
<div class="declaration_indent">
<pre>- (<!-- a logicalPath="//apple_ref/occ/cl/void //apple_ref/occ/tdef/void //apple_ref/occ/tag/void //apple_ref/occ/econst/void //apple_ref/occ/struct/void //apple_ref/occ/clconst/void //apple_ref/occ/intf/void" --><span class="type">void</span><!-- /a -->)<!-- a logicalPath="//apple_ref/occ/instm/hitDispatched //apple_ref/occ/clm/hitDispatched //apple_ref/occ/intfcm/hitDispatched //apple_ref/occ/intfm/hitDispatched //apple_ref/occ/func/hitDispatched //apple_ref/occ/ftmplt/hitDispatched //apple_ref/occ/defn/hitDispatched //apple_ref/occ/macro/hitDispatched" --><span class="function">hitDispatched</span><!-- /a -->:(<!-- a logicalPath="//apple_ref/occ/cl/NSString //apple_ref/occ/tdef/NSString //apple_ref/occ/tag/NSString //apple_ref/occ/econst/NSString //apple_ref/occ/struct/NSString //apple_ref/occ/clconst/NSString //apple_ref/occ/intf/NSString" --><span class="type">NSString</span><!-- /a --> <span class="type">*</span>)<!-- a logicalPath="//apple_ref/occ/econst/hitString //apple_ref/occ/data/hitString" --><span class="var">hitString</span><!-- /a -->; </pre>
</div>
<h5 class="tight"><font face="Lucida Grande,Helvetica,Arial">Parameters</font></h5>
<div class="param_indent">
<dl>
<dt><code>hitString</code></dt>
<dd><p>The string representation of the hit, as sent to Google
Analytics.</p></dd>
</dl>
</div>
<p></p>
<hr>
<!-- headerDoc=intfm; uid=//apple_ref/occ/intfm/GANTrackerDelegate/trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:; name=GANTrackerDelegate::trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch: --><a name="//apple_ref/occ/intfm/GANTrackerDelegate/trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:">trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:</a></h3>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>This method is invoked when a dispatch to Google Analytics is
completed.
</p>
<!-- end abstract -->
<p></p>
<div class="declaration_indent">
<pre>- (<!-- a logicalPath="//apple_ref/occ/cl/void //apple_ref/occ/tdef/void //apple_ref/occ/tag/void //apple_ref/occ/econst/void //apple_ref/occ/struct/void //apple_ref/occ/clconst/void //apple_ref/occ/intf/void" --><span class="type">void</span><!-- /a -->)<!-- a logicalPath="//apple_ref/occ/instm/trackerDispatchDidComplete //apple_ref/occ/clm/trackerDispatchDidComplete //apple_ref/occ/intfcm/trackerDispatchDidComplete //apple_ref/occ/intfm/trackerDispatchDidComplete //apple_ref/occ/func/trackerDispatchDidComplete //apple_ref/occ/ftmplt/trackerDispatchDidComplete //apple_ref/occ/defn/trackerDispatchDidComplete //apple_ref/occ/macro/trackerDispatchDidComplete" --><span class="function">trackerDispatchDidComplete</span><!-- /a -->:(<a href="../../Classes/GANTracker/index.html#//apple_ref/occ/cl/GANTracker" logicalPath="//apple_ref/occ/cl/GANTracker" target="_top"><span class="type">GANTracker</span></a> <span class="type">*</span>)<span class="param">tracker</span> <!-- a logicalPath="//apple_ref/occ/instm/eventsDispatched //apple_ref/occ/clm/eventsDispatched //apple_ref/occ/intfcm/eventsDispatched //apple_ref/occ/intfm/eventsDispatched //apple_ref/occ/func/eventsDispatched //apple_ref/occ/ftmplt/eventsDispatched //apple_ref/occ/defn/eventsDispatched //apple_ref/occ/macro/eventsDispatched" --><span class="function">eventsDispatched</span><!-- /a -->:(<!-- a logicalPath="//apple_ref/occ/cl/NSUInteger //apple_ref/occ/tdef/NSUInteger //apple_ref/occ/tag/NSUInteger //apple_ref/occ/econst/NSUInteger //apple_ref/occ/struct/NSUInteger //apple_ref/occ/clconst/NSUInteger //apple_ref/occ/intf/NSUInteger" --><span class="type">NSUInteger</span><!-- /a -->)<span class="param">hitsDispatched</span> <!-- a logicalPath="//apple_ref/occ/instm/eventsFailedDispatch //apple_ref/occ/clm/eventsFailedDispatch //apple_ref/occ/intfcm/eventsFailedDispatch //apple_ref/occ/intfm/eventsFailedDispatch //apple_ref/occ/func/eventsFailedDispatch //apple_ref/occ/ftmplt/eventsFailedDispatch //apple_ref/occ/defn/eventsFailedDispatch //apple_ref/occ/macro/eventsFailedDispatch" --><span class="function">eventsFailedDispatch</span><!-- /a -->:(<!-- a logicalPath="//apple_ref/occ/cl/NSUInteger //apple_ref/occ/tdef/NSUInteger //apple_ref/occ/tag/NSUInteger //apple_ref/occ/econst/NSUInteger //apple_ref/occ/struct/NSUInteger //apple_ref/occ/clconst/NSUInteger //apple_ref/occ/intf/NSUInteger" --><span class="type">NSUInteger</span><!-- /a -->)<!-- a logicalPath="//apple_ref/occ/econst/hitsFailedDispatch //apple_ref/occ/data/hitsFailedDispatch" --><span class="var">hitsFailedDispatch</span><!-- /a -->; </pre>
</div>
<h5 class="tight"><font face="Lucida Grande,Helvetica,Arial">Parameters</font></h5>
<div class="param_indent">
<dl>
<dt><code>tracker</code></dt>
<dd><p>The tracker object for which the dispatch was made.</p></dd>
<dt><code>hitsDispatched</code></dt>
<dd><p>The number of hits successfully submitted to Google
Analytics.</p></dd>
<dt><code>hitsFailedDispatch</code></dt>
<dd><p>The number of hits that could not be submitted.</p></dd>
</dl>
</div>
<h5 class="tight">
<font face="Lucida Grande,Helvetica,Arial">Discussion</font>
</h5>
<!-- begin discussion --><p>Note: failed hits will be retried on the next dispatch.
</p>
<!-- end discussion -->
<p></p>
<p></p>
<p>&#169; 2011 Google Inc. All Rights Reserved. Last Updated: Wednesday, April 11, 2012
</p>
</div>
</body>
</html>

View file

@ -1,45 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
<html>
<head>
<meta name="ROBOTS" content="NOINDEX">
<title>Documentation for GANTrackerDelegate (GANTracker.h)</title>
<meta http-equiv="Content-Type" content="text/html; charset=ascii">
<meta name="generator" content="HeaderDoc">
<meta name="xcode-display" content="render">
<style type="text/css"><!--.keyword {background:#ffffff; color:#761550;}.template {background:#ffffff; color:#761550;}.number {background: #ffffff; color:#0000ff;}.function {background:#ffffff; color:#000000;}.string {background: #ffffff; color:#891315;}.preprocessor {background:#ffffff; color:#236e25}.comment {background:#ffffff; color:#236e25}.char {background: #ffffff; color:#0000ff;}.var {background:#ffffff; color:#000000;}.type {background:#ffffff; color:#761550;}.param {background:#ffffff; color:#000000;}a:link {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:active {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}h4 {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: tiny; font-weight: bold;}body {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 10pt;}.list_indent { margin-left: 40px; }.declaration_indent { margin-left: 40px; }.param_indent { margin-left: 40px; }.group_indent { margin-left: 40px; }.group_desc_indent { margin-left: 20px; }.warning_indent { margin-left: 40px; }.important_indent { margin-left: 40px; }.hd_tocAccess { font-style: italic; font-size: 10px; font-weight: normal; color: #303030; }--></style>
</head>
<body bgcolor="#edf2f6" link="#000099" vlink="#660066" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<font size="-2"><a href="../../../masterTOC.html" target="_top" headerdoc="topLink">[Top]</a></font><br><table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr height="51" width="100%" bgcolor="#466C9B"><td width="100%">&#160;</td></tr>
<tr><td>
<br><table border="0" cellpadding="0" cellspacing="2" width="148">
<tr>
<td width="15">&#160;</td>
<td colspan="2"><font size="5" color="#330066"><b>Protocol:</b></font></td>
</tr>
<tr>
<td width="15">&#160;</td>
<td width="15">&#160;</td>
<td><b><font size="+1">GANTrackerDelegate</font></b></td>
</tr>
<tr>
<td></td>
<td colspan="2">
<h4>
<br><nobr><a href="index.html#top" target="doc">Introduction</a></nobr>
</h4>
<h4><a href="index.html#HeaderDoc_methods" target="doc">Methods</a></h4>
<h5 class="hd_tocAccess">Instance Methods</h5>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/intfm/GANTrackerDelegate/hitDispatched:" target="doc">hitDispatched:</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<font size="-1">-</font><a href="index.html#//apple_ref/occ/intfm/GANTrackerDelegate/trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:" target="doc">trackerDispatchDidComplete:&#8205;eventsDispatched:&#8205;eventsFailedDispatch:&#8205;</a></nobr><br><br><h4>Other Reference</h4>
<hr>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="../../index.html" target="_top">Header</a></nobr><br>
</td>
</tr>
</table>
<p>&#160;</p>
<p>
</p>
</td></tr>
</table>
</body>
</html>

View file

@ -0,0 +1,762 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
<title>GAI Class Reference</title>
<meta id="xcode-display" name="xcode-display" content="render"/>
<meta name="viewport" content="width=550" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
<meta name="generator" content="appledoc 2.1 (build 858)" />
</head>
<body>
<header id="top_header">
<div id="library" class="hideInXcode">
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
<a id="developerHome" href="../index.html">Google Inc</a>
</div>
<div id="title" role="banner">
<h1 class="hideInXcode">GAI Class Reference</h1>
</div>
<ul id="headerButtons" role="toolbar">
<li id="toc_button">
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
</li>
<li id="jumpto_button" role="navigation">
<select id="jumpTo">
<option value="top">Jump To&#133;</option>
<option value="overview">Overview</option>
<option value="tasks">Tasks</option>
<option value="properties">Properties</option>
<option value="//api/name/debug">&nbsp;&nbsp;&nbsp;&nbsp;debug</option>
<option value="//api/name/defaultTracker">&nbsp;&nbsp;&nbsp;&nbsp;defaultTracker</option>
<option value="//api/name/dispatchInterval">&nbsp;&nbsp;&nbsp;&nbsp;dispatchInterval</option>
<option value="//api/name/optOut">&nbsp;&nbsp;&nbsp;&nbsp;optOut</option>
<option value="//api/name/trackUncaughtExceptions">&nbsp;&nbsp;&nbsp;&nbsp;trackUncaughtExceptions</option>
<option value="class_methods">Class Methods</option>
<option value="//api/name/sharedInstance">&nbsp;&nbsp;&nbsp;&nbsp;+ sharedInstance</option>
<option value="instance_methods">Instance Methods</option>
<option value="//api/name/dispatch">&nbsp;&nbsp;&nbsp;&nbsp;- dispatch</option>
<option value="//api/name/trackerWithTrackingId:">&nbsp;&nbsp;&nbsp;&nbsp;- trackerWithTrackingId:</option>
</select>
</li>
</ul>
</header>
<nav id="tocContainer" class="isShowingTOC">
<ul id="toc" role="tree">
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/debug">debug</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/defaultTracker">defaultTracker</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/dispatchInterval">dispatchInterval</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/optOut">optOut</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/trackUncaughtExceptions">trackUncaughtExceptions</a></span></li>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">Class Methods</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/sharedInstance">sharedInstance</a></span></li>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">Instance Methods</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/dispatch">dispatch</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/trackerWithTrackingId:">trackerWithTrackingId:</a></span></li>
</ul></li>
</ul>
</nav>
<article>
<div id="contents" class="isShowingTOC" role="main">
<a title="GAI Class Reference" name="top"></a>
<div class="main-navigation navigation-top">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="header">
<div class="section-header">
<h1 class="title title-header">GAI Class Reference</h1>
</div>
</div>
<div id="container">
<div class="section section-specification"><table cellspacing="0"><tbody>
<tr>
<td class="specification-title">Inherits from</td>
<td class="specification-value">NSObject</td>
</tr><tr>
<td class="specification-title">Declared in</td>
<td class="specification-value">GAI.h</td>
</tr>
</tbody></table></div>
<div class="section section-overview">
<a title="Overview" name="overview"></a>
<h2 class="subtitle subtitle-overview">Overview</h2>
<p>Google Analytics iOS top-level class. Provides facilities to create trackers
and set behaviorial flags.</p>
</div>
<div class="section section-tasks">
<a title="Tasks" name="tasks"></a>
<h2 class="subtitle subtitle-tasks">Tasks</h2>
<ul class="task-list">
<li>
<span class="tooltip">
<code><a href="#//api/name/defaultTracker">&nbsp;&nbsp;defaultTracker</a></code>
<span class="tooltip"><p>For convenience, this class exposes a default tracker instance.
This is initialized to <code>nil</code> and will be set to the first tracker that is
instantiated in <a href="#//api/name/trackerWithTrackingId:">trackerWithTrackingId:</a>. It may be overridden as desired.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/debug">&nbsp;&nbsp;debug</a></code>
<span class="tooltip"><p>If true, Google Analytics debug messages will be logged with <code>NSLog()</code>. This is
useful for debugging calls to the Google Analytics SDK.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/optOut">&nbsp;&nbsp;optOut</a></code>
<span class="tooltip"><p>When this is true, no tracking information will be gathered; tracking calls
will effectively become no-ops. When set to true, all tracking information that
has not yet been submitted. The value of this flag will be persisted
automatically by the SDK. Developers can optionally use this flag to implement
an opt-out setting in the app to allows users to opt out of Google Analytics
tracking.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/dispatchInterval">&nbsp;&nbsp;dispatchInterval</a></code>
<span class="tooltip"><p>If this value is negative, tracking information must be sent manually by
calling <a href="#//api/name/dispatch">dispatch</a>. If this value is zero, tracking information will
automatically be sent as soon as possible (usually immediately if the device
has Internet connectivity). If this value is positive, tracking information
will be automatically dispatched every dispatchInterval seconds.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/trackUncaughtExceptions">&nbsp;&nbsp;trackUncaughtExceptions</a></code>
<span class="tooltip"><p>When set to true, the SDK will record the currently registered uncaught
exception handler, and then register an uncaught exception handler which tracks
the exceptions that occurred using <a href="#//api/name/defaultTracker">defaultTracker</a>. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not
<code>nil</code>, this function will track the exception on the tracker and attempt to
<a href="#//api/name/dispatch">dispatch</a> any outstanding tracking information for 5 seconds. It will then call
the previously registered exception handler, if any. When set back to false,
the previously registered uncaught exception handler will be restored.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/sharedInstance">+&nbsp;sharedInstance</a></code>
<span class="tooltip"><p>Get the shared instance of the Google Analytics for iOS class.</p></span>
</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/trackerWithTrackingId:">&ndash;&nbsp;trackerWithTrackingId:</a></code>
<span class="tooltip"><p>Create or retrieve a <a href="../Protocols/GAITracker.html">GAITracker</a> implementation with the specified tracking
ID. If the tracker for the specified tracking ID does not already exist, then
it will be created and returned; otherwise, the existing tracker will be
returned. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not set, it will be set to the tracker instance
returned here.</p></span>
</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/dispatch">&ndash;&nbsp;dispatch</a></code>
<span class="tooltip"><p>Dispatches any pending tracking information.</p></span>
</span>
</li>
</ul>
</div>
<div class="section section-methods">
<a title="Properties" name="properties"></a>
<h2 class="subtitle subtitle-methods">Properties</h2>
<div class="section-method">
<a name="//api/name/debug" title="debug"></a>
<h3 class="subsubtitle method-title">debug</h3>
<div class="method-subsection brief-description">
<p>If true, Google Analytics debug messages will be logged with <code>NSLog()</code>. This is
useful for debugging calls to the Google Analytics SDK.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) BOOL debug</code></div>
<div class="method-subsection discussion-section">
<h4 class="method-subtitle">Discussion</h4>
<p>By default, this flag is set to <code>NO</code>.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/defaultTracker" title="defaultTracker"></a>
<h3 class="subsubtitle method-title">defaultTracker</h3>
<div class="method-subsection brief-description">
<p>For convenience, this class exposes a default tracker instance.
This is initialized to <code>nil</code> and will be set to the first tracker that is
instantiated in <a href="#//api/name/trackerWithTrackingId:">trackerWithTrackingId:</a>. It may be overridden as desired.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) id&lt;GAITracker&gt; defaultTracker</code></div>
<div class="method-subsection discussion-section">
<h4 class="method-subtitle">Discussion</h4>
<p>The <a href="../Classes/GAITrackedViewController.html">GAITrackedViewController</a> class will, by default, use this tracker instance.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/dispatchInterval" title="dispatchInterval"></a>
<h3 class="subsubtitle method-title">dispatchInterval</h3>
<div class="method-subsection brief-description">
<p>If this value is negative, tracking information must be sent manually by
calling <a href="#//api/name/dispatch">dispatch</a>. If this value is zero, tracking information will
automatically be sent as soon as possible (usually immediately if the device
has Internet connectivity). If this value is positive, tracking information
will be automatically dispatched every dispatchInterval seconds.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) NSTimeInterval dispatchInterval</code></div>
<div class="method-subsection discussion-section">
<h4 class="method-subtitle">Discussion</h4>
<p>When the dispatchInterval is non-zero, setting it to zero will cause any queued
tracking information to be sent immediately.</p>
<p>By default, this is set to <code>120</code>, which indicates tracking information should
be dispatched automatically every 120 seconds.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/optOut" title="optOut"></a>
<h3 class="subsubtitle method-title">optOut</h3>
<div class="method-subsection brief-description">
<p>When this is true, no tracking information will be gathered; tracking calls
will effectively become no-ops. When set to true, all tracking information that
has not yet been submitted. The value of this flag will be persisted
automatically by the SDK. Developers can optionally use this flag to implement
an opt-out setting in the app to allows users to opt out of Google Analytics
tracking.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) BOOL optOut</code></div>
<div class="method-subsection discussion-section">
<h4 class="method-subtitle">Discussion</h4>
<p>This is set to <code>NO</code> the first time the Google Analytics SDK is used on a
device, and is persisted thereafter.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/trackUncaughtExceptions" title="trackUncaughtExceptions"></a>
<h3 class="subsubtitle method-title">trackUncaughtExceptions</h3>
<div class="method-subsection brief-description">
<p>When set to true, the SDK will record the currently registered uncaught
exception handler, and then register an uncaught exception handler which tracks
the exceptions that occurred using <a href="#//api/name/defaultTracker">defaultTracker</a>. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not
<code>nil</code>, this function will track the exception on the tracker and attempt to
<a href="#//api/name/dispatch">dispatch</a> any outstanding tracking information for 5 seconds. It will then call
the previously registered exception handler, if any. When set back to false,
the previously registered uncaught exception handler will be restored.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) BOOL trackUncaughtExceptions</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
</div>
<div class="section section-methods">
<a title="Class Methods" name="class_methods"></a>
<h2 class="subtitle subtitle-methods">Class Methods</h2>
<div class="section-method">
<a name="//api/name/sharedInstance" title="sharedInstance"></a>
<h3 class="subsubtitle method-title">sharedInstance</h3>
<div class="method-subsection brief-description">
<p>Get the shared instance of the Google Analytics for iOS class.</p>
</div>
<div class="method-subsection method-declaration"><code>+ (GAI *)sharedInstance</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
</div>
<div class="section section-methods">
<a title="Instance Methods" name="instance_methods"></a>
<h2 class="subtitle subtitle-methods">Instance Methods</h2>
<div class="section-method">
<a name="//api/name/dispatch" title="dispatch"></a>
<h3 class="subsubtitle method-title">dispatch</h3>
<div class="method-subsection brief-description">
<p>Dispatches any pending tracking information.</p>
</div>
<div class="method-subsection method-declaration"><code>- (void)dispatch</code></div>
<div class="method-subsection discussion-section">
<h4 class="method-subtitle">Discussion</h4>
<p>It would be wise to call this when application is exiting to initiate the
submission of any unsubmitted tracking information. Note that this does not
have any effect on <a href="#//api/name/dispatchInterval">dispatchInterval</a>, and can be used in conjuntion with
periodic dispatch.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/trackerWithTrackingId:" title="trackerWithTrackingId:"></a>
<h3 class="subsubtitle method-title">trackerWithTrackingId:</h3>
<div class="method-subsection brief-description">
<p>Create or retrieve a <a href="../Protocols/GAITracker.html">GAITracker</a> implementation with the specified tracking
ID. If the tracker for the specified tracking ID does not already exist, then
it will be created and returned; otherwise, the existing tracker will be
returned. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not set, it will be set to the tracker instance
returned here.</p>
</div>
<div class="method-subsection method-declaration"><code>- (id&lt;GAITracker&gt;)trackerWithTrackingId:(NSString *)<em>trackingId</em></code></div>
<div class="method-subsection arguments-section parameters">
<h4 class="method-subtitle parameter-title">Parameters</h4>
<dl class="argument-def parameter-def">
<dt><em>trackingId</em></dt>
<dd><p>The tracking ID (a string that begins with &ldquo;UA-&rdquo;). Must not
be <code>nil</code> or empty.</p></dd>
</dl>
</div>
<div class="method-subsection return">
<h4 class="method-subtitle parameter-title">Return Value</h4>
<p>A <a href="../Protocols/GAITracker.html">GAITracker</a> associated with the specified tracking ID. The tracker
can be used to send tracking data to Google Analytics. The first time this
method is called with a particular tracking ID, the tracker for that tracking
ID will be returned, and subsequent calls with the same tracking ID will return
the same instance. It is not necessary to retain the tracker because the
tracker will be retained internally by the library.</p>
<p>If an error occurs or the tracker ID is not valid, this method will return
<code>nil</code>.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAI.h</code><br />
</div>
</div>
</div>
</div>
<div class="main-navigation navigation-bottom">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="footer">
<hr />
<div class="footer-copyright">
<p><span class="copyright">&copy; 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
</div>
</div>
</div>
</article>
<script type="text/javascript">
function jumpToChange()
{
window.location.hash = this.options[this.selectedIndex].value;
}
function toggleTOC()
{
var contents = document.getElementById('contents');
var tocContainer = document.getElementById('tocContainer');
if (this.getAttribute('class') == 'open')
{
this.setAttribute('class', '');
contents.setAttribute('class', '');
tocContainer.setAttribute('class', '');
window.name = "hideTOC";
}
else
{
this.setAttribute('class', 'open');
contents.setAttribute('class', 'isShowingTOC');
tocContainer.setAttribute('class', 'isShowingTOC');
window.name = "";
}
return false;
}
function toggleTOCEntryChildren(e)
{
e.stopPropagation();
var currentClass = this.getAttribute('class');
if (currentClass == 'children') {
this.setAttribute('class', 'children open');
}
else if (currentClass == 'children open') {
this.setAttribute('class', 'children');
}
return false;
}
function tocEntryClick(e)
{
e.stopPropagation();
return true;
}
function init()
{
var selectElement = document.getElementById('jumpTo');
selectElement.addEventListener('change', jumpToChange, false);
var tocButton = document.getElementById('table_of_contents');
tocButton.addEventListener('click', toggleTOC, false);
var taskTreeItem = document.getElementById('task_treeitem');
if (taskTreeItem.getElementsByTagName('li').length > 0)
{
taskTreeItem.setAttribute('class', 'children');
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
}
var tocList = document.getElementById('toc');
var tocEntries = tocList.getElementsByTagName('li');
for (var i = 0; i < tocEntries.length; i++) {
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
}
var tocLinks = tocList.getElementsByTagName('a');
for (var i = 0; i < tocLinks.length; i++) {
tocLinks[i].addEventListener('click', tocEntryClick, false);
}
if (window.name == "hideTOC") {
toggleTOC.call(tocButton);
}
}
window.onload = init;
// If showing in Xcode, hide the TOC and Header
if (navigator.userAgent.match(/xcode/i)) {
document.getElementById("contents").className = "hideInXcode"
document.getElementById("tocContainer").className = "hideInXcode"
document.getElementById("top_header").className = "hideInXcode"
}
</script>
</body>
</html>

View file

@ -0,0 +1,361 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
<title>GAITrackedViewController Class Reference</title>
<meta id="xcode-display" name="xcode-display" content="render"/>
<meta name="viewport" content="width=550" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
<meta name="generator" content="appledoc 2.1 (build 858)" />
</head>
<body>
<header id="top_header">
<div id="library" class="hideInXcode">
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
<a id="developerHome" href="../index.html">Google Inc</a>
</div>
<div id="title" role="banner">
<h1 class="hideInXcode">GAITrackedViewController Class Reference</h1>
</div>
<ul id="headerButtons" role="toolbar">
<li id="toc_button">
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
</li>
<li id="jumpto_button" role="navigation">
<select id="jumpTo">
<option value="top">Jump To&#133;</option>
<option value="overview">Overview</option>
<option value="tasks">Tasks</option>
<option value="properties">Properties</option>
<option value="//api/name/trackedViewName">&nbsp;&nbsp;&nbsp;&nbsp;trackedViewName</option>
<option value="//api/name/tracker">&nbsp;&nbsp;&nbsp;&nbsp;tracker</option>
</select>
</li>
</ul>
</header>
<nav id="tocContainer" class="isShowingTOC">
<ul id="toc" role="tree">
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/trackedViewName">trackedViewName</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/tracker">tracker</a></span></li>
</ul></li>
</ul>
</nav>
<article>
<div id="contents" class="isShowingTOC" role="main">
<a title="GAITrackedViewController Class Reference" name="top"></a>
<div class="main-navigation navigation-top">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="header">
<div class="section-header">
<h1 class="title title-header">GAITrackedViewController Class Reference</h1>
</div>
</div>
<div id="container">
<div class="section section-specification"><table cellspacing="0"><tbody>
<tr>
<td class="specification-title">Inherits from</td>
<td class="specification-value">UIViewController</td>
</tr><tr>
<td class="specification-title">Declared in</td>
<td class="specification-value">GAITrackedViewController.h</td>
</tr>
</tbody></table></div>
<div class="section section-overview">
<a title="Overview" name="overview"></a>
<h2 class="subtitle subtitle-overview">Overview</h2>
<p>Extends UIViewController to generate Google Analytics view tracking calls
whenever the view appears; this is done by overriding the <code>viewDidAppear:</code>
method. The view name must be set for any tracking calls to be made.</p>
<p>By default, this will use <a href="../Classes/GAI.html#//api/name/defaultTracker">[GAI defaultTracker]</a> for tracking calls, but one can
override this by setting the <a href="#//api/name/tracker">tracker</a> property.</p>
</div>
<div class="section section-tasks">
<a title="Tasks" name="tasks"></a>
<h2 class="subtitle subtitle-tasks">Tasks</h2>
<ul class="task-list">
<li>
<span class="tooltip">
<code><a href="#//api/name/tracker">&nbsp;&nbsp;tracker</a></code>
<span class="tooltip"><p>The tracker on which view tracking calls are be made, or <code>nil</code>, in which case
<a href="../Classes/GAI.html#//api/name/defaultTracker">[GAI defaultTracker]</a> will be used.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/trackedViewName">&nbsp;&nbsp;trackedViewName</a></code>
<span class="tooltip"><p>The view name, for purposes of Google Analytics view tracking. If this is
<code>nil</code>, no tracking calls will be made.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li>
</ul>
</div>
<div class="section section-methods">
<a title="Properties" name="properties"></a>
<h2 class="subtitle subtitle-methods">Properties</h2>
<div class="section-method">
<a name="//api/name/trackedViewName" title="trackedViewName"></a>
<h3 class="subsubtitle method-title">trackedViewName</h3>
<div class="method-subsection brief-description">
<p>The view name, for purposes of Google Analytics view tracking. If this is
<code>nil</code>, no tracking calls will be made.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy) NSString *trackedViewName</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITrackedViewController.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/tracker" title="tracker"></a>
<h3 class="subsubtitle method-title">tracker</h3>
<div class="method-subsection brief-description">
<p>The tracker on which view tracking calls are be made, or <code>nil</code>, in which case
<a href="../Classes/GAI.html#//api/name/defaultTracker">[GAI defaultTracker]</a> will be used.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) id&lt;GAITracker&gt; tracker</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITrackedViewController.h</code><br />
</div>
</div>
</div>
</div>
<div class="main-navigation navigation-bottom">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="footer">
<hr />
<div class="footer-copyright">
<p><span class="copyright">&copy; 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
</div>
</div>
</div>
</article>
<script type="text/javascript">
function jumpToChange()
{
window.location.hash = this.options[this.selectedIndex].value;
}
function toggleTOC()
{
var contents = document.getElementById('contents');
var tocContainer = document.getElementById('tocContainer');
if (this.getAttribute('class') == 'open')
{
this.setAttribute('class', '');
contents.setAttribute('class', '');
tocContainer.setAttribute('class', '');
window.name = "hideTOC";
}
else
{
this.setAttribute('class', 'open');
contents.setAttribute('class', 'isShowingTOC');
tocContainer.setAttribute('class', 'isShowingTOC');
window.name = "";
}
return false;
}
function toggleTOCEntryChildren(e)
{
e.stopPropagation();
var currentClass = this.getAttribute('class');
if (currentClass == 'children') {
this.setAttribute('class', 'children open');
}
else if (currentClass == 'children open') {
this.setAttribute('class', 'children');
}
return false;
}
function tocEntryClick(e)
{
e.stopPropagation();
return true;
}
function init()
{
var selectElement = document.getElementById('jumpTo');
selectElement.addEventListener('change', jumpToChange, false);
var tocButton = document.getElementById('table_of_contents');
tocButton.addEventListener('click', toggleTOC, false);
var taskTreeItem = document.getElementById('task_treeitem');
if (taskTreeItem.getElementsByTagName('li').length > 0)
{
taskTreeItem.setAttribute('class', 'children');
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
}
var tocList = document.getElementById('toc');
var tocEntries = tocList.getElementsByTagName('li');
for (var i = 0; i < tocEntries.length; i++) {
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
}
var tocLinks = tocList.getElementsByTagName('a');
for (var i = 0; i < tocLinks.length; i++) {
tocLinks[i].addEventListener('click', tocEntryClick, false);
}
if (window.name == "hideTOC") {
toggleTOC.call(tocButton);
}
}
window.onload = init;
// If showing in Xcode, hide the TOC and Header
if (navigator.userAgent.match(/xcode/i)) {
document.getElementById("contents").className = "hideInXcode"
document.getElementById("tocContainer").className = "hideInXcode"
document.getElementById("top_header").className = "hideInXcode"
}
</script>
</body>
</html>

View file

@ -0,0 +1,783 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
<title>GAITransaction Class Reference</title>
<meta id="xcode-display" name="xcode-display" content="render"/>
<meta name="viewport" content="width=550" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
<meta name="generator" content="appledoc 2.1 (build 858)" />
</head>
<body>
<header id="top_header">
<div id="library" class="hideInXcode">
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
<a id="developerHome" href="../index.html">Google Inc</a>
</div>
<div id="title" role="banner">
<h1 class="hideInXcode">GAITransaction Class Reference</h1>
</div>
<ul id="headerButtons" role="toolbar">
<li id="toc_button">
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
</li>
<li id="jumpto_button" role="navigation">
<select id="jumpTo">
<option value="top">Jump To&#133;</option>
<option value="overview">Overview</option>
<option value="tasks">Tasks</option>
<option value="properties">Properties</option>
<option value="//api/name/affiliation">&nbsp;&nbsp;&nbsp;&nbsp;affiliation</option>
<option value="//api/name/items">&nbsp;&nbsp;&nbsp;&nbsp;items</option>
<option value="//api/name/revenueMicros">&nbsp;&nbsp;&nbsp;&nbsp;revenueMicros</option>
<option value="//api/name/shippingMicros">&nbsp;&nbsp;&nbsp;&nbsp;shippingMicros</option>
<option value="//api/name/taxMicros">&nbsp;&nbsp;&nbsp;&nbsp;taxMicros</option>
<option value="//api/name/transactionId">&nbsp;&nbsp;&nbsp;&nbsp;transactionId</option>
<option value="class_methods">Class Methods</option>
<option value="//api/name/transactionWithId:withAffiliation:">&nbsp;&nbsp;&nbsp;&nbsp;+ transactionWithId:withAffiliation:</option>
<option value="instance_methods">Instance Methods</option>
<option value="//api/name/addItem:">&nbsp;&nbsp;&nbsp;&nbsp;- addItem:</option>
<option value="//api/name/addItemWithCode:name:category:priceMicros:quantity:">&nbsp;&nbsp;&nbsp;&nbsp;- addItemWithCode:name:category:priceMicros:quantity:</option>
</select>
</li>
</ul>
</header>
<nav id="tocContainer" class="isShowingTOC">
<ul id="toc" role="tree">
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/affiliation">affiliation</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/items">items</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/revenueMicros">revenueMicros</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/shippingMicros">shippingMicros</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/taxMicros">taxMicros</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/transactionId">transactionId</a></span></li>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">Class Methods</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/transactionWithId:withAffiliation:">transactionWithId:withAffiliation:</a></span></li>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">Instance Methods</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/addItem:">addItem:</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/addItemWithCode:name:category:priceMicros:quantity:">addItemWithCode:name:category:priceMicros:quantity:</a></span></li>
</ul></li>
</ul>
</nav>
<article>
<div id="contents" class="isShowingTOC" role="main">
<a title="GAITransaction Class Reference" name="top"></a>
<div class="main-navigation navigation-top">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="header">
<div class="section-header">
<h1 class="title title-header">GAITransaction Class Reference</h1>
</div>
</div>
<div id="container">
<div class="section section-specification"><table cellspacing="0"><tbody>
<tr>
<td class="specification-title">Inherits from</td>
<td class="specification-value">NSObject</td>
</tr><tr>
<td class="specification-title">Declared in</td>
<td class="specification-value">GAITransaction.h</td>
</tr>
</tbody></table></div>
<div class="section section-overview">
<a title="Overview" name="overview"></a>
<h2 class="subtitle subtitle-overview">Overview</h2>
<p>A simple class to hold transaction data.</p>
</div>
<div class="section section-tasks">
<a title="Tasks" name="tasks"></a>
<h2 class="subtitle subtitle-tasks">Tasks</h2>
<ul class="task-list">
<li>
<span class="tooltip">
<code><a href="#//api/name/transactionId">&nbsp;&nbsp;transactionId</a></code>
<span class="tooltip"><p>Transaction ID.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/affiliation">&nbsp;&nbsp;affiliation</a></code>
<span class="tooltip"><p>Transaction affiliation.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/revenueMicros">&nbsp;&nbsp;revenueMicros</a></code>
<span class="tooltip"><p>Revenue in micros (millionths of a currency unit). Note that this must be
set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/taxMicros">&nbsp;&nbsp;taxMicros</a></code>
<span class="tooltip"><p>Tax in micros (millionths of a currency unit). Note that this must be set
manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/shippingMicros">&nbsp;&nbsp;shippingMicros</a></code>
<span class="tooltip"><p>Shipping cost in micros (millionths of a currency unit). Note that
this must be set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/items">&nbsp;&nbsp;items</a></code>
<span class="tooltip"><p>Transaction items, as an immutable array.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/transactionWithId:withAffiliation:">+&nbsp;transactionWithId:withAffiliation:</a></code>
<span class="tooltip"><p>Create and initialize a transaction.</p></span>
</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/addItem:">&ndash;&nbsp;addItem:</a></code>
<span class="tooltip"><p>Add an item to the transaction. If an item with the same SKU already
exists in the transaction, that item will be replaced with this one.</p></span>
</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/addItemWithCode:name:category:priceMicros:quantity:">&ndash;&nbsp;addItemWithCode:name:category:priceMicros:quantity:</a></code>
<span class="tooltip"><p>Add an item to the transaction. If an item with the same SKU already
exists in the transaction, that item will be replaced with this one.</p></span>
</span>
</li>
</ul>
</div>
<div class="section section-methods">
<a title="Properties" name="properties"></a>
<h2 class="subtitle subtitle-methods">Properties</h2>
<div class="section-method">
<a name="//api/name/affiliation" title="affiliation"></a>
<h3 class="subsubtitle method-title">affiliation</h3>
<div class="method-subsection brief-description">
<p>Transaction affiliation.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy, readonly) NSString *affiliation</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/items" title="items"></a>
<h3 class="subsubtitle method-title">items</h3>
<div class="method-subsection brief-description">
<p>Transaction items, as an immutable array.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, readonly) NSArray *items</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/revenueMicros" title="revenueMicros"></a>
<h3 class="subsubtitle method-title">revenueMicros</h3>
<div class="method-subsection brief-description">
<p>Revenue in micros (millionths of a currency unit). Note that this must be
set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t revenueMicros</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/shippingMicros" title="shippingMicros"></a>
<h3 class="subsubtitle method-title">shippingMicros</h3>
<div class="method-subsection brief-description">
<p>Shipping cost in micros (millionths of a currency unit). Note that
this must be set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t shippingMicros</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/taxMicros" title="taxMicros"></a>
<h3 class="subsubtitle method-title">taxMicros</h3>
<div class="method-subsection brief-description">
<p>Tax in micros (millionths of a currency unit). Note that this must be set
manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t taxMicros</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/transactionId" title="transactionId"></a>
<h3 class="subsubtitle method-title">transactionId</h3>
<div class="method-subsection brief-description">
<p>Transaction ID.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy, readonly) NSString *transactionId</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
</div>
<div class="section section-methods">
<a title="Class Methods" name="class_methods"></a>
<h2 class="subtitle subtitle-methods">Class Methods</h2>
<div class="section-method">
<a name="//api/name/transactionWithId:withAffiliation:" title="transactionWithId:withAffiliation:"></a>
<h3 class="subsubtitle method-title">transactionWithId:withAffiliation:</h3>
<div class="method-subsection brief-description">
<p>Create and initialize a transaction.</p>
</div>
<div class="method-subsection method-declaration"><code>+ (GAITransaction *)transactionWithId:(NSString *)<em>transactionId</em> withAffiliation:(NSString *)<em>affiliation</em></code></div>
<div class="method-subsection arguments-section parameters">
<h4 class="method-subtitle parameter-title">Parameters</h4>
<dl class="argument-def parameter-def">
<dt><em>transactionId</em></dt>
<dd><p>The transaction ID. Required (must not be <code>nil</code>).</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>affiliation</em></dt>
<dd><p>The transaction <a href="#//api/name/affiliation">affiliation</a>. May be <code>nil</code>.</p></dd>
</dl>
</div>
<div class="method-subsection return">
<h4 class="method-subtitle parameter-title">Return Value</h4>
<p>A GAITransaction object with the specified transaction ID and
<a href="#//api/name/affiliation">affiliation</a>.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
</div>
<div class="section section-methods">
<a title="Instance Methods" name="instance_methods"></a>
<h2 class="subtitle subtitle-methods">Instance Methods</h2>
<div class="section-method">
<a name="//api/name/addItem:" title="addItem:"></a>
<h3 class="subsubtitle method-title">addItem:</h3>
<div class="method-subsection brief-description">
<p>Add an item to the transaction. If an item with the same SKU already
exists in the transaction, that item will be replaced with this one.</p>
</div>
<div class="method-subsection method-declaration"><code>- (void)addItem:(GAITransactionItem *)<em>item</em></code></div>
<div class="method-subsection arguments-section parameters">
<h4 class="method-subtitle parameter-title">Parameters</h4>
<dl class="argument-def parameter-def">
<dt><em>item</em></dt>
<dd><p>The <a href="../Classes/GAITransactionItem.html">GAITransactionItem</a> to add to the transaction.</p></dd>
</dl>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/addItemWithCode:name:category:priceMicros:quantity:" title="addItemWithCode:name:category:priceMicros:quantity:"></a>
<h3 class="subsubtitle method-title">addItemWithCode:name:category:priceMicros:quantity:</h3>
<div class="method-subsection brief-description">
<p>Add an item to the transaction. If an item with the same SKU already
exists in the transaction, that item will be replaced with this one.</p>
</div>
<div class="method-subsection method-declaration"><code>- (void)addItemWithCode:(NSString *)<em>productCode</em> name:(NSString *)<em>productName</em> category:(NSString *)<em>productCategory</em> priceMicros:(int64_t)<em>priceMicros</em> quantity:(NSInteger)<em>quantity</em></code></div>
<div class="method-subsection arguments-section parameters">
<h4 class="method-subtitle parameter-title">Parameters</h4>
<dl class="argument-def parameter-def">
<dt><em>productCode</em></dt>
<dd><p>The item product code; must not be <code>nil</code> or empty.</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>productName</em></dt>
<dd><p>The item product name; may be <code>nil</code>.</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>productCategory</em></dt>
<dd><p>The item product category; may be <code>nil</code>.</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>priceMicros</em></dt>
<dd><p>The item price, in micros (millionths of a currency unit).</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>quantity</em></dt>
<dd><p>The item quantity, as an NSInteger.</p></dd>
</dl>
</div>
<div class="method-subsection return">
<h4 class="method-subtitle parameter-title">Return Value</h4>
<p>The newly initialized item.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransaction.h</code><br />
</div>
</div>
</div>
</div>
<div class="main-navigation navigation-bottom">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="footer">
<hr />
<div class="footer-copyright">
<p><span class="copyright">&copy; 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
</div>
</div>
</div>
</article>
<script type="text/javascript">
function jumpToChange()
{
window.location.hash = this.options[this.selectedIndex].value;
}
function toggleTOC()
{
var contents = document.getElementById('contents');
var tocContainer = document.getElementById('tocContainer');
if (this.getAttribute('class') == 'open')
{
this.setAttribute('class', '');
contents.setAttribute('class', '');
tocContainer.setAttribute('class', '');
window.name = "hideTOC";
}
else
{
this.setAttribute('class', 'open');
contents.setAttribute('class', 'isShowingTOC');
tocContainer.setAttribute('class', 'isShowingTOC');
window.name = "";
}
return false;
}
function toggleTOCEntryChildren(e)
{
e.stopPropagation();
var currentClass = this.getAttribute('class');
if (currentClass == 'children') {
this.setAttribute('class', 'children open');
}
else if (currentClass == 'children open') {
this.setAttribute('class', 'children');
}
return false;
}
function tocEntryClick(e)
{
e.stopPropagation();
return true;
}
function init()
{
var selectElement = document.getElementById('jumpTo');
selectElement.addEventListener('change', jumpToChange, false);
var tocButton = document.getElementById('table_of_contents');
tocButton.addEventListener('click', toggleTOC, false);
var taskTreeItem = document.getElementById('task_treeitem');
if (taskTreeItem.getElementsByTagName('li').length > 0)
{
taskTreeItem.setAttribute('class', 'children');
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
}
var tocList = document.getElementById('toc');
var tocEntries = tocList.getElementsByTagName('li');
for (var i = 0; i < tocEntries.length; i++) {
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
}
var tocLinks = tocList.getElementsByTagName('a');
for (var i = 0; i < tocLinks.length; i++) {
tocLinks[i].addEventListener('click', tocEntryClick, false);
}
if (window.name == "hideTOC") {
toggleTOC.call(tocButton);
}
}
window.onload = init;
// If showing in Xcode, hide the TOC and Header
if (navigator.userAgent.match(/xcode/i)) {
document.getElementById("contents").className = "hideInXcode"
document.getElementById("tocContainer").className = "hideInXcode"
document.getElementById("top_header").className = "hideInXcode"
}
</script>
</body>
</html>

View file

@ -0,0 +1,588 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
<title>GAITransactionItem Class Reference</title>
<meta id="xcode-display" name="xcode-display" content="render"/>
<meta name="viewport" content="width=550" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
<meta name="generator" content="appledoc 2.1 (build 858)" />
</head>
<body>
<header id="top_header">
<div id="library" class="hideInXcode">
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
<a id="developerHome" href="../index.html">Google Inc</a>
</div>
<div id="title" role="banner">
<h1 class="hideInXcode">GAITransactionItem Class Reference</h1>
</div>
<ul id="headerButtons" role="toolbar">
<li id="toc_button">
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
</li>
<li id="jumpto_button" role="navigation">
<select id="jumpTo">
<option value="top">Jump To&#133;</option>
<option value="overview">Overview</option>
<option value="tasks">Tasks</option>
<option value="properties">Properties</option>
<option value="//api/name/priceMicros">&nbsp;&nbsp;&nbsp;&nbsp;priceMicros</option>
<option value="//api/name/productCategory">&nbsp;&nbsp;&nbsp;&nbsp;productCategory</option>
<option value="//api/name/productCode">&nbsp;&nbsp;&nbsp;&nbsp;productCode</option>
<option value="//api/name/productName">&nbsp;&nbsp;&nbsp;&nbsp;productName</option>
<option value="//api/name/quantity">&nbsp;&nbsp;&nbsp;&nbsp;quantity</option>
<option value="class_methods">Class Methods</option>
<option value="//api/name/itemWithCode:name:category:priceMicros:quantity:">&nbsp;&nbsp;&nbsp;&nbsp;+ itemWithCode:name:category:priceMicros:quantity:</option>
</select>
</li>
</ul>
</header>
<nav id="tocContainer" class="isShowingTOC">
<ul id="toc" role="tree">
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/priceMicros">priceMicros</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/productCategory">productCategory</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/productCode">productCode</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/productName">productName</a></span></li>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/quantity">quantity</a></span></li>
</ul></li>
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">Class Methods</a></span><ul>
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/itemWithCode:name:category:priceMicros:quantity:">itemWithCode:name:category:priceMicros:quantity:</a></span></li>
</ul></li>
</ul>
</nav>
<article>
<div id="contents" class="isShowingTOC" role="main">
<a title="GAITransactionItem Class Reference" name="top"></a>
<div class="main-navigation navigation-top">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="header">
<div class="section-header">
<h1 class="title title-header">GAITransactionItem Class Reference</h1>
</div>
</div>
<div id="container">
<div class="section section-specification"><table cellspacing="0"><tbody>
<tr>
<td class="specification-title">Inherits from</td>
<td class="specification-value">NSObject</td>
</tr><tr>
<td class="specification-title">Declared in</td>
<td class="specification-value">GAITransactionItem.h</td>
</tr>
</tbody></table></div>
<div class="section section-overview">
<a title="Overview" name="overview"></a>
<h2 class="subtitle subtitle-overview">Overview</h2>
<p>A simple class to hold transaction item data.</p>
</div>
<div class="section section-tasks">
<a title="Tasks" name="tasks"></a>
<h2 class="subtitle subtitle-tasks">Tasks</h2>
<ul class="task-list">
<li>
<span class="tooltip">
<code><a href="#//api/name/productCode">&nbsp;&nbsp;productCode</a></code>
<span class="tooltip"><p>The item code, as a string.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/productName">&nbsp;&nbsp;productName</a></code>
<span class="tooltip"><p>The item name.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/productCategory">&nbsp;&nbsp;productCategory</a></code>
<span class="tooltip"><p>The item variation.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/priceMicros">&nbsp;&nbsp;priceMicros</a></code>
<span class="tooltip"><p>The item price in micros (millionths of a currency unit).</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/quantity">&nbsp;&nbsp;quantity</a></code>
<span class="tooltip"><p>The item quantity.</p></span>
</span>
<span class="task-item-suffix">property</span>
</li><li>
<span class="tooltip">
<code><a href="#//api/name/itemWithCode:name:category:priceMicros:quantity:">+&nbsp;itemWithCode:name:category:priceMicros:quantity:</a></code>
<span class="tooltip"><p>Create and initialize an item.</p></span>
</span>
</li>
</ul>
</div>
<div class="section section-methods">
<a title="Properties" name="properties"></a>
<h2 class="subtitle subtitle-methods">Properties</h2>
<div class="section-method">
<a name="//api/name/priceMicros" title="priceMicros"></a>
<h3 class="subsubtitle method-title">priceMicros</h3>
<div class="method-subsection brief-description">
<p>The item price in micros (millionths of a currency unit).</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t priceMicros</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransactionItem.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/productCategory" title="productCategory"></a>
<h3 class="subsubtitle method-title">productCategory</h3>
<div class="method-subsection brief-description">
<p>The item variation.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy) NSString *productCategory</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransactionItem.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/productCode" title="productCode"></a>
<h3 class="subsubtitle method-title">productCode</h3>
<div class="method-subsection brief-description">
<p>The item code, as a string.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy, readonly) NSString *productCode</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransactionItem.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/productName" title="productName"></a>
<h3 class="subsubtitle method-title">productName</h3>
<div class="method-subsection brief-description">
<p>The item name.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy) NSString *productName</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransactionItem.h</code><br />
</div>
</div>
<div class="section-method">
<a name="//api/name/quantity" title="quantity"></a>
<h3 class="subsubtitle method-title">quantity</h3>
<div class="method-subsection brief-description">
<p>The item quantity.</p>
</div>
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) NSInteger quantity</code></div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransactionItem.h</code><br />
</div>
</div>
</div>
<div class="section section-methods">
<a title="Class Methods" name="class_methods"></a>
<h2 class="subtitle subtitle-methods">Class Methods</h2>
<div class="section-method">
<a name="//api/name/itemWithCode:name:category:priceMicros:quantity:" title="itemWithCode:name:category:priceMicros:quantity:"></a>
<h3 class="subsubtitle method-title">itemWithCode:name:category:priceMicros:quantity:</h3>
<div class="method-subsection brief-description">
<p>Create and initialize an item.</p>
</div>
<div class="method-subsection method-declaration"><code>+ (GAITransactionItem *)itemWithCode:(NSString *)<em>productCode</em> name:(NSString *)<em>productName</em> category:(NSString *)<em>productCategory</em> priceMicros:(int64_t)<em>priceMicros</em> quantity:(NSInteger)<em>quantity</em></code></div>
<div class="method-subsection arguments-section parameters">
<h4 class="method-subtitle parameter-title">Parameters</h4>
<dl class="argument-def parameter-def">
<dt><em>productCode</em></dt>
<dd><p>The item product code; must not be <code>nil</code> or empty.</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>productName</em></dt>
<dd><p>The item product name; must not be <code>nil</code> or empty.</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>productCategory</em></dt>
<dd><p>The item product category; may be <code>nil</code>.</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>priceMicros</em></dt>
<dd><p>The item price, in micros (millionths of a currency unit).</p></dd>
</dl>
<dl class="argument-def parameter-def">
<dt><em>quantity</em></dt>
<dd><p>The item <a href="#//api/name/quantity">quantity</a>, as an NSInteger.</p></dd>
</dl>
</div>
<div class="method-subsection return">
<h4 class="method-subtitle parameter-title">Return Value</h4>
<p>The newly initialized item.</p>
</div>
<div class="method-subsection declared-in-section">
<h4 class="method-subtitle">Declared In</h4>
<code class="declared-in-ref">GAITransactionItem.h</code><br />
</div>
</div>
</div>
</div>
<div class="main-navigation navigation-bottom">
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>
</ul>
</div>
<div id="footer">
<hr />
<div class="footer-copyright">
<p><span class="copyright">&copy; 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
</div>
</div>
</div>
</article>
<script type="text/javascript">
function jumpToChange()
{
window.location.hash = this.options[this.selectedIndex].value;
}
function toggleTOC()
{
var contents = document.getElementById('contents');
var tocContainer = document.getElementById('tocContainer');
if (this.getAttribute('class') == 'open')
{
this.setAttribute('class', '');
contents.setAttribute('class', '');
tocContainer.setAttribute('class', '');
window.name = "hideTOC";
}
else
{
this.setAttribute('class', 'open');
contents.setAttribute('class', 'isShowingTOC');
tocContainer.setAttribute('class', 'isShowingTOC');
window.name = "";
}
return false;
}
function toggleTOCEntryChildren(e)
{
e.stopPropagation();
var currentClass = this.getAttribute('class');
if (currentClass == 'children') {
this.setAttribute('class', 'children open');
}
else if (currentClass == 'children open') {
this.setAttribute('class', 'children');
}
return false;
}
function tocEntryClick(e)
{
e.stopPropagation();
return true;
}
function init()
{
var selectElement = document.getElementById('jumpTo');
selectElement.addEventListener('change', jumpToChange, false);
var tocButton = document.getElementById('table_of_contents');
tocButton.addEventListener('click', toggleTOC, false);
var taskTreeItem = document.getElementById('task_treeitem');
if (taskTreeItem.getElementsByTagName('li').length > 0)
{
taskTreeItem.setAttribute('class', 'children');
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
}
var tocList = document.getElementById('toc');
var tocEntries = tocList.getElementsByTagName('li');
for (var i = 0; i < tocEntries.length; i++) {
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
}
var tocLinks = tocList.getElementsByTagName('a');
for (var i = 0; i < tocLinks.length; i++) {
tocLinks[i].addEventListener('click', tocEntryClick, false);
}
if (window.name == "hideTOC") {
toggleTOC.call(tocButton);
}
}
window.onload = init;
// If showing in Xcode, hide the TOC and Header
if (navigator.userAgent.match(/xcode/i)) {
document.getElementById("contents").className = "hideInXcode"
document.getElementById("tocContainer").className = "hideInXcode"
document.getElementById("top_header").className = "hideInXcode"
}
</script>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,588 @@
body {
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
font-size: 13px;
}
code {
font-family: Courier, Consolas, monospace;
font-size: 13px;
color: #666;
}
pre {
font-family: Courier, Consolas, monospace;
font-size: 13px;
line-height: 18px;
tab-interval: 0.5em;
border: 1px solid #C7CFD5;
background-color: #F1F5F9;
color: #666;
padding: 0.3em 1em;
}
ul {
list-style-type: square;
}
li {
margin-bottom: 10px;
}
a, a code {
text-decoration: none;
color: #36C;
}
a:hover, a:hover code {
text-decoration: underline;
color: #36C;
}
h2 {
border-bottom: 1px solid #8391A8;
color: #3C4C6C;
font-size: 187%;
font-weight: normal;
margin-top: 1.75em;
padding-bottom: 2px;
}
table {
margin-bottom: 4em;
border-collapse:collapse;
vertical-align: middle;
}
td {
border: 1px solid #9BB3CD;
padding: .667em;
font-size: 100%;
}
th {
border: 1px solid #9BB3CD;
padding: .3em .667em .3em .667em;
background: #93A5BB;
font-size: 103%;
font-weight: bold;
color: white;
text-align: left;
}
/* @group Common page elements */
#top_header {
height: 91px;
left: 0;
min-width: 598px;
position: absolute;
right: 0;
top: 0;
z-index: 900;
}
#footer {
clear: both;
padding-top: 20px;
text-align: center;
}
#contents, #overview_contents {
-webkit-overflow-scrolling: touch;
border-top: 1px solid #2B334F;
position: absolute;
top: 91px;
left: 0;
right: 0;
bottom: 0;
overflow-x: hidden;
overflow-y: auto;
padding-left: 2em;
padding-right: 2em;
padding-top: 1em;
min-width: 550px;
}
#contents.isShowingTOC {
left: 230px;
min-width: 320px;
}
.copyright {
font-size: 12px;
}
.generator {
font-size: 11px;
}
.main-navigation ul li {
display: inline;
margin-left: 15px;
list-style: none;
}
.navigation-top {
clear: both;
float: right;
}
.navigation-bottom {
clear: both;
float: right;
margin-top: 20px;
margin-bottom: -10px;
}
.open > .disclosure {
background-image: url("../img/disclosure_open.png");
}
.disclosure {
background: url("../img/disclosure.png") no-repeat scroll 0 0;
}
.disclosure, .nodisclosure {
display: inline-block;
height: 8px;
margin-right: 5px;
position: relative;
width: 9px;
}
/* @end */
/* @group Header */
#top_header #library {
background: url("../img/library_background.png") repeat-x 0 0 #485E78;
background-color: #ccc;
height: 35px;
font-size: 115%;
}
#top_header #library #libraryTitle {
color: #FFFFFF;
margin-left: 15px;
text-shadow: 0 -1px 0 #485E78;
top: 8px;
position: absolute;
}
#libraryTitle {
left: 0;
}
#top_header #library #developerHome {
color: #92979E;
right: 15px;
top: 8px;
position: absolute;
}
#top_header #library a:hover {
text-decoration: none;
}
#top_header #title {
background: url("../img/title_background.png") repeat-x 0 0 #8A98A9;
border-bottom: 1px solid #B6B6B6;
height: 25px;
overflow: hidden;
}
#top_header h1 {
font-size: 115%;
font-weight: normal;
margin: 0;
padding: 3px 0 2px;
text-align: center;
text-shadow: 0 1px 0 #D5D5D5;
white-space: nowrap;
}
#headerButtons {
background-color: #D8D8D8;
background-image: url("../img/button_bar_background.png");
border-bottom: 1px solid #EDEDED;
border-top: 1px solid #2B334F;
font-size: 8pt;
height: 28px;
left: 0;
list-style: none outside none;
margin: 0;
overflow: hidden;
padding: 0;
position: absolute;
right: 0;
top: 61px;
}
#headerButtons li {
background-repeat: no-repeat;
display: inline;
margin-top: 0;
margin-bottom: 0;
padding: 0;
}
#toc_button button {
border-color: #ACACAC;
border-style: none solid none none;
border-width: 0 1px 0 0;
height: 28px;
margin: 0;
padding-left: 30px;
text-align: left;
width: 230px;
}
li#jumpto_button {
left: 230px;
margin-left: 0;
position: absolute;
}
li#jumpto_button select {
height: 22px;
margin: 5px 2px 0 10px;
max-width: 300px;
}
/* @end */
/* @group Table of contents */
#tocContainer.isShowingTOC {
border-right: 1px solid #ACACAC;
display: block;
overflow-x: hidden;
overflow-y: auto;
padding: 0;
}
#tocContainer {
background-color: #E4EBF7;
border-top: 1px solid #2B334F;
bottom: 0;
display: none;
left: 0;
overflow: hidden;
position: absolute;
top: 91px;
width: 229px;
}
#tocContainer > ul#toc {
font-size: 11px;
margin: 0;
padding: 12px 0 18px;
width: 209px;
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
}
#tocContainer > ul#toc > li {
margin: 0;
padding: 0 0 7px 30px;
text-indent: -15px;
}
#tocContainer > ul#toc > li > .sectionName a {
color: #000000;
font-weight: bold;
}
#tocContainer > ul#toc > li > .sectionName a:hover {
text-decoration: none;
}
#tocContainer > ul#toc li.children > ul {
display: none;
height: 0;
}
#tocContainer > ul#toc > li > ul {
margin: 0;
padding: 0;
}
#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
margin-left: 0;
margin-bottom: 0;
padding-left: 15px;
}
#tocContainer > ul#toc > li ul {
list-style: none;
margin-right: 0;
padding-right: 0;
}
#tocContainer > ul#toc li.children.open > ul {
display: block;
height: auto;
margin-left: -15px;
padding-left: 0;
}
#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
margin-left: 0;
padding-left: 15px;
}
#tocContainer li ul li {
margin-top: 0.583em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#tocContainer li ul li span.sectionName {
white-space: normal;
}
#tocContainer > ul#toc > li > ul > li > .sectionName a {
font-weight: bold;
}
#tocContainer > ul#toc > li > ul a {
color: #4F4F4F;
}
/* @end */
/* @group Index formatting */
.index-title {
font-size: 13px;
font-weight: normal;
}
.index-column {
float: left;
width: 30%;
min-width: 200px;
font-size: 11px;
}
.index-column ul {
margin: 8px 0 0 0;
padding: 0;
list-style: none;
}
.index-column ul li {
margin: 0 0 3px 0;
padding: 0;
}
.hierarchy-column {
min-width: 400px;
}
.hierarchy-column ul {
margin: 3px 0 0 15px;
}
.hierarchy-column ul li {
list-style-type: square;
}
/* @end */
/* @group Common formatting elements */
.title {
font-weight: normal;
font-size: 215%;
margin-top:0;
}
.subtitle {
font-weight: normal;
font-size: 180%;
color: #3C4C6C;
border-bottom: 1px solid #5088C5;
}
.subsubtitle {
font-weight: normal;
font-size: 145%;
height: 0.7em;
}
.note {
border: 1px solid #5088C5;
background-color: white;
margin: 1.667em 0 1.75em 0;
padding: 0 .667em .083em .750em;
}
.warning {
border: 1px solid #5088C5;
background-color: #F0F3F7;
margin-bottom: 0.5em;
padding: 0.3em 0.8em;
}
.bug {
border: 1px solid #000;
background-color: #ffffcc;
margin-bottom: 0.5em;
padding: 0.3em 0.8em;
}
.deprecated {
color: #F60425;
}
/* @end */
/* @group Common layout */
.section {
margin-top: 3em;
}
/* @end */
/* @group Object specification section */
.section-specification {
margin-left: 2.5em;
margin-right: 2.5em;
font-size: 12px;
}
.section-specification table {
margin-bottom: 0em;
border-top: 1px solid #d6e0e5;
}
.section-specification td {
vertical-align: top;
border-bottom: 1px solid #d6e0e5;
border-left-width: 0px;
border-right-width: 0px;
border-top-width: 0px;
padding: .6em;
}
.section-specification .specification-title {
font-weight: bold;
}
/* @end */
/* @group Tasks section */
.task-list {
list-style-type: none;
padding-left: 0px;
}
.task-list li {
margin-bottom: 3px;
}
.task-item-suffix {
color: #996;
font-size: 12px;
font-style: italic;
margin-left: 0.5em;
}
span.tooltip span.tooltip {
font-size: 1.0em;
display: none;
padding: 0.3em;
border: 1px solid #aaa;
background-color: #fdfec8;
color: #000;
text-align: left;
}
span.tooltip:hover span.tooltip {
display: block;
position: absolute;
margin-left: 2em;
}
/* @end */
/* @group Method section */
.section-method {
margin-top: 2.3em;
}
.method-title {
margin-bottom: 1.5em;
}
.method-subtitle {
margin-top: 0.7em;
margin-bottom: 0.2em;
}
.method-subsection p {
margin-top: 0.4em;
margin-bottom: 0.8em;
}
.method-declaration {
margin-top:1.182em;
margin-bottom:.909em;
}
.method-declaration code {
font:14px Courier, Consolas, monospace;
color:#000;
}
.declaration {
color: #000;
}
.argument-def {
margin-top: 0.3em;
margin-bottom: 0.3em;
}
.argument-def dd {
margin-left: 1.25em;
}
.see-also-section ul {
list-style-type: none;
padding-left: 0px;
margin-top: 0;
}
.see-also-section li {
margin-bottom: 3px;
}
.declared-in-ref {
color: #666;
}
#tocContainer.hideInXcode {
display: none;
border: 0px solid black;
}
#top_header.hideInXcode {
display: none;
}
#contents.hideInXcode {
border: 0px solid black;
top: 0px;
left: 0px;
}
/* @end */

View file

@ -0,0 +1,22 @@
header {
display: none;
}
div.main-navigation, div.navigation-top {
display: none;
}
div#overview_contents, div#contents.isShowingTOC, div#contents {
overflow: visible;
position: relative;
top: 0px;
border: none;
left: 0;
}
#tocContainer.isShowingTOC {
display: none;
}
nav {
display: none;
}

View file

@ -0,0 +1,94 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Google Analytics SDK for iOS Hierarchy</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" media="all" />
<link rel="stylesheet" type="text/css" media="print" href="css/stylesPrint.css" />
<meta name="generator" content="appledoc 2.1 (build 858)" />
</head>
<body>
<header id="top_header">
<div id="library" class="hideInXcode">
<h1><a id="libraryTitle" href="index.html">Google Analytics SDK for iOS </a></h1>
<a id="developerHome" href="index.html">Google Inc</a>
</div>
<div id="title" role="banner">
<h1 class="hideInXcode">Google Analytics SDK for iOS Hierarchy</h1>
</div>
<ul id="headerButtons" role="toolbar"></ul>
</header>
<article>
<div id="overview_contents" role="main">
<div class="main-navigation navigation-top">
<a href="index.html">Previous</a>
</div>
<div id="header">
<div class="section-header">
<h1 class="title title-header">Google Analytics SDK for iOS Hierarchy</h1>
</div>
</div>
<div id="container">
<div class="index-column hierarchy-column">
<h2 class="index-title">Class Hierarchy</h2>
<ul>
<li>NSObject
<ul>
<li><a href="Classes/GAI.html">GAI</a></li>
<li><a href="Classes/GAITransaction.html">GAITransaction</a></li>
<li><a href="Classes/GAITransactionItem.html">GAITransactionItem</a></li>
</ul>
</li>
<li>UIViewController
<ul>
<li><a href="Classes/GAITrackedViewController.html">GAITrackedViewController</a></li>
</ul>
</li>
</ul>
</div>
<div class="index-column">
<h2 class="index-title">Protocol References</h2>
<ul>
<li><a href="Protocols/GAITracker.html">GAITracker</a></li>
</ul>
</div>
</div>
<div class="main-navigation navigation-bottom">
<a href="index.html">Previous</a>
</div>
<div id="footer">
<hr />
<div class="footer-copyright">
<p><span class="copyright">&copy; 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
</div>
</div>
</div>
</article>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

View file

@ -0,0 +1,84 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Google Analytics SDK for iOS Reference</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" media="all" />
<link rel="stylesheet" type="text/css" media="print" href="css/stylesPrint.css" />
<meta name="generator" content="appledoc 2.1 (build 858)" />
</head>
<body>
<header id="top_header">
<div id="library" class="hideInXcode">
<h1><a id="libraryTitle" href="index.html">Google Analytics SDK for iOS </a></h1>
<a id="developerHome" href="index.html">Google Inc</a>
</div>
<div id="title" role="banner">
<h1 class="hideInXcode">Google Analytics SDK for iOS Reference</h1>
</div>
<ul id="headerButtons" role="toolbar"></ul>
</header>
<article>
<div id="overview_contents" role="main">
<div class="main-navigation navigation-top">
<a href="hierarchy.html">Next</a>
</div>
<div id="header">
<div class="section-header">
<h1 class="title title-header">Google Analytics SDK for iOS Reference</h1>
</div>
</div>
<div id="container">
<div class="index-column">
<h2 class="index-title">Class References</h2>
<ul>
<li><a href="Classes/GAI.html">GAI</a></li>
<li><a href="Classes/GAITrackedViewController.html">GAITrackedViewController</a></li>
<li><a href="Classes/GAITransaction.html">GAITransaction</a></li>
<li><a href="Classes/GAITransactionItem.html">GAITransactionItem</a></li>
</ul>
</div>
<div class="index-column">
<h2 class="index-title">Protocol References</h2>
<ul>
<li><a href="Protocols/GAITracker.html">GAITracker</a></li>
</ul>
</div>
</div>
<div class="main-navigation navigation-bottom">
<a href="hierarchy.html">Next</a>
</div>
<div id="footer">
<hr />
<div class="footer-copyright">
<p><span class="copyright">&copy; 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
</div>
</div>
</div>
</article>
</body>
</html>

View file

@ -1,232 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
<html>
<head>
<title>GANTracker.h</title>
<meta http-equiv="Content-Type" content="text/html; charset=ascii">
<meta name="generator" content="HeaderDoc">
<meta name="xcode-display" content="render">
<style><!--
#tocMenu {
display: block;
position:fixed;
top:0px;
left:0px;
width:210px;
height:100%;
background:transparent;
}
#bodyText {
margin-left: 210px;
}
--></style>
<script language="JavaScript" type="text/javascript"><!--
function hidetoc() {
var origURL = parent.document.URL;
var contentURL = origURL.substring(origURL.indexOf('?')+1, origURL.length);
if (contentURL.length == origURL.length) {
jumpPos = origURL.substring(origURL.indexOf('#')+1, origURL.length);
}
if (contentURL == "hidetoc") {
var toc = document.getElementById('tocMenu');
var body = document.getElementById('bodyText');
if (toc && body) {
toc.style.display = 'none';
body.style.marginLeft = '0px';
}
}
}
--></script><style type="text/css"><!--.keyword {background:#ffffff; color:#761550;}.template {background:#ffffff; color:#761550;}.number {background: #ffffff; color:#0000ff;}.function {background:#ffffff; color:#000000;}.string {background: #ffffff; color:#891315;}.preprocessor {background:#ffffff; color:#236e25}.comment {background:#ffffff; color:#236e25}.char {background: #ffffff; color:#0000ff;}.var {background:#ffffff; color:#000000;}.type {background:#ffffff; color:#761550;}.param {background:#ffffff; color:#000000;}a:link {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:active {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}h4 {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: tiny; font-weight: bold;}body {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 10pt;}.list_indent { margin-left: 40px; }.declaration_indent { margin-left: 40px; }.param_indent { margin-left: 40px; }.group_indent { margin-left: 40px; }.group_desc_indent { margin-left: 20px; }.warning_indent { margin-left: 40px; }.important_indent { margin-left: 40px; }.hd_tocAccess { font-style: italic; font-size: 10px; font-weight: normal; color: #303030; }--></style>
</head>
<body bgcolor="#ffffff" onload="hidetoc();">
<!-- headerDoc=Header; uid=//apple_ref/doc/header/GANTracker.h; name=GANTracker.h -->
<a name="//apple_ref/doc/header/GANTracker.h"></a>
<div id="tocMenu">
<iframe id="toc_content" name="toc_content" src="toc.html" width="210" height="100%" align="left" frameborder="0">This document set is best viewed in a browser that supports iFrames.</iframe>
</div>
<div id="bodyText">
<a name="top"></a>
<hr>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h1><a name="GANTracker.h">GANTracker.h</a></h1>
</td></tr></table>
<hr>
<p><b>Version:</b> 1.5<br></p>
<div class="declaration_indent">
</div>
<h5 class="tight">
<font face="Lucida Grande,Helvetica,Arial">Discussion</font>
</h5>
<!-- begin discussion --><p>
Google Analytics iOS SDK</p>
<!-- end discussion -->
<p></p>
<hr>
<br><a name="HeaderDoc_classes"></a>
<h2>Classes</h2>
<dl>
<dt><tt><a href="Classes/GANTracker/index.html#//apple_ref/occ/cl/GANTracker" target="_top">GANTracker</a></tt></dt>
<dd><p>Google Analytics tracking class. Tracks pageviews, events, and
transactions by storing them in a persistent store and dispatching them in the
background to Google Analytics.
</p></dd>
</dl>
<a name="HeaderDoc_protocols"></a>
<h2>Protocols</h2>
<dl>
<dt><tt><a href="Protocols/GANTrackerDelegate/index.html#//apple_ref/occ/intf/GANTrackerDelegate" target="_top">GANTrackerDelegate</a></tt></dt>
<dd><p>Google Analytics tracker delegate. This delegate gets notified when
the tracker dispatches a hit successfully, or when there was an error
dispatching the hit. All delegate methods are optional.
</p></dd>
</dl>
<hr>
<br><a name="HeaderDoc_constants"></a>
<h2>Constants</h2>
<dl>
<dt><tt><a href="index.html#//apple_ref/c/data/kGANTrackerErrorDomain" target="_top">kGANTrackerErrorDomain</a></tt></dt>
<dd><p>The error domain for errors originating in the Google Analytics iOS
SDK. All errors generated by the Google Analytics iOS SDK will belong to
this domain.
</p></dd>
<dt><tt><a href="index.html#//apple_ref/c/data/kGANMaxCustomVariables" target="_top">kGANMaxCustomVariables</a></tt></dt>
<dd>
<p>The maximum number of custom variables the SDK can support. Custom
variable indices must be between 1 and this value, inclusive.
</p>
</dd>
<dt><tt><a href="index.html#//apple_ref/c/data/kGANMaxCustomVariableLength" target="_top">kGANMaxCustomVariableLength</a></tt></dt>
<dd><p>The maximum length of a custom variable name or value. The length of
custom variable names and values must not exceed this value.
</p></dd>
</dl>
<hr>
<!-- headerDoc=data; uid=//apple_ref/c/data/kGANTrackerErrorDomain; name=kGANTrackerErrorDomain --><a name="//apple_ref/c/data/kGANTrackerErrorDomain"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="kGANTrackerErrorDomain">kGANTrackerErrorDomain</a></h3>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>The error domain for errors originating in the Google Analytics iOS
SDK. All errors generated by the Google Analytics iOS SDK will belong to
this domain.
<!-- end abstract --></p>
<p></p>
<div class="declaration_indent">
<pre><span class="keyword">extern</span> <!-- a logicalPath="//apple_ref/c/cl/NSString //apple_ref/c/tdef/NSString //apple_ref/c/tag/NSString //apple_ref/c/econst/NSString //apple_ref/c/struct/NSString //apple_ref/c/clconst/NSString //apple_ref/c/intf/NSString" --><span class="type">NSString</span><!-- /a --><span class="type">*</span> <span class="keyword">const</span> <a href="index.html#//apple_ref/c/data/kGANTrackerErrorDomain" logicalPath="//apple_ref/c/econst/kGANTrackerErrorDomain //apple_ref/c/data/kGANTrackerErrorDomain" target="_top"><span class="var">kGANTrackerErrorDomain</span></a>; </pre>
</div>
<p></p>
<hr>
<!-- headerDoc=data; uid=//apple_ref/c/data/kGANMaxCustomVariables; name=kGANMaxCustomVariables --><a name="//apple_ref/c/data/kGANMaxCustomVariables"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="kGANMaxCustomVariables">kGANMaxCustomVariables</a></h3>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>The maximum number of custom variables the SDK can support. Custom
variable indices must be between 1 and this value, inclusive.
</p>
<!-- end abstract -->
<p></p>
<div class="declaration_indent">
<pre><span class="keyword">extern</span> <span class="keyword">const</span> <!-- a logicalPath="//apple_ref/c/econst/NSUInteger //apple_ref/c/data/NSUInteger" --><span class="var">NSUInteger</span><!-- /a --> <a href="index.html#//apple_ref/c/data/kGANMaxCustomVariables" logicalPath="//apple_ref/c/econst/kGANMaxCustomVariables //apple_ref/c/data/kGANMaxCustomVariables" target="_top"><span class="var">kGANMaxCustomVariables</span></a>; </pre>
</div>
<h5 class="tight">
<font face="Lucida Grande,Helvetica,Arial">Discussion</font>
</h5>
<!-- begin discussion --><p>Standard accounts support up to 5 custom variables, while premium
accounts support up to 50 custom variables. The SDK will accept custom
variable indices higher than 5, but unless the account is a premium account,
those custom variables will not be processed.
<!-- end discussion -->
</p>
<p></p>
<hr>
<!-- headerDoc=data; uid=//apple_ref/c/data/kGANMaxCustomVariableLength; name=kGANMaxCustomVariableLength --><a name="//apple_ref/c/data/kGANMaxCustomVariableLength"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="kGANMaxCustomVariableLength">kGANMaxCustomVariableLength</a></h3>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>The maximum length of a custom variable name or value. The length of
custom variable names and values must not exceed this value.
<!-- end abstract --></p>
<p></p>
<div class="declaration_indent">
<pre><span class="keyword">extern</span> <span class="keyword">const</span> <!-- a logicalPath="//apple_ref/c/econst/NSUInteger //apple_ref/c/data/NSUInteger" --><span class="var">NSUInteger</span><!-- /a --> <a href="index.html#//apple_ref/c/data/kGANMaxCustomVariableLength" logicalPath="//apple_ref/c/econst/kGANMaxCustomVariableLength //apple_ref/c/data/kGANMaxCustomVariableLength" target="_top"><span class="var">kGANMaxCustomVariableLength</span></a>; </pre>
</div>
<p></p>
<a name="HeaderDoc_datatypes"></a>
<h2>Typedefs</h2>
<dl>
<dt><tt><a href="index.html#//apple_ref/c/tdef/GANErrorCode" target="_top">GANErrorCode</a></tt></dt>
<dd></dd>
<dt><tt><a href="index.html#//apple_ref/c/tdef/GANCVScope" target="_top">GANCVScope</a></tt></dt>
<dd>
<p>Custom variable scope enumeration.
</p>
</dd>
</dl>
<hr>
<!-- headerDoc=tdef; uid=//apple_ref/c/tdef/GANErrorCode; name=GANErrorCode --><a name="//apple_ref/c/tdef/GANErrorCode"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="GANErrorCode">GANErrorCode</a></h3>
</td></tr></table>
<hr>
<p></p>
<div class="declaration_indent">
<pre><span class="keyword">typedef</span> <span class="keyword">enum</span> {
<span class="comment">// This error code is returned when input to a method is incorrect.</span>
<!-- a logicalPath="//apple_ref/c/econst/kGANTrackerInvalidInputError //apple_ref/c/data/kGANTrackerInvalidInputError" --><span class="var">kGANTrackerInvalidInputError</span><!-- /a --> = <span class="number">0xbade7a9</span>,
<span class="comment">// This error code is returned when the number of hits generated in a session</span>
<span class="comment">// exceeds the limit (currently 500).</span>
<!-- a logicalPath="//apple_ref/c/econst/kGANTrackerEventsPerSessionLimitError //apple_ref/c/data/kGANTrackerEventsPerSessionLimitError" --><span class="var">kGANTrackerEventsPerSessionLimitError</span><!-- /a --> = <span class="number">0xbad5704e</span>,
<span class="comment">// This error code is returned if the method called requires that the tracker</span>
<span class="comment">// be started.</span>
<!-- a logicalPath="//apple_ref/c/econst/kGANTrackerNotStartedError //apple_ref/c/data/kGANTrackerNotStartedError" --><span class="var">kGANTrackerNotStartedError</span><!-- /a --> = <span class="number">0xbada55</span>,
<span class="comment">// This error code is returned if the method call resulted in some sort of</span>
<span class="comment">// database error.</span>
<!-- a logicalPath="//apple_ref/c/econst/kGANTrackerDatabaseError //apple_ref/c/data/kGANTrackerDatabaseError" --><span class="var">kGANTrackerDatabaseError</span><!-- /a --> = <span class="number">0xbadbaddb</span>
} <!-- a logicalPath="//apple_ref/c/econst/GANErrorCode //apple_ref/c/data/GANErrorCode" --><span class="var">GANErrorCode</span><!-- /a -->; </pre>
</div>
<h5 class="tight">
<font face="Lucida Grande,Helvetica,Arial">Discussion</font>
</h5>
<!-- begin discussion --><p>Error codes which may be returned by various GANTracker methods.<!-- end discussion -->
</p>
<p></p>
<hr>
<!-- headerDoc=tdef; uid=//apple_ref/c/tdef/GANCVScope; name=GANCVScope --><a name="//apple_ref/c/tdef/GANCVScope"></a>
<table border="0" cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5">
<h3><a name="GANCVScope">GANCVScope</a></h3>
</td></tr></table>
<hr>
<p><!-- begin abstract --></p>
<p>Custom variable scope enumeration.
</p>
<!-- end abstract -->
<p></p>
<div class="declaration_indent">
<pre><span class="keyword">typedef</span> <span class="keyword">enum</span> {
<!-- a logicalPath="//apple_ref/c/econst/kGANVisitorScope //apple_ref/c/data/kGANVisitorScope" --><span class="var">kGANVisitorScope</span><!-- /a --> = <span class="var">1U</span>,
<!-- a logicalPath="//apple_ref/c/econst/kGANSessionScope //apple_ref/c/data/kGANSessionScope" --><span class="var">kGANSessionScope</span><!-- /a --> = <span class="var">2U</span>,
<!-- a logicalPath="//apple_ref/c/econst/kGANPageScope //apple_ref/c/data/kGANPageScope" --><span class="var">kGANPageScope</span><!-- /a --> = <span class="var">3U</span>
} <!-- a logicalPath="//apple_ref/c/econst/GANCVScope //apple_ref/c/data/GANCVScope" --><span class="var">GANCVScope</span><!-- /a -->; </pre>
</div>
<h5 class="tight">
<font face="Lucida Grande,Helvetica,Arial">Discussion</font>
</h5>
<!-- begin discussion --><p>Possible values are visitor scope, session scope, and page scope.
Visitor and session scoped custom variables are stored for later use. Session
and page scoped custom variables are attached to each event. Visitor scoped
custom variables are sent only on the first event for a session.
<!-- end discussion -->
</p>
<p></p>
<p></p>
<p>&#169; Copyright 2009 Google Inc. All rights reserved.
Last Updated: Wednesday, April 11, 2012
</p>
</div>
</body>
</html>

View file

@ -1,49 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
<html>
<head>
<meta name="ROBOTS" content="NOINDEX">
<title>Documentation for GANTracker.h</title>
<meta http-equiv="Content-Type" content="text/html; charset=ascii">
<meta name="generator" content="HeaderDoc">
<meta name="xcode-display" content="render">
<style type="text/css"><!--.keyword {background:#ffffff; color:#761550;}.template {background:#ffffff; color:#761550;}.number {background: #ffffff; color:#0000ff;}.function {background:#ffffff; color:#000000;}.string {background: #ffffff; color:#891315;}.preprocessor {background:#ffffff; color:#236e25}.comment {background:#ffffff; color:#236e25}.char {background: #ffffff; color:#0000ff;}.var {background:#ffffff; color:#000000;}.type {background:#ffffff; color:#761550;}.param {background:#ffffff; color:#000000;}a:link {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #0000ff;}a:visited:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:active {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}a:hover {text-decoration: underline; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: small; color: #ff6600;}h4 {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: tiny; font-weight: bold;}body {text-decoration: none; font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 10pt;}.list_indent { margin-left: 40px; }.declaration_indent { margin-left: 40px; }.param_indent { margin-left: 40px; }.group_indent { margin-left: 40px; }.group_desc_indent { margin-left: 20px; }.warning_indent { margin-left: 40px; }.important_indent { margin-left: 40px; }.hd_tocAccess { font-style: italic; font-size: 10px; font-weight: normal; color: #303030; }--></style>
</head>
<body bgcolor="#edf2f6" link="#000099" vlink="#660066" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<font size="-2"><a href="../masterTOC.html" target="_top" headerdoc="topLink">[Top]</a></font><br><table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr height="51" width="100%" bgcolor="#466C9B"><td width="100%">&#160;</td></tr>
<tr><td>
<br><table border="0" cellpadding="0" cellspacing="2" width="148">
<tr>
<td width="15">&#160;</td>
<td colspan="2"><font size="5" color="#330066"><b>Header:</b></font></td>
</tr>
<tr>
<td width="15">&#160;</td>
<td width="15">&#160;</td>
<td><b><font size="+1">GANTracker.h</font></b></td>
</tr>
<tr>
<td></td>
<td colspan="2">
<h4>
<br><nobr><a href="index.html#top" target="doc">Introduction</a></nobr>
</h4>
<h4><a href="index.html#HeaderDoc_typedefs" target="doc">Defined Types
</a></h4>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/c/tdef/GANErrorCode" target="doc">GANErrorCode</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/c/tdef/GANCVScope" target="doc">GANCVScope</a></nobr><br><h4><a href="index.html#HeaderDoc_constants" target="doc">Constants
</a></h4>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/c/data/kGANTrackerErrorDomain" target="doc">kGANTrackerErrorDomain</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/c/data/kGANMaxCustomVariables" target="doc">kGANMaxCustomVariables</a></nobr><br><nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="index.html#//apple_ref/c/data/kGANMaxCustomVariableLength" target="doc">kGANMaxCustomVariableLength</a></nobr><br><h4><a href="index.html#HeaderDoc_classes" target="doc">Classes</a></h4>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="Classes/GANTracker/index.html#" target="doc">GANTracker</a></nobr><br><h4><a href="index.html#HeaderDoc_protocols" target="doc">Protocols</a></h4>
<nobr>&#160;&#160;&#160;&#160;&#160;&#160;<a href="Protocols/GANTrackerDelegate/index.html#" target="doc">GANTrackerDelegate</a></nobr><br>
</td>
</tr>
</table>
<p>&#160;</p>
<p>
</p>
</td></tr>
</table>
</body>
</html>

View file

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.google.analytics.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainWindow</string>
</dict>
</plist>

View file

@ -1,298 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
119B609915349797009DDB8E /* SecondViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 119B609815349797009DDB8E /* SecondViewController.m */; };
119B60A615349A45009DDB8E /* libGoogleAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 119B60A515349A45009DDB8E /* libGoogleAnalytics.a */; };
119B60AD15349F56009DDB8E /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 119B60AC15349F56009DDB8E /* libsqlite3.dylib */; };
119B60B215349F68009DDB8E /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 119B60B115349F68009DDB8E /* CFNetwork.framework */; };
1D3623260D0F684500981E51 /* BasicExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* BasicExampleAppDelegate.m */; };
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
28216C970DB411BC00E5133A /* FirstViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28216C960DB411BC00E5133A /* FirstViewController.m */; };
282CCBFE0DB6C98000C4EA27 /* SecondView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 282CCBFD0DB6C98000C4EA27 /* SecondView.xib */; };
2840D7CE1179279E00D7F93C /* FirstView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2840D7CD1179279E00D7F93C /* FirstView.xib */; };
288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765070DF74369002DB57D /* CoreGraphics.framework */; };
28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD73870D9D96C1002E5188 /* MainWindow.xib */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
119B609715349797009DDB8E /* SecondViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecondViewController.h; sourceTree = "<group>"; };
119B609815349797009DDB8E /* SecondViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SecondViewController.m; sourceTree = "<group>"; };
119B60A415349A45009DDB8E /* GANTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GANTracker.h; path = ../../Library/GANTracker.h; sourceTree = SOURCE_ROOT; };
119B60A515349A45009DDB8E /* libGoogleAnalytics.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAnalytics.a; path = ../../Library/libGoogleAnalytics.a; sourceTree = SOURCE_ROOT; };
119B60AC15349F56009DDB8E /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
119B60B115349F68009DDB8E /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1D3623240D0F684500981E51 /* BasicExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicExampleAppDelegate.h; sourceTree = "<group>"; };
1D3623250D0F684500981E51 /* BasicExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BasicExampleAppDelegate.m; sourceTree = "<group>"; };
1D6058910D05DD3D006BFB54 /* BasicExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BasicExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
28216C950DB411BC00E5133A /* FirstViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstViewController.h; sourceTree = "<group>"; };
28216C960DB411BC00E5133A /* FirstViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstViewController.m; sourceTree = "<group>"; };
282CCBFD0DB6C98000C4EA27 /* SecondView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SecondView.xib; sourceTree = "<group>"; };
2840D7CD1179279E00D7F93C /* FirstView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FirstView.xib; sourceTree = "<group>"; };
288765070DF74369002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
28A0AB4B0D9B1048005BE974 /* BasicExample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicExample_Prefix.pch; sourceTree = "<group>"; };
28AD73870D9D96C1002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* BasicExample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "BasicExample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */,
119B60A615349A45009DDB8E /* libGoogleAnalytics.a in Frameworks */,
119B60AD15349F56009DDB8E /* libsqlite3.dylib in Frameworks */,
119B60B215349F68009DDB8E /* CFNetwork.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
1D3623240D0F684500981E51 /* BasicExampleAppDelegate.h */,
1D3623250D0F684500981E51 /* BasicExampleAppDelegate.m */,
28216C950DB411BC00E5133A /* FirstViewController.h */,
28216C960DB411BC00E5133A /* FirstViewController.m */,
119B609715349797009DDB8E /* SecondViewController.h */,
119B609815349797009DDB8E /* SecondViewController.m */,
);
path = Classes;
sourceTree = "<group>";
};
119B60A315349A30009DDB8E /* Google Analytics SDK */ = {
isa = PBXGroup;
children = (
119B60A415349A45009DDB8E /* GANTracker.h */,
119B60A515349A45009DDB8E /* libGoogleAnalytics.a */,
);
name = "Google Analytics SDK";
sourceTree = "<group>";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
1D6058910D05DD3D006BFB54 /* BasicExample.app */,
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* BasicExample */ = {
isa = PBXGroup;
children = (
119B60A315349A30009DDB8E /* Google Analytics SDK */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = BasicExample;
sourceTree = "<group>";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
28A0AB4B0D9B1048005BE974 /* BasicExample_Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
2840D7CD1179279E00D7F93C /* FirstView.xib */,
282CCBFD0DB6C98000C4EA27 /* SecondView.xib */,
28AD73870D9D96C1002E5188 /* MainWindow.xib */,
8D1107310486CEB800E47090 /* BasicExample-Info.plist */,
);
name = Resources;
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
1D30AB110D05D00D00671497 /* Foundation.framework */,
288765070DF74369002DB57D /* CoreGraphics.framework */,
119B60AC15349F56009DDB8E /* libsqlite3.dylib */,
119B60B115349F68009DDB8E /* CFNetwork.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1D6058900D05DD3D006BFB54 /* BasicExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "BasicExample" */;
buildPhases = (
1D60588D0D05DD3D006BFB54 /* Resources */,
1D60588E0D05DD3D006BFB54 /* Sources */,
1D60588F0D05DD3D006BFB54 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = BasicExample;
productName = BasicExample;
productReference = 1D6058910D05DD3D006BFB54 /* BasicExample.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BasicExample" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* BasicExample */;
projectDirPath = "";
projectRoot = "";
targets = (
1D6058900D05DD3D006BFB54 /* BasicExample */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
1D60588D0D05DD3D006BFB54 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */,
282CCBFE0DB6C98000C4EA27 /* SecondView.xib in Resources */,
2840D7CE1179279E00D7F93C /* FirstView.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
1D60588E0D05DD3D006BFB54 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
1D3623260D0F684500981E51 /* BasicExampleAppDelegate.m in Sources */,
28216C970DB411BC00E5133A /* FirstViewController.m in Sources */,
119B609915349797009DDB8E /* SecondViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = BasicExample_Prefix.pch;
INFOPLIST_FILE = "BasicExample-Info.plist";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/../../Library\"",
);
PRODUCT_NAME = BasicExample;
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = BasicExample_Prefix.pch;
INFOPLIST_FILE = "BasicExample-Info.plist";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/../../Library\"",
);
PRODUCT_NAME = BasicExample;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = iphoneos;
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
PREBINDING = NO;
SDKROOT = iphoneos;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "BasicExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1D6058940D05DD3E006BFB54 /* Debug */,
1D6058950D05DD3E006BFB54 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BasicExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}

View file

@ -1,11 +0,0 @@
//
// BasicExample_Prefix.pch
// Google Analytics iOS SDK.
//
// Copyright 2009 Google Inc. All rights reserved.
//
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif

View file

@ -1,21 +0,0 @@
//
// BasicExampleAppDelegate.h
// Google Analytics iOS SDK.
//
// Copyright 2009 Google Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GANTracker.h"
@interface BasicExampleAppDelegate : NSObject <UIApplicationDelegate,
UITabBarControllerDelegate,
GANTrackerDelegate> {
UIWindow *window_;
UITabBarController *tabBarController_;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end

View file

@ -1,68 +0,0 @@
//
// BasicExampleAppDelegate.m
// Google Analytics iOS SDK.
//
// Copyright 2009 Google Inc. All rights reserved.
//
#import "BasicExampleAppDelegate.h"
// **************************************************************************
// Replace this string with your Analytics account ID!
// **************************************************************************
static NSString *const kAnalyticsAccountId = @"UA-00000000-1";
// Dispatch period in seconds.
static const NSInteger kDispatchPeriodSeconds = 10;
@implementation BasicExampleAppDelegate
@synthesize window = window_;
@synthesize tabBarController = tabBarController_;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[GANTracker sharedTracker] startTrackerWithAccountID:kAnalyticsAccountId
dispatchPeriod:kDispatchPeriodSeconds
delegate:self];
NSError *error = nil;
if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1
name:@"iOS1"
value:@"iv1"
withError:&error]) {
NSLog(@"setCustomVariableAtIndex failed: %@", error);
}
[self.window addSubview:self.tabBarController.view];
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark -
#pragma mark GANTrackerDelegate methods
- (void)hitDispatched:(NSString *)hitString {
NSLog(@"Hit Dispatched: %@", hitString);
}
- (void)trackerDispatchDidComplete:(GANTracker *)tracker
eventsDispatched:(NSUInteger)hitsDispatched
eventsFailedDispatch:(NSUInteger)hitsFailedDispatch {
NSLog(@"Dispatch completed (%u OK, %u failed)",
hitsDispatched, hitsFailedDispatch);
}
#pragma mark -
#pragma mark Memory management
- (void)dealloc {
[tabBarController_ release];
[window_ release];
[super dealloc];
}
@end

View file

@ -1,20 +0,0 @@
//
// FirstViewController.h
// BasicExample
//
// Created by Farooq Mela on 4/10/12.
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
@private
UIButton *button_;
}
@property (nonatomic, assign) IBOutlet UIButton *button;
- (IBAction)buttonClicked:(id)sender;
@end

View file

@ -1,31 +0,0 @@
//
// FirstViewController.m
// BasicExample
//
// Created by Farooq Mela on 4/10/12.
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "FirstViewController.h"
#import "GANTracker.h"
@implementation FirstViewController
@synthesize button = button_;
- (void)viewDidAppear:(BOOL)animated {
NSLog(@"First View appeared!");
[[GANTracker sharedTracker] trackPageview:@"FirstView" withError:nil];
[super viewDidAppear:animated];
}
- (IBAction)buttonClicked:(id)sender {
NSLog(@"First View button clicked!");
[[GANTracker sharedTracker] trackEvent:@"Button"
action:@"Click"
label:@"First Button"
value:-1
withError:nil];
}
@end

View file

@ -1,20 +0,0 @@
//
// SecondViewController.h
// BasicExample
//
// Created by Farooq Mela on 4/10/12.
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController {
@private
UIButton *button_;
}
@property (nonatomic, assign) IBOutlet UIButton *button;
- (IBAction)buttonClicked:(id)sender;
@end

View file

@ -1,31 +0,0 @@
//
// SecondViewController.m
// BasicExample
//
// Created by Farooq Mela on 4/10/12.
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "SecondViewController.h"
#import "GANTracker.h"
@implementation SecondViewController
@synthesize button = button_;
- (void)viewDidAppear:(BOOL)animated {
NSLog(@"Second View appeared!");
[[GANTracker sharedTracker] trackPageview:@"SecondView" withError:nil];
[super viewDidAppear:animated];
}
- (IBAction)buttonClicked:(id)sender {
NSLog(@"Second View button clicked!");
[[GANTracker sharedTracker] trackEvent:@"Button"
action:@"Click"
label:@"Second Button"
value:-1
withError:nil];
}
@end

View file

@ -1,476 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">11D50b</string>
<string key="IBDocument.InterfaceBuilderVersion">823</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">132</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="263589821">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUILabel" id="483052203">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">306</int>
<string key="NSFrame">{{54, 20}, {211, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">First View</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUITextAlignment">1</int>
</object>
<object class="IBUIButton" id="437796137">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 354}, {280, 37}}</string>
<reference key="NSSuperview" ref="191373211"/>
<string key="NSReuseIdentifierKey">_NS:84</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<int key="IBUIButtonType">1</int>
<string key="IBUINormalTitle">Press Me!</string>
<object class="NSColor" key="IBUIHighlightedTitleColor" id="1046337315">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
</object>
<string key="NSFrameSize">{320, 411}</string>
<reference key="NSSuperview"/>
<reference key="IBUIBackgroundColor" ref="1046337315"/>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedTabBarMetrics" key="IBUISimulatedBottomBarMetrics"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">button</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="437796137"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">buttonClicked:</string>
<reference key="source" ref="437796137"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">10</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="483052203"/>
<reference ref="437796137"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="263589821"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="483052203"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="437796137"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>5.IBViewBoundsToFrameTransform</string>
<string>8.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>FirstViewController</string>
<string>UIResponder</string>
<string>{{774, 526}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCWAAAwzMAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">10</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">FirstViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">buttonClicked:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">buttonClicked:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">buttonClicked:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">button</string>
<string key="NS.object.0">UIButton</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">button</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">button</string>
<string key="candidateClassName">UIButton</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/FirstViewController.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="180131353">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="180131353"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">BasicExample.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">132</string>
</data>
</archive>

View file

@ -1,585 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">11D50b</string>
<string key="IBDocument.InterfaceBuilderVersion">823</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">132</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="106"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="841351856">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="532797962">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUICustomObject" id="664661524">
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIWindow" id="380026005">
<nil key="NSNextResponder"/>
<int key="NSvFlags">1316</int>
<object class="NSPSMatrix" key="NSFrameMatrix"/>
<string key="NSFrameSize">{320, 480}</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIResizesToFullScreen">YES</bool>
</object>
<object class="IBUITabBarController" id="1034742383">
<object class="IBUISimulatedTabBarMetrics" key="IBUISimulatedBottomBarMetrics"/>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">1</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIHorizontal">NO</bool>
<object class="IBUIViewController" key="IBUISelectedViewController" id="268481961">
<object class="IBUITabBarItem" key="IBUITabBarItem" id="807309489">
<string key="IBUITitle">Second</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<reference key="IBUITabBar"/>
</object>
<reference key="IBUIParentViewController" ref="1034742383"/>
<string key="IBUINibName">SecondView</string>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">1</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIHorizontal">NO</bool>
</object>
<object class="NSMutableArray" key="IBUIViewControllers">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIViewController" id="1024858337">
<object class="IBUITabBarItem" key="IBUITabBarItem" id="765670903">
<string key="IBUITitle">First</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<reference key="IBUITabBar"/>
</object>
<reference key="IBUIParentViewController" ref="1034742383"/>
<string key="IBUINibName">FirstView</string>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">1</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIHorizontal">NO</bool>
</object>
<reference ref="268481961"/>
</object>
<object class="IBUITabBar" key="IBUITabBar" id="795333663">
<nil key="NSNextResponder"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{129, 330}, {163, 49}}</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="664661524"/>
<reference key="destination" ref="380026005"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="664661524"/>
</object>
<int key="connectionID">99</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">tabBarController</string>
<reference key="source" ref="664661524"/>
<reference key="destination" ref="1034742383"/>
</object>
<int key="connectionID">113</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="380026005"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="841351856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="664661524"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">106</int>
<reference key="object" ref="1034742383"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="795333663"/>
<reference ref="1024858337"/>
<reference ref="268481961"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">107</int>
<reference key="object" ref="795333663"/>
<reference key="parent" ref="1034742383"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">108</int>
<reference key="object" ref="1024858337"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="765670903"/>
</object>
<reference key="parent" ref="1034742383"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">109</int>
<reference key="object" ref="268481961"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="807309489"/>
</object>
<reference key="parent" ref="1034742383"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">110</int>
<reference key="object" ref="807309489"/>
<reference key="parent" ref="268481961"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">111</int>
<reference key="object" ref="765670903"/>
<reference key="parent" ref="1024858337"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="532797962"/>
<reference key="parent" ref="0"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>106.IBEditorWindowLastContentRect</string>
<string>106.IBPluginDependency</string>
<string>107.IBPluginDependency</string>
<string>108.CustomClassName</string>
<string>108.IBPluginDependency</string>
<string>109.CustomClassName</string>
<string>109.IBPluginDependency</string>
<string>110.IBPluginDependency</string>
<string>111.IBPluginDependency</string>
<string>2.IBAttributePlaceholdersKey</string>
<string>2.IBEditorWindowLastContentRect</string>
<string>2.IBPluginDependency</string>
<string>3.CustomClassName</string>
<string>3.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIApplication</string>
<string>UIResponder</string>
<string>{{1323, 526}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>FirstViewController</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>SecondViewController</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableDictionary">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<string>{{229, 373}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>BasicExampleAppDelegate</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">124</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">BasicExampleAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>tabBarController</string>
<string>window</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UITabBarController</string>
<string>UIWindow</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>tabBarController</string>
<string>window</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">tabBarController</string>
<string key="candidateClassName">UITabBarController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">window</string>
<string key="candidateClassName">UIWindow</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/BasicExampleAppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">FirstViewController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/FirstViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">SecondViewController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/SecondViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIWindow</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="533197847">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIApplication</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIBarItem</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="533197847"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITabBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITabBarController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="232217318">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITabBarItem</string>
<string key="superclassName">UIBarItem</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<reference key="sourceIdentifier" ref="232217318"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIWindow</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">BasicExample.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">132</string>
</data>
</archive>

View file

@ -1,476 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">11D50b</string>
<string key="IBDocument.InterfaceBuilderVersion">823</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">132</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="263589821">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUILabel" id="483052203">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">306</int>
<string key="NSFrame">{{54, 20}, {211, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Second View</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUITextAlignment">1</int>
</object>
<object class="IBUIButton" id="969672781">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 354}, {280, 37}}</string>
<reference key="NSSuperview" ref="191373211"/>
<string key="NSReuseIdentifierKey">_NS:84</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<int key="IBUIButtonType">1</int>
<string key="IBUINormalTitle">Press Me Too!</string>
<object class="NSColor" key="IBUIHighlightedTitleColor" id="258752913">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
</object>
<string key="NSFrameSize">{320, 411}</string>
<reference key="NSSuperview"/>
<reference key="IBUIBackgroundColor" ref="258752913"/>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedTabBarMetrics" key="IBUISimulatedBottomBarMetrics"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">button</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="969672781"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">buttonClicked:</string>
<reference key="source" ref="969672781"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">10</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="483052203"/>
<reference ref="969672781"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="263589821"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="483052203"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="969672781"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>5.IBViewBoundsToFrameTransform</string>
<string>8.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>SecondViewController</string>
<string>UIResponder</string>
<string>{{377, 376}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCWAAAwzMAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">10</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">SecondViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">buttonClicked:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">buttonClicked:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">buttonClicked:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">button</string>
<string key="NS.object.0">UIButton</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">button</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">button</string>
<string key="candidateClassName">UIButton</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/SecondViewController.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="180131353">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="180131353"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">BasicExample.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">132</string>
</data>
</archive>

View file

@ -1,15 +0,0 @@
//
// main.m
// Google Analytics iOS SDK.
//
// Copyright 2009 Google Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

View file

@ -0,0 +1,23 @@
//
// AppDelegate.h
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GAI.h"
@class RootViewController;
@class NavController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property(nonatomic, retain) UIWindow *window;
@property(nonatomic, retain) NavController *navController;
@property(nonatomic, retain) RootViewController *viewController;
@property(nonatomic, retain) id<GAITracker> tracker;
@property(nonatomic, retain) NSDictionary *images;
@end

View file

@ -0,0 +1,104 @@
//
// AppDelegate.m
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "AppDelegate.h"
#import "NavController.h"
#import "RootViewController.h"
/******* Set your tracking ID here *******/
static NSString *const kTrackingId = @"UA-TRACKING-ID";
@interface AppDelegate ()
- (NSDictionary *)loadImages;
@end
@implementation AppDelegate
@synthesize window = window_;
@synthesize navController = navController_;
@synthesize viewController = viewController_;
@synthesize tracker = tracker_;
@synthesize images = images_;
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.images = [self loadImages];
// Initialize Google Analytics with a 120-second dispatch interval. There is a
// tradeoff between battery usage and timely dispatch.
[GAI sharedInstance].debug = YES;
[GAI sharedInstance].dispatchInterval = 120;
[GAI sharedInstance].trackUncaughtExceptions = YES;
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kTrackingId];
self.window =
[[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]
autorelease];
// Override point for customization after application launch.
self.viewController =
[[[RootViewController alloc] initWithNibName:@"RootViewController"
bundle:nil] autorelease];
self.navController =
[[[NavController alloc] initWithRootViewController:self.viewController]
autorelease];
self.navController.delegate = self.navController;
self.viewController.navController = self.navController;
self.window.rootViewController = self.navController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
[tracker_ release];
[viewController_ release];
[navController_ release];
[window_ release];
[super dealloc];
}
- (NSDictionary *)loadImages {
NSArray *contents = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg"
inDirectory:nil];
if (!contents) {
NSLog(@"Failed to load directory contents");
return nil;
}
NSMutableDictionary *images = [NSMutableDictionary dictionaryWithCapacity:0];
for (NSString *file in contents) {
NSArray *components = [[file lastPathComponent]
componentsSeparatedByString:@"-"];
if (components.count == 0) {
NSLog(@"Filename doesn't contain dash: %@", file);
continue;
}
UIImage *image = [UIImage imageWithContentsOfFile:file];
if (!image) {
NSLog(@"Failed to load file: %@", file);
continue;
}
NSString *prefix = [components objectAtIndex:0];
NSMutableArray *categoryImages = [images objectForKey:prefix];
if (!categoryImages) {
categoryImages = [NSMutableArray arrayWithCapacity:0];
[images setObject:categoryImages
forKey:prefix];
}
[categoryImages addObject:image];
}
for (NSString *cat in [images allKeys]) {
NSArray *array = [images objectForKey:cat];
NSLog(@"Category %@: %u image(s).", cat, array.count);
}
return images;
}
@end

View file

@ -0,0 +1,23 @@
//
// ViewController.h
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "NavController.h"
@interface CategoryViewController :
GAITrackedViewController<UITableViewDelegate, UITableViewDataSource>
@property(nonatomic, retain) NSString *category;
@property(nonatomic, retain) NavController *navController;
@property(nonatomic, retain) IBOutlet UITableView *tableView;
- (id)initWithNibName:(NSString *)nibName
bundle:(NSBundle *)nibBundle
category:(NSString *)category;
@end

View file

@ -0,0 +1,118 @@
//
// ViewController.m
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "AppDelegate.h"
#import "CategoryViewController.h"
#import "ImageViewController.h"
#import "GAI.h"
@interface CategoryViewController ()
@property(nonatomic, retain) NSMutableArray *items;
@property(nonatomic, assign) AppDelegate *delegate;
@end
@implementation CategoryViewController
@synthesize category = category_;
@synthesize navController = navController_;
@synthesize tableView = tableView_;
@synthesize items = items_;
@synthesize delegate = delegate_;
- (id)initWithNibName:(NSString *)nibName
bundle:(NSBundle *)nibBundle
category:(NSString *)category {
self = [super initWithNibName:nibName
bundle:nibBundle];
if (self) {
self.category = category;
self.trackedViewName = category;
self.title = [NSString stringWithFormat:@"Cute %@s", category];
self.delegate = [UIApplication sharedApplication].delegate;
}
return self;
}
- (void)dealloc {
[category_ release];
[navController_ release];
[tableView_ release];
[items_ release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.items = [self.delegate.images objectForKey:self.category];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
if ([[UIDevice currentDevice] userInterfaceIdiom] ==
UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
#pragma mark UITableViewDelegate methods
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:NO];
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
return;
}
NSString *title =
[NSString stringWithFormat:@"%@ %d", self.category, indexPath.row];
UIImage *image = [self.items objectAtIndex:indexPath.row];
ImageViewController *imageViewController =
[[[ImageViewController alloc] initWithNibName:nil
bundle:nil
title:title
image:image] autorelease];
[imageViewController.view addSubview:imageViewController.imageView];
[self.navController pushViewController:imageViewController animated:YES];
}
#pragma mark UITableViewDataSource methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return self.items.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
return nil;
}
static NSString *CellId = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellId] autorelease];
}
cell.textLabel.text = [NSString stringWithFormat:@"%@ %d",
self.category, indexPath.row];
cell.textLabel.font = [UIFont systemFontOfSize:14];
UIImage *image = [self.items objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d x %d",
(int)image.size.width, (int)image.size.height];
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
return cell;
}
@end

View file

@ -1,18 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1536</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2843</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<int key="IBDocument.SystemTarget">1296</int>
<string key="IBDocument.SystemVersion">11D50b</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1929</string>
<string key="NS.object.0">1181</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIView</string>
<string>IBUITableView</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -31,12 +32,31 @@
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBUIView" id="766721923">
<reference key="NSNextResponder"/>
<int key="NSvFlags">292</int>
<nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUITableView" id="481613891">
<reference key="NSNextResponder" ref="766721923"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{768, 1004}</string>
<reference key="NSSuperview" ref="766721923"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<int key="IBUISeparatorStyle">1</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">44</float>
<float key="IBUISectionHeaderHeight">22</float>
<float key="IBUISectionFooterHeight">22</float>
</object>
</array>
<string key="NSFrame">{{0, 20}, {768, 1004}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
@ -44,7 +64,6 @@
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
<int key="IBUIStatusBarStyle">2</int>
</object>
@ -61,6 +80,30 @@
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">tableView</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="481613891"/>
</object>
<int key="connectionID">8</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="481613891"/>
<reference key="destination" ref="841351856"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="481613891"/>
<reference key="destination" ref="841351856"/>
</object>
<int key="connectionID">10</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -84,40 +127,41 @@
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="766721923"/>
<array class="NSMutableArray" key="children">
<reference ref="481613891"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="481613891"/>
<reference key="parent" ref="766721923"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.CustomClassName">ContactUsViewController</string>
<string key="-1.CustomClassName">CategoryViewController</string>
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">3</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">ContactUsViewController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/ContactUsViewController.h</string>
</object>
</object>
</array>
<int key="maxID">10</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<real value="1296" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<bool key="IBDocument.UseAutolayout">YES</bool>
<string key="IBCocoaTouchPluginVersion">1929</string>
<string key="IBCocoaTouchPluginVersion">1181</string>
</data>
</archive>

View file

@ -1,18 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1536</int>
<string key="IBDocument.SystemVersion">12A269</string>
<string key="IBDocument.InterfaceBuilderVersion">2835</string>
<string key="IBDocument.AppKitVersion">1187</string>
<string key="IBDocument.HIToolboxVersion">624.00</string>
<int key="IBDocument.SystemTarget">1296</int>
<string key="IBDocument.SystemVersion">11D50b</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1919</string>
<string key="NS.object.0">1181</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIView</string>
<string>IBUITableView</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -26,42 +27,47 @@
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<object class="IBProxyObject" id="843779117">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<object class="IBUIView" id="774585933">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{0, 20}, {320, 548}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUITableView" id="183585393">
<reference key="NSNextResponder" ref="774585933"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="774585933"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<int key="IBUISeparatorStyle">1</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">44</float>
<float key="IBUISectionHeaderHeight">22</float>
<float key="IBUISectionFooterHeight">22</float>
</object>
</array>
<string key="NSFrame">{{0, 20}, {320, 460}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="183585393"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC43NQA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics">
<string key="IBUISimulatedSizeMetricsClass">IBUIScreenMetrics</string>
<object class="NSMutableDictionary" key="IBUINormalizedOrientationToSizeMap">
<bool key="EncodedWithXMLCoder">YES</bool>
<array key="dict.sortedKeys">
<integer value="1"/>
<integer value="3"/>
</array>
<array key="dict.values">
<string>{320, 568}</string>
<string>{568, 320}</string>
</array>
</object>
<string key="IBUITargetRuntime">IBCocoaTouchFramework</string>
<string key="IBUIDisplayName">Retina 4 Full Screen</string>
<int key="IBUIType">2</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
@ -71,9 +77,33 @@
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
<reference key="destination" ref="774585933"/>
</object>
<int key="connectionID">3</int>
<int key="connectionID">7</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">tableView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="183585393"/>
</object>
<int key="connectionID">11</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="183585393"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">12</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="183585393"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">13</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
@ -84,11 +114,6 @@
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
@ -97,41 +122,47 @@
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="object" ref="843779117"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="774585933"/>
<array class="NSMutableArray" key="children">
<reference ref="183585393"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="183585393"/>
<reference key="parent" ref="774585933"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.CustomClassName">UpgradeViewController</string>
<string key="-1.CustomClassName">CategoryViewController</string>
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">3</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">UpgradeViewController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UpgradeViewController.h</string>
</object>
</object>
</array>
<int key="maxID">29</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<real value="1296" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<bool key="IBDocument.UseAutolayout">YES</bool>
<string key="IBCocoaTouchPluginVersion">1919</string>
<string key="IBCocoaTouchPluginVersion">1181</string>
</data>
</archive>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.google.analytics.example.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View file

@ -0,0 +1,10 @@
#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif

View file

@ -0,0 +1,402 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
113B6EE8153E1F0B003CAC38 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6EE7153E1F0B003CAC38 /* UIKit.framework */; };
113B6EEA153E1F0B003CAC38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6EE9153E1F0B003CAC38 /* Foundation.framework */; };
113B6F10153E1F99003CAC38 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F03153E1F99003CAC38 /* AppDelegate.m */; };
113B6F11153E1F99003CAC38 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F04153E1F99003CAC38 /* main.m */; };
113B6F12153E1F99003CAC38 /* NavController.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F06153E1F99003CAC38 /* NavController.m */; };
113B6F13153E1F99003CAC38 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F08153E1F99003CAC38 /* RootViewController.m */; };
113B6F14153E1F99003CAC38 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F09153E1F99003CAC38 /* RootViewController.xib */; };
113B6F15153E1F99003CAC38 /* CategoryViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F0A153E1F99003CAC38 /* CategoryViewController_iPad.xib */; };
113B6F16153E1F99003CAC38 /* CategoryViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */; };
113B6F2B153E208D003CAC38 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6F2A153E208D003CAC38 /* CoreData.framework */; };
115686561593CE6A00A5D031 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 115686551593CE6A00A5D031 /* SystemConfiguration.framework */; };
11BC54011577E1F000E7D657 /* libGoogleAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11BC53FF1577E1E000E7D657 /* libGoogleAnalytics.a */; };
11FCCC1F1561834700949704 /* CategoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11FCCC1C1561834700949704 /* CategoryViewController.m */; };
11FCCC201561834700949704 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11FCCC1E1561834700949704 /* ImageViewController.m */; };
11FCCC34156189A600949704 /* Bunny-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC22156189A600949704 /* Bunny-1.jpg */; };
11FCCC35156189A600949704 /* Bunny-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC23156189A600949704 /* Bunny-2.jpg */; };
11FCCC36156189A600949704 /* Bunny-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC24156189A600949704 /* Bunny-3.jpg */; };
11FCCC37156189A600949704 /* Cat-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC25156189A600949704 /* Cat-1.jpg */; };
11FCCC38156189A600949704 /* Cat-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC26156189A600949704 /* Cat-2.jpg */; };
11FCCC39156189A600949704 /* Cat-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC27156189A600949704 /* Cat-3.jpg */; };
11FCCC3A156189A600949704 /* Cat-4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC28156189A600949704 /* Cat-4.jpg */; };
11FCCC3B156189A600949704 /* Lion-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC29156189A600949704 /* Lion-1.jpg */; };
11FCCC3C156189A600949704 /* Lion-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2A156189A600949704 /* Lion-2.jpg */; };
11FCCC3D156189A600949704 /* Lion-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2B156189A600949704 /* Lion-3.jpg */; };
11FCCC3E156189A600949704 /* Lion-4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2C156189A600949704 /* Lion-4.jpg */; };
11FCCC3F156189A600949704 /* Monkey-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2D156189A600949704 /* Monkey-1.jpg */; };
11FCCC40156189A600949704 /* Monkey-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2E156189A600949704 /* Monkey-2.jpg */; };
11FCCC41156189A600949704 /* Monkey-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2F156189A600949704 /* Monkey-3.jpg */; };
11FCCC42156189A600949704 /* Monkey-4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC30156189A600949704 /* Monkey-4.jpg */; };
11FCCC43156189A600949704 /* Monkey-5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC31156189A600949704 /* Monkey-5.jpg */; };
11FCCC44156189A600949704 /* Tiger-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC32156189A600949704 /* Tiger-1.jpg */; };
11FCCC45156189A600949704 /* Tiger-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC33156189A600949704 /* Tiger-2.jpg */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
113B6EE3153E1F0B003CAC38 /* CuteAnimals.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CuteAnimals.app; sourceTree = BUILT_PRODUCTS_DIR; };
113B6EE7153E1F0B003CAC38 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
113B6EE9153E1F0B003CAC38 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
113B6EEF153E1F0B003CAC38 /* CuteAnimals-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CuteAnimals-Info.plist"; sourceTree = "<group>"; };
113B6EF5153E1F0B003CAC38 /* CuteAnimals-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CuteAnimals-Prefix.pch"; sourceTree = "<group>"; };
113B6F02153E1F99003CAC38 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = SOURCE_ROOT; };
113B6F03153E1F99003CAC38 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; };
113B6F04153E1F99003CAC38 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = SOURCE_ROOT; };
113B6F05153E1F99003CAC38 /* NavController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavController.h; sourceTree = SOURCE_ROOT; };
113B6F06153E1F99003CAC38 /* NavController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NavController.m; sourceTree = SOURCE_ROOT; };
113B6F07153E1F99003CAC38 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = SOURCE_ROOT; };
113B6F08153E1F99003CAC38 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = SOURCE_ROOT; };
113B6F09153E1F99003CAC38 /* RootViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = SOURCE_ROOT; };
113B6F0A153E1F99003CAC38 /* CategoryViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoryViewController_iPad.xib; sourceTree = SOURCE_ROOT; };
113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoryViewController_iPhone.xib; sourceTree = SOURCE_ROOT; };
113B6F2A153E208D003CAC38 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
115686551593CE6A00A5D031 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
11BC53FF1577E1E000E7D657 /* libGoogleAnalytics.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAnalytics.a; path = ../../Library/libGoogleAnalytics.a; sourceTree = "<group>"; };
11BC54021577E24400E7D657 /* GAI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAI.h; path = ../../Library/GAI.h; sourceTree = "<group>"; };
11BC54031577E24500E7D657 /* GAITrackedViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITrackedViewController.h; path = ../../Library/GAITrackedViewController.h; sourceTree = "<group>"; };
11BC54041577E24500E7D657 /* GAITracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITracker.h; path = ../../Library/GAITracker.h; sourceTree = "<group>"; };
11BC54051577E24500E7D657 /* GAITransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITransaction.h; path = ../../Library/GAITransaction.h; sourceTree = "<group>"; };
11BC54061577E24500E7D657 /* GAITransactionItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITransactionItem.h; path = ../../Library/GAITransactionItem.h; sourceTree = "<group>"; };
11FCCC1B1561834700949704 /* CategoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CategoryViewController.h; sourceTree = SOURCE_ROOT; };
11FCCC1C1561834700949704 /* CategoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CategoryViewController.m; sourceTree = SOURCE_ROOT; };
11FCCC1D1561834700949704 /* ImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageViewController.h; sourceTree = SOURCE_ROOT; };
11FCCC1E1561834700949704 /* ImageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageViewController.m; sourceTree = SOURCE_ROOT; };
11FCCC22156189A600949704 /* Bunny-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Bunny-1.jpg"; path = "Images/Bunny-1.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC23156189A600949704 /* Bunny-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Bunny-2.jpg"; path = "Images/Bunny-2.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC24156189A600949704 /* Bunny-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Bunny-3.jpg"; path = "Images/Bunny-3.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC25156189A600949704 /* Cat-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-1.jpg"; path = "Images/Cat-1.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC26156189A600949704 /* Cat-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-2.jpg"; path = "Images/Cat-2.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC27156189A600949704 /* Cat-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-3.jpg"; path = "Images/Cat-3.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC28156189A600949704 /* Cat-4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-4.jpg"; path = "Images/Cat-4.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC29156189A600949704 /* Lion-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-1.jpg"; path = "Images/Lion-1.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC2A156189A600949704 /* Lion-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-2.jpg"; path = "Images/Lion-2.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC2B156189A600949704 /* Lion-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-3.jpg"; path = "Images/Lion-3.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC2C156189A600949704 /* Lion-4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-4.jpg"; path = "Images/Lion-4.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC2D156189A600949704 /* Monkey-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-1.jpg"; path = "Images/Monkey-1.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC2E156189A600949704 /* Monkey-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-2.jpg"; path = "Images/Monkey-2.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC2F156189A600949704 /* Monkey-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-3.jpg"; path = "Images/Monkey-3.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC30156189A600949704 /* Monkey-4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-4.jpg"; path = "Images/Monkey-4.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC31156189A600949704 /* Monkey-5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-5.jpg"; path = "Images/Monkey-5.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC32156189A600949704 /* Tiger-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Tiger-1.jpg"; path = "Images/Tiger-1.jpg"; sourceTree = SOURCE_ROOT; };
11FCCC33156189A600949704 /* Tiger-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Tiger-2.jpg"; path = "Images/Tiger-2.jpg"; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
113B6EE0153E1F0B003CAC38 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
115686561593CE6A00A5D031 /* SystemConfiguration.framework in Frameworks */,
113B6F2B153E208D003CAC38 /* CoreData.framework in Frameworks */,
113B6EE8153E1F0B003CAC38 /* UIKit.framework in Frameworks */,
113B6EEA153E1F0B003CAC38 /* Foundation.framework in Frameworks */,
11BC54011577E1F000E7D657 /* libGoogleAnalytics.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
113B6ED8153E1F0B003CAC38 = {
isa = PBXGroup;
children = (
113B6EED153E1F0B003CAC38 /* CuteAnimals */,
113B6EE6153E1F0B003CAC38 /* Frameworks */,
113B6EE4153E1F0B003CAC38 /* Products */,
);
sourceTree = "<group>";
};
113B6EE4153E1F0B003CAC38 /* Products */ = {
isa = PBXGroup;
children = (
113B6EE3153E1F0B003CAC38 /* CuteAnimals.app */,
);
name = Products;
sourceTree = "<group>";
};
113B6EE6153E1F0B003CAC38 /* Frameworks */ = {
isa = PBXGroup;
children = (
115686551593CE6A00A5D031 /* SystemConfiguration.framework */,
113B6F2A153E208D003CAC38 /* CoreData.framework */,
113B6EE7153E1F0B003CAC38 /* UIKit.framework */,
113B6EE9153E1F0B003CAC38 /* Foundation.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
113B6EED153E1F0B003CAC38 /* CuteAnimals */ = {
isa = PBXGroup;
children = (
113B6F1E153E1FAD003CAC38 /* Google Analytics Library */,
113B6F02153E1F99003CAC38 /* AppDelegate.h */,
113B6F03153E1F99003CAC38 /* AppDelegate.m */,
11FCCC1B1561834700949704 /* CategoryViewController.h */,
11FCCC1C1561834700949704 /* CategoryViewController.m */,
11FCCC1D1561834700949704 /* ImageViewController.h */,
11FCCC1E1561834700949704 /* ImageViewController.m */,
113B6F04153E1F99003CAC38 /* main.m */,
113B6F05153E1F99003CAC38 /* NavController.h */,
113B6F06153E1F99003CAC38 /* NavController.m */,
113B6F07153E1F99003CAC38 /* RootViewController.h */,
113B6F08153E1F99003CAC38 /* RootViewController.m */,
113B6F0A153E1F99003CAC38 /* CategoryViewController_iPad.xib */,
113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */,
113B6F09153E1F99003CAC38 /* RootViewController.xib */,
113B6EEE153E1F0B003CAC38 /* Supporting Files */,
);
name = CuteAnimals;
path = .;
sourceTree = "<group>";
};
113B6EEE153E1F0B003CAC38 /* Supporting Files */ = {
isa = PBXGroup;
children = (
11FCCC211561899800949704 /* Images */,
113B6EEF153E1F0B003CAC38 /* CuteAnimals-Info.plist */,
113B6EF5153E1F0B003CAC38 /* CuteAnimals-Prefix.pch */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
113B6F1E153E1FAD003CAC38 /* Google Analytics Library */ = {
isa = PBXGroup;
children = (
11BC54021577E24400E7D657 /* GAI.h */,
11BC54031577E24500E7D657 /* GAITrackedViewController.h */,
11BC54041577E24500E7D657 /* GAITracker.h */,
11BC54051577E24500E7D657 /* GAITransaction.h */,
11BC54061577E24500E7D657 /* GAITransactionItem.h */,
11BC53FF1577E1E000E7D657 /* libGoogleAnalytics.a */,
);
name = "Google Analytics Library";
sourceTree = "<group>";
};
11FCCC211561899800949704 /* Images */ = {
isa = PBXGroup;
children = (
11FCCC22156189A600949704 /* Bunny-1.jpg */,
11FCCC23156189A600949704 /* Bunny-2.jpg */,
11FCCC24156189A600949704 /* Bunny-3.jpg */,
11FCCC25156189A600949704 /* Cat-1.jpg */,
11FCCC26156189A600949704 /* Cat-2.jpg */,
11FCCC27156189A600949704 /* Cat-3.jpg */,
11FCCC28156189A600949704 /* Cat-4.jpg */,
11FCCC29156189A600949704 /* Lion-1.jpg */,
11FCCC2A156189A600949704 /* Lion-2.jpg */,
11FCCC2B156189A600949704 /* Lion-3.jpg */,
11FCCC2C156189A600949704 /* Lion-4.jpg */,
11FCCC2D156189A600949704 /* Monkey-1.jpg */,
11FCCC2E156189A600949704 /* Monkey-2.jpg */,
11FCCC2F156189A600949704 /* Monkey-3.jpg */,
11FCCC30156189A600949704 /* Monkey-4.jpg */,
11FCCC31156189A600949704 /* Monkey-5.jpg */,
11FCCC32156189A600949704 /* Tiger-1.jpg */,
11FCCC33156189A600949704 /* Tiger-2.jpg */,
);
name = Images;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
113B6EE2153E1F0B003CAC38 /* CuteAnimals */ = {
isa = PBXNativeTarget;
buildConfigurationList = 113B6EFB153E1F0B003CAC38 /* Build configuration list for PBXNativeTarget "CuteAnimals" */;
buildPhases = (
113B6EDF153E1F0B003CAC38 /* Sources */,
113B6EE0153E1F0B003CAC38 /* Frameworks */,
113B6EE1153E1F0B003CAC38 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = CuteAnimals;
productName = CuteAnimals;
productReference = 113B6EE3153E1F0B003CAC38 /* CuteAnimals.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
113B6EDA153E1F0B003CAC38 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0430;
};
buildConfigurationList = 113B6EDD153E1F0B003CAC38 /* Build configuration list for PBXProject "CuteAnimals" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 113B6ED8153E1F0B003CAC38;
productRefGroup = 113B6EE4153E1F0B003CAC38 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
113B6EE2153E1F0B003CAC38 /* CuteAnimals */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
113B6EE1153E1F0B003CAC38 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
113B6F14153E1F99003CAC38 /* RootViewController.xib in Resources */,
113B6F15153E1F99003CAC38 /* CategoryViewController_iPad.xib in Resources */,
113B6F16153E1F99003CAC38 /* CategoryViewController_iPhone.xib in Resources */,
11FCCC34156189A600949704 /* Bunny-1.jpg in Resources */,
11FCCC35156189A600949704 /* Bunny-2.jpg in Resources */,
11FCCC36156189A600949704 /* Bunny-3.jpg in Resources */,
11FCCC37156189A600949704 /* Cat-1.jpg in Resources */,
11FCCC38156189A600949704 /* Cat-2.jpg in Resources */,
11FCCC39156189A600949704 /* Cat-3.jpg in Resources */,
11FCCC3A156189A600949704 /* Cat-4.jpg in Resources */,
11FCCC3B156189A600949704 /* Lion-1.jpg in Resources */,
11FCCC3C156189A600949704 /* Lion-2.jpg in Resources */,
11FCCC3D156189A600949704 /* Lion-3.jpg in Resources */,
11FCCC3E156189A600949704 /* Lion-4.jpg in Resources */,
11FCCC3F156189A600949704 /* Monkey-1.jpg in Resources */,
11FCCC40156189A600949704 /* Monkey-2.jpg in Resources */,
11FCCC41156189A600949704 /* Monkey-3.jpg in Resources */,
11FCCC42156189A600949704 /* Monkey-4.jpg in Resources */,
11FCCC43156189A600949704 /* Monkey-5.jpg in Resources */,
11FCCC44156189A600949704 /* Tiger-1.jpg in Resources */,
11FCCC45156189A600949704 /* Tiger-2.jpg in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
113B6EDF153E1F0B003CAC38 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
113B6F10153E1F99003CAC38 /* AppDelegate.m in Sources */,
113B6F11153E1F99003CAC38 /* main.m in Sources */,
113B6F12153E1F99003CAC38 /* NavController.m in Sources */,
113B6F13153E1F99003CAC38 /* RootViewController.m in Sources */,
11FCCC1F1561834700949704 /* CategoryViewController.m in Sources */,
11FCCC201561834700949704 /* ImageViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
113B6EF9153E1F0B003CAC38 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
113B6EFA153E1F0B003CAC38 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
113B6EFC153E1F0B003CAC38 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "CuteAnimals-Prefix.pch";
INFOPLIST_FILE = "CuteAnimals-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/../../Library\"",
);
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
113B6EFD153E1F0B003CAC38 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "CuteAnimals-Prefix.pch";
INFOPLIST_FILE = "CuteAnimals-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/../../Library\"",
);
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
113B6EDD153E1F0B003CAC38 /* Build configuration list for PBXProject "CuteAnimals" */ = {
isa = XCConfigurationList;
buildConfigurations = (
113B6EF9153E1F0B003CAC38 /* Debug */,
113B6EFA153E1F0B003CAC38 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
113B6EFB153E1F0B003CAC38 /* Build configuration list for PBXNativeTarget "CuteAnimals" */ = {
isa = XCConfigurationList;
buildConfigurations = (
113B6EFC153E1F0B003CAC38 /* Debug */,
113B6EFD153E1F0B003CAC38 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 113B6EDA153E1F0B003CAC38 /* Project object */;
}

View file

@ -0,0 +1,23 @@
//
// ImageViewController.h
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GAI.h"
#import "NavController.h"
@interface ImageViewController : GAITrackedViewController
@property(nonatomic, retain) NavController *navController;
@property(nonatomic, retain) UIImageView *imageView;
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
title:(NSString *)title
image:(UIImage *)image;
@end

View file

@ -0,0 +1,44 @@
//
// ImageViewController.m
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "ImageViewController.h"
#import "AppDelegate.h"
@implementation ImageViewController
@synthesize imageView = imageView_;
@synthesize navController = navController_;
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
title:(NSString *)title
image:(UIImage *)image {
self = [super initWithNibName:nibNameOrNil
bundle:nibBundleOrNil];
if (self) {
self.title = self.trackedViewName = title;
self.imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
self.imageView.userInteractionEnabled = YES;
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
}
return self;
}
- (void)dealloc {
[imageView_ release];
[navController_ release];
[super dealloc];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View file

@ -0,0 +1,13 @@
//
// NavController.h
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface NavController :
UINavigationController<UINavigationControllerDelegate>
@end

View file

@ -0,0 +1,31 @@
//
// NavController.m
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "NavController.h"
@implementation NavController
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
#pragma mark UINavigationControllerDelegate methods
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated {
// NSLog(@"navigationController:willShowViewController:animated:");
}
- (void)navigationController:(UINavigationController *)navigationController
didShowViewController:(UIViewController *)viewController
animated:(BOOL)animated {
// NSLog(@"navigationController:didShowViewController:animated:");
}
@end

View file

@ -0,0 +1,13 @@
IMPORTANT: For this app to work, edit AppDelegate.m and supply your tracking ID.
This example app illustrates how to easily add Google Analytics tracking to a
simple iOS application. The app delegate initializes the Google Analytics SDK,
sets the dispatch interval, enables uncaught exception tracking and the logging
of debug messages, and instantiates a tracker using the tracking ID given. Each
view controller that needs to be tracked inherits from GAITrackedViewController
and sets the 'trackedViewName' property to enable automatic view tracking with
the view name given. The app also tracks the toggling of dispatching using HTTP
and HTTPS as events by directly calling the GAITracker event tracking method.
All images are from the public domain. They were downloaded from
http://public-domain-image.com

View file

@ -0,0 +1,16 @@
//
// RootViewController.h
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface RootViewController :
GAITrackedViewController<UITableViewDelegate, UITableViewDataSource>
@property(nonatomic, retain) NavController *navController;
@property(nonatomic, retain) IBOutlet UITableView *tableView;
@end

View file

@ -0,0 +1,154 @@
//
// RootViewController.m
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import "AppDelegate.h"
#import "RootViewController.h"
#import "CategoryViewController.h"
#import "ImageViewController.h"
#import "GAI.h"
@interface RootViewController ()
@property(nonatomic, retain) NSArray *items;
@property(nonatomic, assign) AppDelegate *delegate;
@end
@implementation RootViewController
@synthesize tableView = tableView_;
@synthesize navController = navController_;
@synthesize items = items_;
@synthesize delegate = delegate_;
- (id)initWithNibName:(NSString *)nibName
bundle:(NSBundle *)nibBundle {
self = [super initWithNibName:nibName
bundle:nibBundle];
if (self) {
self.trackedViewName = @"root";
self.title = @"Cute Animals";
self.delegate = [UIApplication sharedApplication].delegate;
[self updateSecureButton];
}
return self;
}
- (void)dealloc {
[tableView_ release];
[navController_ release];
[items_ release];
[super dealloc];
}
- (void)updateSecureButton {
if ([GAI sharedInstance].defaultTracker.useHttps) {
self.navigationItem.leftBarButtonItem.title = @"HTTPS";
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;
} else {
self.navigationItem.leftBarButtonItem.title = @"HTTP";
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleBordered;
}
}
- (void)toggleSecure {
[GAI sharedInstance].defaultTracker.useHttps =
![GAI sharedInstance].defaultTracker.useHttps;
[self updateSecureButton];
[[GAI sharedInstance].defaultTracker sendEventWithCategory:@"secureDispatch"
withAction:@"toggle"
withLabel:nil
withValue:nil];
}
- (void)crash {
[NSException raise:@"There is no spoon."
format:@"Abort, retry, fail?"];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.leftBarButtonItem =
[[[UIBarButtonItem alloc]
initWithTitle:@"HTTP"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleSecure)] autorelease];
self.navigationItem.rightBarButtonItem =
[[[UIBarButtonItem alloc]
initWithTitle:@"Crash"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(crash)] autorelease];
self.items =
[[self.delegate.images allKeys]
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
[self.tableView reloadData];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
return NO;
}
#pragma mark UITableViewDelegate methods
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:NO];
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
return;
}
NSString *category = [self.items objectAtIndex:indexPath.row];
NSString *nib = ([[UIDevice currentDevice] userInterfaceIdiom] ==
UIUserInterfaceIdiomPhone) ? @"CategoryViewController_iPhone" :
@"CategoryViewController_iPad";
CategoryViewController *categoryController =
[[[CategoryViewController alloc] initWithNibName:nib
bundle:nil
category:category] autorelease];
categoryController.navController = self.navController;
[self.navController pushViewController:categoryController animated:YES];
}
#pragma mark UITableViewDataSource methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return self.items.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
return nil;
}
NSString *category = [self.items objectAtIndex:indexPath.row];
static NSString *CellId = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellId] autorelease];
}
NSString *label = [NSString stringWithFormat:@"Cute %@ Pictures!", category];
cell.textLabel.text = label;
cell.textLabel.font = [UIFont systemFontOfSize:14];
NSUInteger imageCount =
[(NSArray *)[self.delegate.images objectForKey:category] count];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%u image(s).",
imageCount];
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
return cell;
}
@end

View file

@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1296</int>
<string key="IBDocument.SystemVersion">11D50b</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1181</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIView</string>
<string>IBUITableView</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="IBProxyObject" id="841351856">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBProxyObject" id="606714003">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBUIView" id="766721923">
<reference key="NSNextResponder"/>
<int key="NSvFlags">292</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUITableView" id="302742316">
<reference key="NSNextResponder" ref="766721923"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{768, 1004}</string>
<reference key="NSSuperview" ref="766721923"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<int key="IBUISeparatorStyle">1</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">44</float>
<float key="IBUISectionHeaderHeight">22</float>
<float key="IBUISectionFooterHeight">22</float>
</object>
</array>
<string key="NSFrame">{{0, 20}, {768, 1004}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
<int key="IBUIStatusBarStyle">2</int>
</object>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="766721923"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">tableView</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="302742316"/>
</object>
<int key="connectionID">7</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="302742316"/>
<reference key="destination" ref="841351856"/>
</object>
<int key="connectionID">5</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="302742316"/>
<reference key="destination" ref="841351856"/>
</object>
<int key="connectionID">6</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="841351856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="606714003"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="766721923"/>
<array class="NSMutableArray" key="children">
<reference ref="302742316"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="302742316"/>
<reference key="parent" ref="766721923"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.CustomClassName">RootViewController</string>
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">7</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">RootViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">tableView</string>
<string key="NS.object.0">UITableView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">tableView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">tableView</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/RootViewController.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<real value="1296" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">1181</string>
</data>
</archive>

View file

@ -0,0 +1,17 @@
//
// main.m
// CuteAnimals
//
// Copyright 2012 Google, Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}

View file

@ -0,0 +1,131 @@
/*!
@header GAI.h
@abstract Google Analytics iOS SDK Header
@version 2.0
@copyright Copyright 2011 Google Inc. All rights reserved.
*/
#import <Foundation/Foundation.h>
#import "GAITracker.h"
#import "GAITrackedViewController.h"
/*! Google Analytics product string. */
extern NSString *const kGAIProduct;
/*! Google Analytics version string. */
extern NSString *const kGAIVersion;
/*!
NSError objects returned by the Google Analytics SDK may have this error domain
to indicate that the error originated in the Google Analytics SDK.
*/
extern NSString *const kGAIErrorDomain;
/*! Google Analytics error codes. */
typedef enum {
// This error code indicates that there was no error. Never used.
kGAINoError = 0,
// This error code indicates that there was a database-related error.
kGAIDatabaseError,
// This error code indicates that there was a network-related error.
kGAINetworkError,
} GAIErrorCode;
/*!
Google Analytics iOS top-level class. Provides facilities to create trackers
and set behaviorial flags.
*/
@interface GAI : NSObject
/*!
For convenience, this class exposes a default tracker instance.
This is initialized to `nil` and will be set to the first tracker that is
instantiated in trackerWithTrackingId:. It may be overridden as desired.
The GAITrackedViewController class will, by default, use this tracker instance.
*/
@property(nonatomic, assign) id<GAITracker> defaultTracker;
/*!
If true, Google Analytics debug messages will be logged with `NSLog()`. This is
useful for debugging calls to the Google Analytics SDK.
By default, this flag is set to `NO`. */
@property(nonatomic, assign) BOOL debug;
/*!
When this is true, no tracking information will be gathered; tracking calls
will effectively become no-ops. When set to true, all tracking information that
has not yet been submitted. The value of this flag will be persisted
automatically by the SDK. Developers can optionally use this flag to implement
an opt-out setting in the app to allows users to opt out of Google Analytics
tracking.
This is set to `NO` the first time the Google Analytics SDK is used on a
device, and is persisted thereafter.
*/
@property(nonatomic, assign) BOOL optOut;
/*!
If this value is negative, tracking information must be sent manually by
calling dispatch. If this value is zero, tracking information will
automatically be sent as soon as possible (usually immediately if the device
has Internet connectivity). If this value is positive, tracking information
will be automatically dispatched every dispatchInterval seconds.
When the dispatchInterval is non-zero, setting it to zero will cause any queued
tracking information to be sent immediately.
By default, this is set to `120`, which indicates tracking information should
be dispatched automatically every 120 seconds.
*/
@property(nonatomic, assign) NSTimeInterval dispatchInterval;
/*!
When set to true, the SDK will record the currently registered uncaught
exception handler, and then register an uncaught exception handler which tracks
the exceptions that occurred using defaultTracker. If defaultTracker is not
`nil`, this function will track the exception on the tracker and attempt to
dispatch any outstanding tracking information for 5 seconds. It will then call
the previously registered exception handler, if any. When set back to false,
the previously registered uncaught exception handler will be restored.
*/
@property(nonatomic, assign) BOOL trackUncaughtExceptions;
/*! Get the shared instance of the Google Analytics for iOS class. */
+ (GAI *)sharedInstance;
/*!
Create or retrieve a GAITracker implementation with the specified tracking
ID. If the tracker for the specified tracking ID does not already exist, then
it will be created and returned; otherwise, the existing tracker will be
returned. If defaultTracker is not set, it will be set to the tracker instance
returned here.
@param trackingId The tracking ID (a string that begins with "UA-"). Must not
be `nil` or empty.
@return A GAITracker associated with the specified tracking ID. The tracker
can be used to send tracking data to Google Analytics. The first time this
method is called with a particular tracking ID, the tracker for that tracking
ID will be returned, and subsequent calls with the same tracking ID will return
the same instance. It is not necessary to retain the tracker because the
tracker will be retained internally by the library.
If an error occurs or the tracker ID is not valid, this method will return
`nil`.
*/
- (id<GAITracker>)trackerWithTrackingId:(NSString *)trackingId;
/*!
Dispatches any pending tracking information.
It would be wise to call this when application is exiting to initiate the
submission of any unsubmitted tracking information. Note that this does not
have any effect on dispatchInterval, and can be used in conjuntion with
periodic dispatch. */
- (void)dispatch;
@end

View file

@ -0,0 +1,38 @@
/*!
@header GAITrackedViewController.h
@abstract Google Analytics for iOS Tracked View Controller Header
@version 2.0
@copyright Copyright 2012 Google Inc. All rights reserved.
*/
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@protocol GAITracker;
/*!
Extends UIViewController to generate Google Analytics view tracking calls
whenever the view appears; this is done by overriding the `viewDidAppear:`
method. The view name must be set for any tracking calls to be made.
By default, this will use [GAI defaultTracker] for tracking calls, but one can
override this by setting the tracker property.
*/
@interface GAITrackedViewController : UIViewController {
@private
id<GAITracker> tracker_;
NSString *trackedViewName_;
}
/*!
The tracker on which view tracking calls are be made, or `nil`, in which case
[GAI defaultTracker] will be used.
*/
@property(nonatomic, assign) id<GAITracker> tracker;
/*!
The view name, for purposes of Google Analytics view tracking. If this is
`nil`, no tracking calls will be made.
*/
@property(nonatomic, copy) NSString *trackedViewName;
@end

View file

@ -0,0 +1,441 @@
/*!
@header GAITracker.h
@abstract Google Analytics iOS SDK Tracker Header
@version 2.0
@copyright Copyright 2011 Google Inc. All rights reserved.
*/
#import <Foundation/Foundation.h>
#import "GAITransaction.h"
/*!
Google Analytics tracking interface. Obtain instances of this interface from
[GAI trackerWithTrackingId:] to track screens, events, transactions, timing,
and exceptions. The implementation of this interface is thread-safe, and no
calls are expected to block or take a long time. All network and disk activity
will take place in the background.
*/
@protocol GAITracker<NSObject>
/*!
The tracking identifier (the string that begins with "UA-") this tracker is
associated with.
This property is read-only.
*/
@property(nonatomic, copy, readonly) NSString *trackingId;
/*!
The application name associated with this tracker. By default, this property is
populated with the `CFBundleName` string from the application bundle. If you
wish to override this property, you must do so before making any tracking
calls.
*/
@property(nonatomic, copy) NSString *appName;
/*!
The application identifier associated with this tracker. This should be set to
the iTunes Connect application identifier assigned to your application. By
default, this property is `nil`. If you wish to set this property, you must do
so before making any tracking calls.
Note that this is not your app's bundle id (e.g. com.example.appname), but the
identifier used by the App Store.
*/
@property(nonatomic, copy) NSString *appId;
/*!
The application version associated with this tracker. By default, this property
is populated with the `CFBundleShortVersionString` string from the application
bundle. If you wish to override this property, you must do so before making any
tracking calls.
*/
@property(nonatomic, copy) NSString *appVersion;
/*!
Tracking data collected while this is true will be anonymized by the Google
Analytics servers by zeroing out some of the least significant bits of the
IP address.
In the case of IPv4 addresses, the last octet is set to zero. For
IPv6 addresses, the last 10 octets are set to zero, although this is subject to
change in the future.
By default, this flag is false.
*/
@property(nonatomic, assign) BOOL anonymize;
/*!
Tracking information collected while this is true will be submitted to Google
Analytics using HTTPS connection(s); otherwise, HTTP will be used. Note that
there may be additional overhead when sending data using HTTPS in terms of
processing costs and/or battery consumption.
By default, this flag is true.
*/
@property(nonatomic, assign) BOOL useHttps;
/*!
The sampleRate parameter controls the probability that the visitor will be
sampled. By default, sampleRate is 100, which signifies no sampling. sampleRate
may be set to any value between 0 and 100, inclusive. A value of 90 means 90%
of visitors should be sampled (10% of visitors to be sampled out).
When a visitor is not sampled, no data is collected by Google Analytics for iOS
library about that visitor's activity. If your application is subject to heavy
traffic spikes, you may wish to adjust the sample rate to ensure uninterrupted
report tracking. Sampling in Google Analytics occurs consistently across unique
visitors, ensuring integrity in trending and reporting even when sampling is
enabled, because unique visitors remain included or excluded from the sample,
as set from the initiation of sampling.
*/
@property(nonatomic, assign) double sampleRate;
/*!
The client ID for the tracker.
This is a persistent unique identifier generated the first time the library is
called and persisted unchanged thereafter. It is used to identify the client
across multiple application sessions.
*/
@property(nonatomic, copy, readonly) NSString *clientId;
/*!
The current screen set for this tracker.
Calling trackView: will also update this property before it dispatches tracking
information to Google Analytics. However, if you wish to update the current
screen without sending any tracking information, set this property directly.
The updated screen will be reflected in subsequent tracking information.
*/
@property(nonatomic, copy) NSString *appScreen;
/*!
The referrer URL for this tracker. Changing this value causes it to be sent
with the next dispatch of tracking information.
*/
@property(nonatomic, copy) NSString *referrerUrl;
/*!
The campaign URL for this tracker. This is not directly propagated to Google
Analytics, but if there are campaign parameter(s), either manually or
auto-tagged, present in this URL, the SDK will include those parameters in the
next dispatch of tracking information. Google Analytics treats tracking
information with differing campaign information as part of separate sessions.
For more information on auto-tagging, see
http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55590
For more information on manual tagging, see
http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55518
*/
@property(nonatomic, copy) NSString *campaignUrl;
/*!
If true, indicates the start of a new session. Note that when a tracker is
first instantiated, this is initialized to true. To prevent this default
behavior, set this to `NO` when the tracker is first obtained.
By itself, setting this does not send any data. If this is true, when the next
tracking call is made, a parameter will be added to the resulting tracking
information indicating that it is the start of a session, and this flag will be
cleared.
*/
@property(nonatomic, assign) BOOL sessionStart;
/*!
If non-negative, indicates how long, in seconds, the application must
transition to the inactive or background state for before the tracker will
automatically indicate the start of a new session when the app becomes active
again by setting sessionStart to true. For example, if this is set to 30
seconds, and the user receives a phone call that lasts for 45 seconds while
using the app, upon returning to the app, the sessionStart parameter will be
set to true. If the phone call instead lasted 10 seconds, sessionStart will not
be modified.
To disable automatic session tracking, set this to a negative value. To
indicate the start of a session anytime the app becomes inactive or
backgrounded, set this to zero.
By default, this is 30 seconds.
*/
@property(nonatomic, assign) NSTimeInterval sessionTimeout;
/*!
Track that the current screen (as set in appScreen) was displayed. If appScreen
has not been set, this will not generate any tracking information.
If [GAI optOut] is true, this will not generate any tracking information.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed or appScreen is not set).
*/
- (BOOL)sendView;
/*!
This method is deprecated. See sendView.
*/
- (BOOL)trackView;
/*!
Track that the specified view or screen was displayed. This call sets
the appScreen property and generates tracking information to be sent to Google
Analytics.
If [GAI optOut] is true, this will not generate any tracking information.
@param screen The name of the screen. Must not be `nil`.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendView:(NSString *)screen;
/*!
This method is deprecated. See sendView.
*/
- (BOOL)trackView:(NSString *)screen;
/*!
Track an event.
If [GAI optOut] is true, this will not generate any tracking information.
@param category The event category, or `nil` if none.
@param action The event action, or `nil` if none.
@param label The event label, or `nil` if none.
@param value The event value, to be interpreted as a 64-bit signed integer, or
`nil` if none.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendEventWithCategory:(NSString *)category
withAction:(NSString *)action
withLabel:(NSString *)label
withValue:(NSNumber *)value;
/*!
This method is deprecated. See sendEventWithCategory.
*/
- (BOOL)trackEventWithCategory:(NSString *)category
withAction:(NSString *)action
withLabel:(NSString *)label
withValue:(NSNumber *)value;
/*!
Track a transaction.
If [GAI optOut] is true, this will not generate any tracking information.
@param transaction The GAITransaction object.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendTransaction:(GAITransaction *)transaction;
/*!
This method is deprecated. see sendTransaction.
*/
- (BOOL)trackTransaction:(GAITransaction *)transaction;
/*!
Track an exception.
If [GAI optOut] is true, this will not generate any tracking information.
@param isFatal A boolean indicating whether the exception is fatal.
@param format A format string that will be used to create the exception
description.
@param ... An optional list of arguments to be substituted using the format
string.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendException:(BOOL)isFatal
withDescription:(NSString *)format, ...;
/*!
This method is deprecated. See sendException.
*/
- (BOOL)trackException:(BOOL)isFatal
withDescription:(NSString *)format, ...;
/*! Convenience method for tracking an NSException that passes the exception
name to trackException:withDescription:.
If [GAI optOut] is true, this will not generate any tracking information.
@param isFatal A boolean indicating whether the exception is fatal.
@param exception The NSException exception object.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendException:(BOOL)isFatal
withNSException:(NSException *)exception;
/*!
This method is deprecated. See sendException.
*/
- (BOOL)trackException:(BOOL)isFatal
withNSException:(NSException *)exception;
/*! Convenience method for tracking an NSError that passes the domain, code, and
description to trackException:withDescription:.
If [GAI optOut] is true, this will not generate any tracking information.
@param isFatal A boolean indicating whether the exception is fatal.
@param error The NSError error object.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendException:(BOOL)isFatal
withNSError:(NSError *)error;
/*!
This method is deprecated. See sendException.
*/
- (BOOL)trackException:(BOOL)isFatal
withNSError:(NSError *)error;
/*!
Track user timing.
If [GAI optOut] is true, this will not generate any tracking information.
@param category A string representing a timing category.
@param time A timing value.
@param name A string representing a timing name, or `nil` if none.
@param label A string representing a timing variable label, or `nil` if none.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendTimingWithCategory:(NSString *)category
withValue:(NSTimeInterval)time
withName:(NSString *)name
withLabel:(NSString *)label;
/*!
This method is deprecated. See sendTimingWithCategory.
*/
- (BOOL)trackTimingWithCategory:(NSString *)category
withValue:(NSTimeInterval)time
withName:(NSString *)name
withLabel:(NSString *)label;
/*!
Track social action.
If [GAI optOut] is true, this will not generate any tracking information.
@param network A string representing social network. Must not be nil.
@param action A string representing a social action. Must not be nil.
@param target A string representing the target. May be nil.
@return `YES` if the tracking information was queued for dispatch, or `NO` if
there was an error (e.g. the tracker was closed).
*/
- (BOOL)sendSocial:(NSString *)network
withAction:(NSString *)action
withTarget:(NSString *)target;
/*!
This method is deprecated. See sendSocial.
*/
- (BOOL)trackSocial:(NSString *)network
withAction:(NSString *)action
withTarget:(NSString *)target;
/*!
Set a tracking parameter.
@param parameterName The parameter name.
@param value The value to set for the parameter. If this is `nil`, the
value for the parameter will be cleared.
@returns `YES` if the parameter was set to the given value, or `NO` if there
was an error (e.g. unknown parameter).
*/
- (BOOL)set:(NSString *)parameterName
value:(NSString *)value;
/*!
Get a tracking parameter.
@param parameterName The parameter name.
@returns The parameter value, or `nil` if no value for the given parameter is
set.
*/
- (NSString *)get:(NSString *)parameterName;
/*!
Queue tracking information with the given parameter values.
@param trackType The type of tracking information, e.g., @"appview".
@param parameters A map from parameter names to parameter values which will be
set just for this piece of tracking information.
@return `YES` if the tracking information was queued for submission, or `NO`
if an error occurred (e.g. bad track type).
*/
- (BOOL)send:(NSString *)trackType
params:(NSDictionary *)parameters;
/*!
Set a custom dimension value, to be sent at the next tracking call.
@param index The index at which to set the dimension. Must be positive.
@param dimension The dimension value, or `nil` if the dimension at the given
index is to be cleared.
@return `YES` on success, or `NO` if an error occurred.
*/
- (BOOL)setCustom:(NSInteger)index
dimension:(NSString *)dimension;
/*!
Set a custom metric value, to be sent at the next tracking call.
@param index The index at which to set the metric. Must be positive.
@param metric The metric value, which will be interpreted as a signed 64-bit
integer, or `nil` if the metric at the given index is to be cleared.
@return `YES` on success, or `NO` if an error occurred.
*/
- (BOOL)setCustom:(NSInteger)index
metric:(NSNumber *)metric;
/*!
Close the tracker. This will mark it as closed and remove it from the list of
trackers accessible through [GAI trackerWithTrackingId:], thus decrementing its
reference count (and causing it to be dealloced unless it has been retained by
the application). Once this method has been called, it is an error to call any
of the tracking methods, and they will not result in the generation of any
tracking information to be submitted to Google Analytics.
*/
- (void)close;
@end

View file

@ -0,0 +1,78 @@
/*!
@header GAITransaction.h
@abstract Google Analytics iOS SDK Transaction Header
@version 2.0
@copyright Copyright 2011 Google Inc. All rights reserved.
*/
#import <Foundation/Foundation.h>
#import "GAITransactionItem.h"
/*! A simple class to hold transaction data. */
@interface GAITransaction : NSObject
/*! Transaction ID. */
@property(nonatomic, copy, readonly) NSString *transactionId;
/*! Transaction affiliation. */
@property(nonatomic, copy, readonly) NSString *affiliation;
/*! Revenue in micros (millionths of a currency unit). Note that this must be
set manually because it is not updated when items are added. */
@property(nonatomic, assign) int64_t revenueMicros;
/*! Tax in micros (millionths of a currency unit). Note that this must be set
* manually because it is not updated when items are added. */
@property(nonatomic, assign) int64_t taxMicros;
/*! Shipping cost in micros (millionths of a currency unit). Note that
this must be set manually because it is not updated when items are added. */
@property(nonatomic, assign) int64_t shippingMicros;
/*! Transaction items, as an immutable array. */
@property(nonatomic, readonly) NSArray *items;
/*!
Create and initialize a transaction.
@param transactionId The transaction ID. Required (must not be `nil`).
@param affiliation The transaction affiliation. May be `nil`.
@return A GAITransaction object with the specified transaction ID and
affiliation.
*/
+ (GAITransaction *)transactionWithId:(NSString *)transactionId
withAffiliation:(NSString *)affiliation;
/*!
Add an item to the transaction. If an item with the same SKU already
exists in the transaction, that item will be replaced with this one.
@param item The GAITransactionItem to add to the transaction.
*/
- (void)addItem:(GAITransactionItem *)item;
/*!
Add an item to the transaction. If an item with the same SKU already
exists in the transaction, that item will be replaced with this one.
@param productCode The item product code; must not be `nil` or empty.
@param productName The item product name; may be `nil`.
@param productCategory The item product category; may be `nil`.
@param priceMicros The item price, in micros (millionths of a currency unit).
@param quantity The item quantity, as an NSInteger.
@return The newly initialized item.
*/
- (void)addItemWithCode:(NSString *)productCode
name:(NSString *)productName
category:(NSString *)productCategory
priceMicros:(int64_t)priceMicros
quantity:(NSInteger)quantity;
@end

View file

@ -0,0 +1,49 @@
/*!
@header GAITransactionItem.h
@abstract Google Analytics iOS SDK Transaction Item Header
@version 2.0
@copyright Copyright 2011 Google Inc. All rights reserved.
*/
#import <Foundation/Foundation.h>
/*! A simple class to hold transaction item data. */
@interface GAITransactionItem : NSObject
/*! The item code, as a string. */
@property(nonatomic, copy, readonly) NSString *productCode;
/*! The item name. */
@property(nonatomic, copy) NSString *productName;
/*! The item variation. */
@property(nonatomic, copy) NSString *productCategory;
/*! The item price in micros (millionths of a currency unit). */
@property(nonatomic, assign) int64_t priceMicros;
/*! The item quantity. */
@property(nonatomic, assign) NSInteger quantity;
/*!
Create and initialize an item.
@param productCode The item product code; must not be `nil` or empty.
@param productName The item product name; must not be `nil` or empty.
@param productCategory The item product category; may be `nil`.
@param priceMicros The item price, in micros (millionths of a currency unit).
@param quantity The item quantity, as an NSInteger.
@return The newly initialized item.
*/
+ (GAITransactionItem *)itemWithCode:(NSString *)productCode
name:(NSString *)productName
category:(NSString *)productCategory
priceMicros:(int64_t)priceMicros
quantity:(NSInteger)quantity;
@end

View file

@ -1,437 +0,0 @@
/*!
@header GANTracker.h
Google Analytics iOS SDK
@version 1.5
@copyright Copyright 2009 Google Inc. All rights reserved.
*/
/*!
@enum GANErrorCode
Error codes which may be returned by various GANTracker methods.
*/
typedef enum {
// This error code is returned when input to a method is incorrect.
kGANTrackerInvalidInputError = 0xbade7a9,
// This error code is returned when the number of hits generated in a session
// exceeds the limit (currently 500).
kGANTrackerEventsPerSessionLimitError = 0xbad5704e,
// This error code is returned if the method called requires that the tracker
// be started.
kGANTrackerNotStartedError = 0xbada55,
// This error code is returned if the method call resulted in some sort of
// database error.
kGANTrackerDatabaseError = 0xbadbaddb
} GANErrorCode;
/*!
@var kGANTrackerErrorDomain
@abstract The error domain for errors originating in the Google Analytics iOS
SDK. All errors generated by the Google Analytics iOS SDK will belong to
this domain.
*/
extern NSString* const kGANTrackerErrorDomain;
/*!
@var kGANMaxCustomVariables
@abstract The maximum number of custom variables the SDK can support. Custom
variable indices must be between 1 and this value, inclusive.
@discussion Standard accounts support up to 5 custom variables, while premium
accounts support up to 50 custom variables. The SDK will accept custom
variable indices higher than 5, but unless the account is a premium account,
those custom variables will not be processed.
*/
extern const NSUInteger kGANMaxCustomVariables;
/*!
@var kGANMaxCustomVariableLength
@abstract The maximum length of a custom variable name or value. The length of
custom variable names and values must not exceed this value.
*/
extern const NSUInteger kGANMaxCustomVariableLength;
/*!
@enum GANCVScope
@abstract Custom variable scope enumeration.
@discussion Possible values are visitor scope, session scope, and page scope.
Visitor and session scoped custom variables are stored for later use. Session
and page scoped custom variables are attached to each event. Visitor scoped
custom variables are sent only on the first event for a session.
*/
typedef enum {
kGANVisitorScope = 1U,
kGANSessionScope = 2U,
kGANPageScope = 3U
} GANCVScope;
@class GANTrackerPrivate;
@protocol GANTrackerDelegate;
/*!
@class GANTracker
@abstract Google Analytics tracking class. Tracks pageviews, events, and
transactions by storing them in a persistent store and dispatching them in the
background to Google Analytics.
*/
@interface GANTracker : NSObject {
@private
GANTrackerPrivate *private_;
BOOL debug_;
BOOL dryRun_;
BOOL anonymizeIp_;
NSUInteger sampleRate_;
NSString *private1_;
NSString *private2_;
NSString *destinationHost_;
NSUInteger destinationPort_;
NSString *destinationPathPrefix_;
}
/*!
@property debug
@abstract If true, debug messages will be written to the log.
This is useful for debugging calls to the Google Analytics SDK.
By default, this flag is false.
*/
@property(nonatomic, readwrite) BOOL debug;
/*!
@property dryRun
@abstract If true, hits will not be sent to Google Analytics.
This is useful for debugging calls to the Google Analytics SDK.
By default, this flag is false.
*/
@property(nonatomic, readwrite) BOOL dryRun;
/*!
@property anonymizeIp
@abstract If true, Google Analytics will anonymize the IP address information
collected by zeroing out some of the least significant bits of the address. By
default, this flag is false.
@discussion In the case of IPv4 addresses, the last octet is set to zero. For
IPv6 addresses, the last 10 octets are set to zero, although this is subject to
change in the future.
*/
@property(nonatomic, readwrite) BOOL anonymizeIp;
/*!
@property sampleRate
@abstract The sampleRate parameter controls the probability that the visitor
will be sampled. By default, sampleRate is 100, which signifies no sampling.
sampleRate may be set to any integer value between 0 and 100, inclusive. A
value of 90 requests 90% of visitors to be sampled (10% of visitors to be
sampled out).
@discussion When a visitor is not sampled, no data is submitted to Google
Analytics about that visitor's activity. If your application is subject to
heavy traffic spikes, you may wish to adjust the sample rate to ensure
uninterrupted report tracking. Sampling in Google Analytics occurs consistently
across unique visitors, ensuring integrity in trending and reporting even when
sampling is enabled, because unique visitors remain included or excluded from
the sample, as set from the initiation of sampling.
*/
@property(nonatomic, readwrite) NSUInteger sampleRate;
/*!
@abstract Returns the singleton instance of GANTracker.
*/
+ (GANTracker *)sharedTracker;
/*!
@abstract Start the Google Analytics tracker.
@param accountID The Google Analytics account ID (the string that begins with
"UA-").
@param dispatchPeriod The desired automatic dispatch period (in seconds).
The dispatcher will check for events to dispatch every |dispatchPeriod|
seconds. If a non-positive (e.g. 0 or -1) dispatch period is given, automatic
dispatch will not be enabled, and the application will need to dispatch events
manually using @link dispatch @/link or @link dispatchSynchronous: @/link.
@param delegate An optional delegate which will get notified when hits get
dispatched.
*/
- (void)startTrackerWithAccountID:(NSString *)accountID
dispatchPeriod:(NSInteger)dispatchPeriod
delegate:(id<GANTrackerDelegate>)delegate;
/*!
@abstract Stop the tracker.
*/
- (void)stopTracker;
/*!
@abstract Track a page view.
@return YES on success or NO on error.
@param pageURL The URL of the pageview to track. A forward-slash ('/')
character will be prepended to this string if it doesn't start with one.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)trackPageview:(NSString *)pageURL
withError:(NSError **)error;
/*!
@abstract Track an event view.
@return YES on success or NO on error.
@param category The event category. This parameter is required to be non-nil.
@param action The event action. This parameter is required to be non-nil.
@param label The event label. This parameter may be nil to indicate no label.
@param value The event value. This parameter may be -1 to indicate no value.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)trackEvent:(NSString *)category
action:(NSString *)action
label:(NSString *)label
value:(NSInteger)value
withError:(NSError **)error;
/*!
@abstract Set a custom variable. If there is an existing custom variable at the
specified index, it will be overwritten.
@return YES on success or NO on error.
@param index The variable index. This must be between 1 and
@link kGANMaxCustomVariables @/link, inclusive.
@param name The custom variable name. The length of this string must not exceed
@link kGANMaxCustomVariableLength @/link.
@param value The custom variable value. The length of this string must not
exceed @link kGANMaxCustomVariableLength @/link.
@param scope The custom variable scope (see @link GANCVScope @/link for
discussion of what this value means).
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)setCustomVariableAtIndex:(NSUInteger)index
name:(NSString *)name
value:(NSString *)value
scope:(GANCVScope)scope
withError:(NSError **)error;
/*!
@abstract Set a page scoped custom variable. The variable set is included with
the next even only. If there is an existing custom variable at the specified
index, it will be overwritten by this one.
@return YES on success or NO on error.
@param index The variable index. This must be between 1 and
@link kGANMaxCustomVariables @/link, inclusive.
@param name The custom variable name. The length of this string must not exceed
@link kGANMaxCustomVariableLength @/link.
@param value The custom variable value. The length of this string must not
exceed @link kGANMaxCustomVariableLength @/link.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)setCustomVariableAtIndex:(NSUInteger)index
name:(NSString *)name
value:(NSString *)value
withError:(NSError **)error;
/*!
@abstract Get the value of the custom variable at the index requested.
@return Returns the value of the custom variable at the specified index.
Returns nil no variable is present at that index or the index is out of range.
@param index The variable index. This must be between 1 and
@link kGANMaxCustomVariables @/link, inclusive.
*/
- (NSString *)getVisitorCustomVarAtIndex:(NSUInteger)index;
/*!
@abstract Create an e-commerce transaction.
@discussion All transactions will be queued for dispatch when
@link trackTransactions: @/link is called.
@return YES on success or NO on error.
@param orderID The transaction order ID. If a transaction with this order id is
already present in the ECommerce buffer, it will be overwritten by this one.
@param totalPrice The transaction total price.
@param storeName The transaction store name.
@param totalTax Total tax incurred in the transaction, if any.
@param shippingCost Shipping costs incurred in the transaction, if any.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)addTransaction:(NSString *)orderID
totalPrice:(double)totalPrice
storeName:(NSString *)storeName
totalTax:(double)totalTax
shippingCost:(double)shippingCost
withError:(NSError **)error;
/*!
@abstract Add an item to an e-commerce transaction.
@discussion Adds the specified item to the transaction with the specified order
ID. All transactions will be queued for dispatch when
@link trackTransactions: @/link is called.
@return YES on success or NO on error.
@param orderID The order ID of the transaction to which the item will be added.
If no transaction with this order ID exists, one will be created.
@param itemSKU The item SKU. If an item in the transaction with the same SKU
exists, it will replaced with this one.
@param itemPrice The item price.
@param itemCount The item quantity.
@param itemName The item name.
@param itemCategory The item category.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)addItem:(NSString *)orderID
itemSKU:(NSString *)itemSKU
itemPrice:(double)itemPrice
itemCount:(double)itemCount
itemName:(NSString *)itemName
itemCategory:(NSString *)itemCategory
withError:(NSError **)error;
/*!
@abstract Queue pending e-commerce transactions for dispatch.
@return YES on success or NO on error.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)trackTransactions:(NSError **)error;
/*!
@abstract Remove pending e-commerce transactions.
@return YES on success or NO on error.
@param error A location to record the error if one occurs. You may pass 'nil'
here.
*/
- (BOOL)clearTransactions:(NSError **)error;
/*!
@abstract Set the referrer and create a new session associated with the
specified referrer.
@return YES on success or NO on error.
@param referrer A string specifying the campaign with which to associate this
session. All events generated after setting the referrer will have the
campaign attached.
@param error A location to record the error if one occurs. You may pass nil
here.
*/
- (BOOL)setReferrer:(NSString *)referrer
withError:(NSError **)error;
/*!
@abstract Dispatch pageviews, events, or transactions to Google Analytics.
@return YES if there were pending pageviews, events, or transactions that
resulted in a new dispatch; NO otherwise.
*/
- (BOOL)dispatch;
/*!
@abstract Synchronously dispatch pageviews, events, or transactions to Google
Analytics.
@discussion This routine will block until all information has been submitted,
or the specified timeout has elapsed.
@param timeout The maximum time, in seconds, this method can spend submitting
information to Google Analytics before it must return.
@return YES if there were pending pageviews, events, or transactions that
resulted in a new dispatch and all were successfully submitted to Google
Analytics; NO otherwise.
*/
- (BOOL)dispatchSynchronous:(NSTimeInterval)timeout;
@end
/*!
@protocol GANTrackerDelegate
@abstract Google Analytics tracker delegate. This delegate gets notified when
the tracker dispatches a hit successfully, or when there was an error
dispatching the hit. All delegate methods are optional.
*/
@protocol GANTrackerDelegate <NSObject>
@optional
/*!
@abstract This method is invoked when a hit has been successfully submitted to
Google Analytics.
@param hitString The string representation of the hit, as sent to Google
Analytics.
*/
- (void)hitDispatched:(NSString *)hitString;
/*!
@abstract This method is invoked when a dispatch to Google Analytics is
completed.
@discussion Note: failed hits will be retried on the next dispatch.
@param tracker The tracker object for which the dispatch was made.
@param hitsDispatched The number of hits successfully submitted to Google
Analytics.
@param hitsFailedDispatch The number of hits that could not be submitted.
*/
- (void)trackerDispatchDidComplete:(GANTracker *)tracker
eventsDispatched:(NSUInteger)hitsDispatched
eventsFailedDispatch:(NSUInteger)hitsFailedDispatch;
@end

View file

@ -1,22 +1,33 @@
Google Analytics iOS SDK version 1.5.1
Google Analytics iOS SDK version 2.0 Beta 4
Copyright 2009 - 2012 Google, Inc. All rights reserved.
Copyright 2009 - 2013 Google, Inc. All rights reserved.
================================================================================
DESCRIPTION:
This SDK enables developers to add Google Analytics tracking to applications.
The tracker code is packaged as a single header file and static library. Drag
the GANTracker.h and libGoogleAnalytics.a files into your XCode project. Include
the CFNetwork framework in your project and link against libsqlite3.dylib.
See the Examples/BasicExample application for an illustration of how to use
page tracking and event tracking.
This SDK provides developers with the capability to use Google Analytics
to track iOS application usage.
You will need an Analytics Account ID to properly initialize the GANTracker
object. We recommend you create a new website profile, by clicking "+ Add new
profile" from the main Overview page in Google Analytics (google.com/analytics).
Select "new domain" in the wizard, and choose a descriptive but fake URL for
your app. The Web Property/Account ID will take the form "UA-0000000-1".
The SDK is packaged as a set of header files and a static library. Get started
by adding the header files from the Library subdirectory (GAI.h, GAITracker.h,
GAITransaction.h, and GAITransactionItem.h) and libGoogleAnalytics.a to your
XCode project. You must also include the CoreData framework in your project.
To use a version of the library with debug symbols intact, link against
libGoogleAnalytics_debug.a instead of libGoogleAnalytics.a. This may be useful
if you experience exceptions or crashes originating in the SDK.
See the Examples/CuteAnimals application for an illustration of how to use
automatic screen tracking, event tracking, and uncaught exception tracking.
You will need a Google Analytics tracking ID to track application usage with the
SDK. It is recommended to create an account for each set of applications that
are to be tracked together, and to use that account's tracking ID in each
application. To create a new tracking ID, go to your admin panel in Google
Analytics and select "New Account". Under "What would you like to track?",
choose "App" and complete the remainder of the form. When you are finished,
click "Get Tracking ID". The tracking ID will be of the form "UA-" followed by a
sequence of numbers and dashes.
You must indicate to your users, either in the app itself or in your terms of
service, that you reserve the right to anonymously track and report a user's
@ -24,58 +35,41 @@ activity inside of your app.
Implementation Details:
Pageviews and events are stored in an SQLite database and dispatched to the
Google Analytics servers either periodically at a rate determined by the
developer or manually. A battery efficient strategy may be to "piggy-back"
a dispatch just after the application needs to perform network activity.
Dispatching happens by pipelining HTTP requests down a single connection
(one request per pageview/event with a maximum of 30 per dispatch).
Tracking information is stored in an SQLite database and dispatched to the
Google Analytics servers in a manner set by the developer: periodically at an
interval determined by the developer, immediately when tracking calls are made,
or manually. A battery efficient strategy may be to initiate a dispatch when the
application needs to access the network. Tracking information is dispatched
using HTTP or HTTPS requests to a Google Analytics server.
================================================================================
BUILD REQUIREMENTS:
Mac OS X v10.6+, XCode 3.2.3+ (iOS 4.0 SDK), iPhone OS 3.0+
Mac OS X 10.6 or later.
XCode with iOS SDK 4.0 or later (iOS SDK 5.0 or later is required to build the
included example application).
================================================================================
RUNTIME REQUIREMENTS:
Mac OS X v10.6+, iPhone OS 3.0+
iOS 4.0 or later.
Your app must link the following frameworks:
CoreData.framework
SystemConfiguration.framework
================================================================================
PACKAGING LIST:
Library/
GANTracker.h
Library/ (contains header and library files to compile and link with)
GAI.h
GAITrackedViewController.h
GAITracker.h
GAITransaction.h
GAITransactionItem.h
libGoogleAnalytics.a
Examples/
BasicExample/
BasicExample-Info.plist
BasicExample.xcodeproj/
project.pbxproj
BasicExample_Prefix.pch
Classes/
BasicExampleAppDelegate.h
BasicExampleAppDelegate.m
FirstViewController.h
FirstViewController.m
SecondViewController.h
SecondViewController.m
FirstView.xib
MainWindow.xib
main.m
SecondView.xib
Documentation/
Classes/
GANTracker/
index.html
toc.html
index.html
Protocols/
GANTrackerDelegate/
index.html
toc.html
toc.html
libGoogleAnalytics_debug.a
Examples/ (contains an example tracked application)
Documentation/ (contains documentation)
================================================================================

@ -0,0 +1 @@
Subproject commit 4dd32330f1619cd48ab85e8476b8e3396ea3dc87

View file

@ -1,5 +1,5 @@
//
// AccountOpenPhoto
// Account
// Photo
//
// Created by Patrick Santana on 06/03/12.
@ -18,9 +18,7 @@
// limitations under the License.
//
#import <Foundation/Foundation.h>
@interface AccountOpenPhoto : NSObject
@interface Account : NSObject
@property (nonatomic, strong) NSString *email;
@property (nonatomic, strong) NSString *host;

View file

@ -1,27 +1,15 @@
//
// AccountOpenPhoto
// Photo
// Account
// Trovebox
//
// Created by Patrick Santana on 06/03/12.
// Copyright 2012 Photo
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Copyright (c) 2013 Trovebox. All rights reserved.
//
#import "AccountOpenPhoto.h"
#import "Account.h"
@implementation AccountOpenPhoto
@implementation Account
@synthesize email=_email, host=_host, clientToken=_clientToken, clientSecret=_clientSecret, userToken=_userToken, userSecret=_userSecret;
@ -29,7 +17,8 @@
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setValue:@"OK" forKey:kAuthenticationValid];
[standardUserDefaults setValue:self.host forKey:kOpenPhotoServer];
[standardUserDefaults setValue:self.host forKey:kTroveboxServer];
[standardUserDefaults setValue:self.email forKey:kTroveboxEmailUser];
[standardUserDefaults setValue:self.userToken forKey:kAuthenticationOAuthToken];
[standardUserDefaults setValue:self.userSecret forKey:kAuthenticationOAuthSecret];
[standardUserDefaults setValue:self.clientToken forKey:kAuthenticationConsumerKey];

View file

@ -156,7 +156,7 @@
// call the method and get the details
@try {
// get factory for OpenPhoto Service
OpenPhotoService *service = [OpenPhotoServiceFactory createOpenPhotoService];
WebService *service = [[WebService alloc] init];
NSArray *result = [service loadAlbums:25];
dispatch_async(dispatch_get_main_queue(), ^{

View file

@ -37,10 +37,16 @@
#import "HomeTableViewController.h"
#import "JobUploaderController.h"
#import "ELCImagePickerController.h"
#import "GANTracker.h"
#import "LoginViewController.h"
#import "AuthenticationService.h"
#import "GAI.h"
//for payment
#import <StoreKit/StoreKit.h>
#import "TroveboxPaymentTransactionObserver.h"
#import "TroveboxSubscription.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate,FBRequestDelegate,
FBDialogDelegate,
@ -80,12 +86,16 @@ FBSessionDelegate>{
// for facebook single sign in
@property (nonatomic, strong) Facebook *facebook;
//google analytics
@property(nonatomic, strong) id<GAITracker> tracker;
// navigation
@property (strong, nonatomic) UIViewController *centerController;
@property (strong, nonatomic) UIViewController *menuController;
@property (strong, nonatomic) ELCImagePickerController *syncController;
@property (nonatomic, strong) UIViewController *centerController;
@property (nonatomic, strong) UIViewController *menuController;
@property (nonatomic, strong) ELCImagePickerController *syncController;
// get the user connect
- (NSString *) user;
- (NSString *) userHost;
- (NSString *) userEmail;
@end

View file

@ -43,21 +43,28 @@ static const NSInteger kGANDispatchPeriodSec = 10;
@synthesize menuController = _menuController;
@synthesize syncController = _syncController;
@synthesize tracker = tracker_;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef GOOGLE_ANALYTICS_ENABLED
// Google Analytics SDK
[[GANTracker sharedTracker] startTrackerWithAccountID:kPrivateGoogleAnalytics
dispatchPeriod:kGANDispatchPeriodSec
delegate:nil];
// Initialize Google Analytics
[GAI sharedInstance].trackUncaughtExceptions = NO;
[GAI sharedInstance].dispatchInterval = 20;
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kPrivateGoogleAnalytics];
#endif
// in development phase we use the UID of user
#ifdef DEVELOPMENT_ENABLED
[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];
[TestFlight takeOff:kPrivateTestFlightId];
#endif
#ifdef TEST_FLIGHT_ENABLED
// to start the TestFlight SDK
[TestFlight takeOff:@"407f45aed7c5bc2fc88cb567078edb1f_MjMyNTUyMDExLTA5LTEyIDEyOjEyOjU3Ljc1Nzg5MA"];
#endif
[self prepareConnectionInformation];
@ -116,8 +123,6 @@ static const NSInteger kGANDispatchPeriodSec = 10;
navController.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;
[deckController presentModalViewController:navController animated:YES];
}
//register to share data.
@ -129,6 +134,22 @@ static const NSInteger kGANDispatchPeriodSec = 10;
// start the job
[[JobUploaderController getController] start];
// Let the device know we want to receive push notifications
// [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
// (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
// remove badges
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
// Payment setup
if ([SKPaymentQueue canMakePayments]) {
TroveboxSubscription *subscription = [TroveboxSubscription createTroveboxSubscription];
[subscription requestProUpgradeProductData];
TroveboxPaymentTransactionObserver *observer = [[TroveboxPaymentTransactionObserver alloc] init];
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
}
return YES;
}
@ -521,18 +542,36 @@ static const NSInteger kGANDispatchPeriodSec = 10;
}
}
- (NSString *) user
- (NSString *) userHost
{
return [[NSUserDefaults standardUserDefaults] valueForKey:kOpenPhotoServer];
return [[NSUserDefaults standardUserDefaults] valueForKey:kTroveboxServer];
}
- (NSString *) userEmail
{
return [[NSUserDefaults standardUserDefaults] valueForKey:kTroveboxEmailUser];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#ifdef GOOGLE_ANALYTICS_ENABLED
[[GANTracker sharedTracker] stopTracker];
#endif
/////////////
/// FOR NOTIFICATION
////////////
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@"Failed to get token, error: %@", error);
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
}

View file

@ -21,11 +21,9 @@
#import "OAMutableURLRequest.h"
#import "OAToken.h"
#import "OAServiceTicket.h"
#import "OpenPhotoService.h"
#import "OpenPhotoServiceFactory.h"
#import "OADataFetcher.h"
#import "AccountOpenPhoto.h"
#import "PrivateAccountLoginService.h"
#import "Account.h"
#import "PrivateAuthenticationService.h"
#import "Timeline+Photo.h"
#import "Synced+Photo.h"
@ -44,10 +42,12 @@
- (void) startOAuthProcedure:(NSURL*) url;
// for login
+ (AccountOpenPhoto*) createNewAccountWithUser:(NSString*) user email:(NSString*) email;
+ (AccountOpenPhoto*) createNewAccountWithUser:(NSString*) user email:(NSString*) email password:(NSString*) pwd;
+ (Account *) createNewAccountWithUser:(NSString*) user email:(NSString*) email;
+ (Account *) createNewAccountWithUser:(NSString*) user email:(NSString*) email password:(NSString*) pwd;
+ (Account *) signIn:(NSString*) email password:(NSString*) pwd;
+ (BOOL) checkUserFacebookEmail:(NSString*) email;
+ (AccountOpenPhoto*) signIn:(NSString*) email password:(NSString*) pwd;
+ (NSString *) recoverPassword:(NSString *) email;
+ (void) sendToServerReceipt:(NSData *) receipt forUser:(NSString *) email;
@end

View file

@ -23,7 +23,7 @@
-(NSURL*) getOAuthInitialUrl{
// get the url
NSString *server = [[NSUserDefaults standardUserDefaults] valueForKey:kOpenPhotoServer];
NSString *server = [[NSUserDefaults standardUserDefaults] valueForKey:kTroveboxServer];
NSString *path = @"/v1/oauth/authorize?oauth_callback=photo-test://&name=";
NSString *appName = [[UIDevice currentDevice] name];
NSString *fullPath = [[NSString alloc]initWithFormat:@"%@%@%@",server,path,[appName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ] ;
@ -43,7 +43,7 @@
-(NSURL*) getOAuthAccessUrl{
// get the url
NSString* server = [[NSUserDefaults standardUserDefaults] valueForKey:kOpenPhotoServer];
NSString* server = [[NSUserDefaults standardUserDefaults] valueForKey:kTroveboxServer];
NSString* url = [[NSString alloc]initWithFormat:@"%@%@",server,@"/v1/oauth/token/access"] ;
#ifdef DEVELOPMENT_ENABLED
@ -55,7 +55,7 @@
-(NSURL*) getOAuthTestUrl{
// get the url
NSString* server = [[NSUserDefaults standardUserDefaults] valueForKey:kOpenPhotoServer];
NSString* server = [[NSUserDefaults standardUserDefaults] valueForKey:kTroveboxServer];
NSString* url = [[NSString alloc]initWithFormat:@"%@%@",server,@"/v1/oauth/test"] ;
#ifdef DEVELOPMENT_ENABLED
@ -94,7 +94,7 @@
dispatch_async(removeCredentials, ^{
@try {
OpenPhotoService *service = [OpenPhotoServiceFactory createOpenPhotoService];
WebService *service = [[WebService alloc] init];
[service removeCredentialsForKey:consumerKey];
}@catch (NSException *exception) {
NSLog(@"Error to remove the credentials from server %@",exception.description);
@ -114,13 +114,18 @@
[standardUserDefaults setValue:nil forKey:kHomeScreenPicturesTimestamp];
[standardUserDefaults setValue:nil forKey:kHomeScreenPictures];
// reset profile information
[standardUserDefaults setValue:nil forKey:kTroveboxEmailUser];
[standardUserDefaults setValue:nil forKey:kProfileLatestUpdateDate];
[standardUserDefaults setValue:nil forKey:kProfileAccountType];
[standardUserDefaults setValue:nil forKey:kProfileLimitRemaining];
// synchronize the keys
[standardUserDefaults synchronize];
// reset core data
[Timeline deleteAllTimelineInManagedObjectContext:[SharedAppDelegate managedObjectContext]];
[Synced deleteAllSyncedPhotosInManagedObjectContext:[SharedAppDelegate managedObjectContext]];
[[SharedAppDelegate managedObjectContext] reset];
NSError *saveError = nil;
if (![[SharedAppDelegate managedObjectContext] save:&saveError]){
@ -269,30 +274,35 @@
[alert showAlertOnTop];
}
+ (AccountOpenPhoto*) createNewAccountWithUser:(NSString*) user email:(NSString*) email
+ (Account *) createNewAccountWithUser:(NSString*) user email:(NSString*) email
{
return [PrivateAccountLoginService createNewAccountWithUser:user email:email];
return [PrivateAuthenticationService createNewAccountWithUser:user email:email];
}
+ (AccountOpenPhoto*) createNewAccountWithUser:(NSString*) user email:(NSString*) email password:(NSString*) pwd
+ (Account *) createNewAccountWithUser:(NSString*) user email:(NSString*) email password:(NSString*) pwd
{
return [PrivateAccountLoginService createNewAccountWithUser:user email:email password:pwd];
return [PrivateAuthenticationService createNewAccountWithUser:user email:email password:pwd];
}
+ (Account *) signIn:(NSString*) email password:(NSString*) pwd
{
return [PrivateAuthenticationService signIn:email password:pwd];
}
+ (BOOL) checkUserFacebookEmail:(NSString*) email
{
return [PrivateAccountLoginService checkUserFacebookEmail:email];
}
+ (AccountOpenPhoto*) signIn:(NSString*) email password:(NSString*) pwd
{
return [PrivateAccountLoginService signIn:email password:pwd];
return [PrivateAuthenticationService checkUserFacebookEmail:email];
}
+ (NSString *) recoverPassword:(NSString *) email
{
return [PrivateAccountLoginService recoverPassword:email];
return [PrivateAuthenticationService recoverPassword:email];
}
+ (void) sendToServerReceipt:(NSData *) receipt forUser:(NSString *) email
{
return [PrivateAuthenticationService sendToServerReceipt:receipt forUser:email];
}
@end

View file

@ -1,9 +1,9 @@
//
// AuthenticationViewController.h
// Photo
// Trovebox
//
// Created by Patrick Santana on 5/10/12.
// Copyright 2012 Photo
// Created by Patrick Santana on 07/09/11.
// Copyright 2013 Trovebox
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -16,13 +16,13 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import "AuthenticationService.h"
#import "WebService.h"
#import "GAI.h"
@interface AuthenticationViewController : UIViewController<UITextFieldDelegate>
@interface AuthenticationViewController : GAITrackedViewController<UITextFieldDelegate>
@property (nonatomic,weak) IBOutlet UITextField *serverURL;
@property (retain, nonatomic) IBOutlet UITextField *serverURL;
- (IBAction)login:(id)sender;
@end

View file

@ -1,9 +1,9 @@
//
// AuthenticationViewController.m
// Photo
// Trovebox
//
// Created by Patrick Santana on 5/10/12.
// Copyright 2012 Photo
// Created by Patrick Santana on 07/09/11.
// Copyright 2013 Trovebox
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -16,7 +16,6 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import "AuthenticationViewController.h"
@ -44,6 +43,24 @@
return self;
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.trackedViewName = @"Self-instance Login Screen";
}
- (void)viewDidUnload
{
[self setServerURL:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (IBAction)login:(id)sender {
#ifdef DEVELOPMENT_ENABLED
NSLog(@"Url Login %@",self.serverURL.text);
@ -51,7 +68,7 @@
// check if the user typed something
if ( self.serverURL.text != nil &&
[self.serverURL.text isEqualToString:@"username.openphoto.me"]){
[self.serverURL.text isEqualToString:@"username.trovebox.com"]){
// user should add URL
PhotoAlertView *alert = [[PhotoAlertView alloc] initWithMessage:@"Please, set the URL to the OpenPhoto Server." duration:5000];
@ -61,8 +78,7 @@
[self saveUrl:self.serverURL.text];
// to the login in the website
AuthenticationService* service = [[AuthenticationService alloc]init];
[[UIApplication sharedApplication] openURL:[service getOAuthInitialUrl]];
[[UIApplication sharedApplication] openURL:[[[AuthenticationService alloc]init] getOAuthInitialUrl]];
}
}
@ -77,9 +93,7 @@
[self saveUrl:textField.text];
// to the login
AuthenticationService* service = [[AuthenticationService alloc]init];
[[UIApplication sharedApplication] openURL:[service getOAuthInitialUrl]];
[[UIApplication sharedApplication] openURL:[[[AuthenticationService alloc]init] getOAuthInitialUrl]];
// return
[textField resignFirstResponder];
@ -95,7 +109,7 @@
if([textField respondsToSelector:@selector(selectedTextRange)]){
//iOS >=5.0
if ( [textField.text isEqualToString:@"username.openphoto.me"]){
if ( [textField.text isEqualToString:@"username.trovebox.com"]){
// get the actual range
UITextRange *selectedRange = [textField selectedTextRange];
@ -136,9 +150,9 @@
// removes form the URL if it ends with "/"
if ([[url lastPathComponent] isEqualToString:@"/"]){
[standardUserDefaults setValue:[text stringByReplacingCharactersInRange:NSMakeRange(text.length-1, 1) withString:@""] forKey:kOpenPhotoServer];
[standardUserDefaults setValue:[text stringByReplacingCharactersInRange:NSMakeRange(text.length-1, 1) withString:@""] forKey:kTroveboxServer];
}else{
[standardUserDefaults setValue:[url relativeString] forKey:kOpenPhotoServer];
[standardUserDefaults setValue:[url relativeString] forKey:kTroveboxServer];
}
[standardUserDefaults synchronize];
}
@ -152,7 +166,7 @@
if ([notification.name isEqualToString:kNotificationLoginAuthorize]){
// we don't need the screen anymore
[self dismissViewControllerAnimated:YES completion:nil];
[self dismissModalViewControllerAnimated:YES];
}
}

View file

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1536</int>
<int key="IBDocument.SystemTarget">1552</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2843</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1929</string>
<string key="NS.object.0">2083</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
@ -59,7 +59,7 @@
<object class="IBUIImageView" id="97581516">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{4, 193}, {309, 42}}</string>
<string key="NSFrame">{{18, 189}, {285, 40}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="207019938"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
@ -69,13 +69,13 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">register-input-server.png</string>
<string key="NSResourceName">login-field-background.png</string>
</object>
</object>
<object class="IBUITextField" id="207019938">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{25, 198}, {267, 31}}</string>
<string key="NSFrame">{{28, 189}, {265, 40}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="519461955"/>
<string key="NSReuseIdentifierKey">_NS:304</string>
@ -83,7 +83,7 @@
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentVerticalAlignment">0</int>
<string key="IBUIText">username.openphoto.me</string>
<string key="IBUIText">username.trovebox.com</string>
<string key="IBUIPlaceholder">url</string>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">3</int>
@ -115,7 +115,7 @@
<object class="IBUIButton" id="519461955">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{13, 234}, {295, 46}}</string>
<string key="NSFrame">{{18, 237}, {285, 40}}</string>
<reference key="NSSuperview" ref="191373211"/>
<string key="NSReuseIdentifierKey">_NS:225</string>
<bool key="IBUIOpaque">NO</bool>
@ -137,7 +137,7 @@
</object>
<object class="NSCustomResource" key="IBUINormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">register-button-login.png</string>
<string key="NSResourceName">login-login.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">2</int>
@ -273,10 +273,10 @@
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="login-field-background.png">{282, 38}</string>
<string key="login-login.png">{282, 37}</string>
<string key="register-background.png">{320, 460}</string>
<string key="register-button-login.png">{281, 36}</string>
<string key="register-input-server.png">{278, 38}</string>
</dictionary>
<string key="IBCocoaTouchPluginVersion">1929</string>
<string key="IBCocoaTouchPluginVersion">2083</string>
</data>
</archive>

View file

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1536</int>
<int key="IBDocument.SystemTarget">1552</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2843</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1929</string>
<string key="NS.object.0">2083</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIButton</string>
<string>IBUILabel</string>
<string>IBUITextView</string>
<string>IBUIImageView</string>
<string>IBUITextField</string>
<string>IBUIView</string>
</array>
<array key="IBDocument.PluginDependencies">
@ -37,49 +37,96 @@
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUILabel" id="292788658">
<object class="IBUIImageView" id="631354329">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 20}, {69, 21}}</string>
<int key="NSvFlags">301</int>
<string key="NSFrameSize">{320, 548}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="444208833"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="97581516"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
<int key="IBUIContentMode">2</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Message</string>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
<string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">register-background-568h@2x.png</string>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
</object>
<object class="IBUIImageView" id="97581516">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{18, 189}, {285, 40}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="207019938"/>
<string key="NSReuseIdentifierKey">_NS:567</string>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">4</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">login-field-background.png</string>
</object>
</object>
<object class="IBUITextField" id="207019938">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{28, 189}, {265, 40}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="519461955"/>
<string key="NSReuseIdentifierKey">_NS:304</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentVerticalAlignment">0</int>
<string key="IBUIText">username.trovebox.com</string>
<string key="IBUIPlaceholder">url</string>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace" id="412942702">
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIAdjustsFontSizeToFit">YES</bool>
<float key="IBUIMinimumFontSize">13</float>
<object class="IBUITextInputTraits" key="IBUITextInputTraits">
<int key="IBUIAutocorrectionType">1</int>
<int key="IBUIKeyboardType">3</int>
<int key="IBUIReturnKeyType">9</int>
<bool key="IBUIEnablesReturnKeyAutomatically">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<int key="IBUIClearButtonMode">3</int>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">17</double>
<double key="pointSize">13</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">17</double>
<double key="NSSize">13</double>
<int key="NSfFlags">16</int>
</object>
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
</object>
<object class="IBUIButton" id="718744844">
<object class="IBUIButton" id="519461955">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 274}, {280, 44}}</string>
<string key="NSFrame">{{18, 237}, {285, 40}}</string>
<reference key="NSSuperview" ref="191373211"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:225</string>
<bool key="IBUIOpaque">NO</bool>
<int key="IBUIContentMode">4</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<int key="IBUIButtonType">1</int>
<string key="IBUINormalTitle">Send</string>
<object class="NSColor" key="IBUIHighlightedTitleColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
@ -92,6 +139,10 @@
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUINormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">login-login.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">2</int>
<double key="pointSize">15</double>
@ -102,46 +153,15 @@
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUITextView" id="444208833">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{20, 49}, {280, 217}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="718744844"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">4</int>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText"/>
<object class="IBUITextInputTraits" key="IBUITextInputTraits">
<int key="IBUIAutocapitalizationType">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">14</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">14</double>
<int key="NSfFlags">16</int>
</object>
</object>
</array>
<string key="NSFrame">{{0, 20}, {320, 548}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="631354329"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">2</int>
</object>
<reference key="NSCustomColorSpace" ref="412942702"/>
</object>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics">
@ -174,6 +194,31 @@
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">serverURL</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="207019938"/>
</object>
<int key="connectionID">14</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="207019938"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">15</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">login:</string>
<reference key="source" ref="519461955"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">21</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -187,9 +232,10 @@
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<array class="NSMutableArray" key="children">
<reference ref="292788658"/>
<reference ref="444208833"/>
<reference ref="718744844"/>
<reference ref="519461955"/>
<reference ref="97581516"/>
<reference ref="207019938"/>
<reference ref="631354329"/>
</array>
<reference key="parent" ref="0"/>
</object>
@ -205,43 +251,95 @@
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="292788658"/>
<int key="objectID">4</int>
<reference key="object" ref="631354329"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">24</int>
<reference key="object" ref="718744844"/>
<int key="objectID">12</int>
<reference key="object" ref="207019938"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">25</int>
<reference key="object" ref="444208833"/>
<int key="objectID">19</int>
<reference key="object" ref="519461955"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="97581516"/>
<reference key="parent" ref="191373211"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.CustomClassName">ContactUsViewController</string>
<string key="-1.CustomClassName">AuthenticationViewController</string>
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="25.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">26</int>
<int key="maxID">24</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">AuthenticationViewController</string>
<string key="superclassName">GAITrackedViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">login:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">login:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">login:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">serverURL</string>
<string key="NS.object.0">UITextField</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">serverURL</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">serverURL</string>
<string key="candidateClassName">UITextField</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/AuthenticationViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">GAITrackedViewController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/GAITrackedViewController.h</string>
</object>
</object>
</array>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">1929</string>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="login-field-background.png">{282, 38}</string>
<string key="login-login.png">{282, 37}</string>
<string key="register-background-568h@2x.png">{640, 1136}</string>
</dictionary>
<string key="IBCocoaTouchPluginVersion">2083</string>
</data>
</archive>

View file

@ -1,9 +1,9 @@
//
// Constants.h
// Photo
// Trovebox
//
// Created by Patrick Santana on 05/09/11.
// Copyright 2012 Photo
// Copyright 2013 Trovebox
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -16,7 +16,6 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
@interface Constants : NSObject
@ -24,7 +23,9 @@ extern NSString * const kAppInitialized;
extern NSString * const kPhotosSaveCameraRollOrSnapshot;
extern NSString * const kPhotosSaveFiltered;
extern NSString * const kPhotosArePrivate;
extern NSString * const kOpenPhotoServer;
extern NSString * const kTroveboxServer;
extern NSString * const kTroveboxEmailUser;
extern NSString * const kHomeScreenPictures;
extern NSString * const kHomeScreenPicturesTimestamp;
extern NSString * const kServerDetails;
@ -44,6 +45,7 @@ extern NSString * const kNotificationNeededsUpdate;
extern NSString * const kNotificationNeededsUpdateHome;
extern NSString * const kNotificationDisableUpdateHome;
extern NSString * const kNotificationUpdateTableWithAllPhotosAgain;
extern NSString * const kNotificationProfileRefresh;
extern NSString * const kCellIdentifierTitle;
extern NSString * const kCellIdentifierTags;
@ -58,9 +60,23 @@ extern NSString * const kValidateNotAllowedLocation;
extern NSString * const kSyncShowUploadedPhotos;
// Facebook
extern NSString * const kFacebookUserConnected;
extern NSString * const kFacebookUserConnectedEmail;
extern NSString * const kFacebookUserConnectedUsername;
// For profile
extern NSString * const kProfileAccountType;
extern NSString * const kProfileLimitRemaining;
extern NSString * const kProfileAccountProReceipt;
extern NSString * const kProfileLatestUpdateDate;
// when defined, we will use Google Analytics
#define GOOGLE_ANALYTICS_ENABLED
// while using TestFlight, this variable will permit the app to save/send data
#define TEST_FLIGHT_ENABLED
// a lot of logs, don't use in production env.
#define DEVELOPMENT_ENABLED
@ -68,7 +84,7 @@ extern NSString * const kSyncShowUploadedPhotos;
#define DEVELOPMENT_ENABLED_JSON_RETURN
// if set developer can have credentials printed in the console
// #define DEVELOPMENT_CREDENTIALS_LOG_ENABLED
#define DEVELOPMENT_CREDENTIALS_LOG_ENABLED
// to transform color from hex to RBG
//RGB color macro
@ -77,9 +93,5 @@ extern NSString * const kSyncShowUploadedPhotos;
#define NSLog(__FORMAT__, ...) TFLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
// Facebook
extern NSString * const kFacebookUserConnected;
extern NSString * const kFacebookUserConnectedEmail;
extern NSString * const kFacebookUserConnectedUsername;
@end

View file

@ -1,9 +1,9 @@
//
// Constants.m
// Photo
// Trovebox
//
// Created by Patrick Santana on 05/09/11.
// Copyright 2012 Photo
// Copyright 2013 Trovebox
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -16,7 +16,6 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import "Constants.h"
@ -31,8 +30,10 @@ NSString * const kPhotosSaveCameraRollOrSnapshot=@"photos_save_camera_roll_or_sn
NSString * const kPhotosSaveFiltered=@"photos_save_filtered";
// Privacy - NSUserDefaults name
NSString * const kPhotosArePrivate=@"photos_are_private";
// NSUserDefault variable name for the OpenPhoto Server
NSString * const kOpenPhotoServer=@"account_server";
// NSUserDefault variable name for the Trovebox Server
NSString * const kTroveboxServer=@"account_server";
// user email
NSString * const kTroveboxEmailUser=@"account_user_email";
// NSUserDefault variable to hold user pictures
NSString * const kHomeScreenPictures=@"home_pictures";
// NSUserDefault variable with information about the last time that the pictures were refreshed
@ -67,6 +68,7 @@ NSString * const kNotificationNeededsUpdate=@"notification_needs_update";
NSString * const kNotificationNeededsUpdateHome=@"notification_needs_update_home_screen";
NSString * const kNotificationDisableUpdateHome=@"notification_disable_update_home_screen";
NSString * const kNotificationUpdateTableWithAllPhotosAgain=@"notification_update_table_with_all_pictures";
NSString * const kNotificationProfileRefresh=@"notification_update_profile_information";
/*
@ -95,6 +97,7 @@ NSString * const kValidateNotAllowedLocation=@"validate_not_allowed_location";
*/
NSString * const kSyncShowUploadedPhotos=@"sync_show_uploaded_photos";
/*
* Facebook
*/
@ -102,4 +105,11 @@ NSString * const kFacebookUserConnected=@"facebook_user_connected";
NSString * const kFacebookUserConnectedEmail=@"facebook_user_connected_email";
NSString * const kFacebookUserConnectedUsername=@"facebook_user_connected_username";
// For profile
NSString * const kProfileAccountType=@"profile_account_type";
NSString * const kProfileLimitRemaining=@"profile_limit_remaining";
NSString * const kProfileAccountProReceipt=@"profile_account_pro_receipt";
NSString * const kProfileLatestUpdateDate=@"profile_latest_update_date";
@end

View file

@ -1,80 +0,0 @@
//
// ContactUsViewController.m
// Photo
//
// Created by Patrick Santana on 29/10/12.
// Copyright 2012 Photo
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import "ContactUsViewController.h"
@interface ContactUsViewController ()
@end
@implementation ContactUsViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menu" style:UIBarButtonItemStyleBordered target:self.viewDeckController action:@selector(toggleLeftView)];
if ([self.navigationItem respondsToSelector:@selector(rightBarButtonItems)]) {
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc] initWithTitle:@"Sync" style:UIBarButtonItemStyleBordered target:self.viewDeckController action:@selector(toggleRightView)],
nil];
}
else {
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Sync" style:UIBarButtonItemStyleBordered target:self.viewDeckController action:@selector(toggleRightView)];
}
// image for the navigator
if([[UINavigationBar class] respondsToSelector:@selector(appearance)]){
//iOS >=5.0
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"appbar_empty.png"] forBarMetrics:UIBarMetricsDefault];
}else{
UIImageView *imageView = (UIImageView *)[self.navigationController.navigationBar viewWithTag:6183746];
if (imageView == nil)
{
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"appbar_empty.png"]];
[imageView setTag:6183746];
[self.navigationController.navigationBar insertSubview:imageView atIndex:0];
}
}
self.view.backgroundColor = UIColorFromRGB(0xFFCC00);
// title
self.navigationItem.title = NSLocalizedString(@"Contact Us", @"Menu - title for Contact us");
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end

View file

@ -1,234 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1536</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2843</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1929</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIButton</string>
<string>IBUILabel</string>
<string>IBUITextView</string>
<string>IBUIView</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUITextView" id="332650620">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{20, 42}, {280, 206}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="1062371991"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">4</int>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText"/>
<object class="IBUITextInputTraits" key="IBUITextInputTraits">
<int key="IBUIAutocapitalizationType">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">14</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">14</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUILabel" id="439719923">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 13}, {69, 21}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="332650620"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Message</string>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
<string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">17</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">17</double>
<int key="NSfFlags">16</int>
</object>
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
</object>
<object class="IBUIButton" id="1062371991">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 256}, {280, 44}}</string>
<reference key="NSSuperview" ref="191373211"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<int key="IBUIButtonType">1</int>
<string key="IBUINormalTitle">Send</string>
<object class="NSColor" key="IBUIHighlightedTitleColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
</array>
<string key="NSFrame">{{0, 20}, {320, 460}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="439719923"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">2</int>
</object>
</object>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedSizeMetrics" key="IBUISimulatedDestinationMetrics">
<string key="IBUISimulatedSizeMetricsClass">IBUISimulatedFreeformSizeMetricsSentinel</string>
<string key="IBUIDisplayName">Freeform</string>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<array class="NSMutableArray" key="children">
<reference ref="332650620"/>
<reference ref="439719923"/>
<reference ref="1062371991"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">17</int>
<reference key="object" ref="332650620"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="439719923"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="1062371991"/>
<reference key="parent" ref="191373211"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.CustomClassName">ContactUsViewController</string>
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">20</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">1929</string>
</data>
</archive>

View file

@ -1,9 +1,9 @@
//
// ContentTypeUtilities.h
// Photo
// Trovebox
//
// Created by Patrick Santana on 29/03/12.
// Copyright 2012 Photo
// Copyright 2013 Trovebox
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.

View file

@ -1,9 +1,9 @@
//
// ContentTypeUtilities.m
// Photo
// Trovebox
//
// Created by Patrick Santana on 29/03/12.
// Copyright 2012 Photo
// Copyright 2013 Trovebox
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.

View file

@ -129,28 +129,31 @@
{
if (!self.suspendAutomaticTrackingOfChangesInManagedObjectContext)
{
switch(type)
{
switch(type) {
case NSFetchedResultsChangeInsert:
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
break;
case NSFetchedResultsChangeMove:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
if (self.beganUpdates) {

12
Photo/DateUtilities.h Normal file
View file

@ -0,0 +1,12 @@
//
// DateUtilities.h
// Trovebox
//
// Created by Patrick Santana on 28/02/13.
// Copyright (c) 2013 Trovebox. All rights reserved.
//
@interface DateUtilities : NSObject
+ (int)daysBetween:(NSDate *)dt1 and:(NSDate *)dt2;
@end

Some files were not shown because too many files have changed in this diff Show more