#237: Added Google Analytics SDK

This commit is contained in:
Patrick Santana 2012-10-25 15:55:28 +02:00
parent 6be03dde80
commit aec0152376
23 changed files with 3925 additions and 0 deletions

View file

@ -0,0 +1,57 @@
iPhone Analytics SDK Changelog
--------------------------------------------
Version: 1.5.1 (September 2012)
--------------------------------------------
* Add support for armv7s (for iPhone5).
* Drop support for armv6.
* Remove NoThumb version of library.
--------------------------------------------
Version: 1.5 (April 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.
--------------------------------------------
Version: 1.4 (November 2011)
--------------------------------------------
* 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 '/'
--------------------------------------------
Version: 1.3 (August 2011)
--------------------------------------------
* Added anonymizeIp flag.
* Added sampleRate parameter.
* Added support for campaign referrals.
--------------------------------------------
Version: 1.2 (June 2011)
--------------------------------------------
* Added support for Ecommerce.
* Added Debug flag.
* Added DryRun flag.
--------------------------------------------
Version: 1.1 (February 2011)
--------------------------------------------
* Added support for Custom Variables.
* Added a NoThumb version of the library.
--------------------------------------------
Version: 1.0 (July 2010)
--------------------------------------------
* iOS4 support for iPhone-Analytics.

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,48 @@
<!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

@ -0,0 +1,142 @@
<!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

@ -0,0 +1,45 @@
<!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,232 @@
<!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

@ -0,0 +1,49 @@
<!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

@ -0,0 +1,30 @@
<?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

@ -0,0 +1,298 @@
// !$*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

@ -0,0 +1,11 @@
//
// 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

@ -0,0 +1,21 @@
//
// 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

@ -0,0 +1,68 @@
//
// 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

@ -0,0 +1,20 @@
//
// 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

@ -0,0 +1,31 @@
//
// 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

@ -0,0 +1,20 @@
//
// 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

@ -0,0 +1,31 @@
//
// 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

@ -0,0 +1,476 @@
<?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

@ -0,0 +1,585 @@
<?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

@ -0,0 +1,476 @@
<?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

@ -0,0 +1,15 @@
//
// 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,437 @@
/*!
@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

@ -0,0 +1,81 @@
Google Analytics iOS SDK version 1.5.1
Copyright 2009 - 2012 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.
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".
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
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).
================================================================================
BUILD REQUIREMENTS:
Mac OS X v10.6+, XCode 3.2.3+ (iOS 4.0 SDK), iPhone OS 3.0+
================================================================================
RUNTIME REQUIREMENTS:
Mac OS X v10.6+, iPhone OS 3.0+
================================================================================
PACKAGING LIST:
Library/
GANTracker.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
================================================================================