#324: update GA to latest version to fix problem with SDK 7
|
@ -1 +1 @@
|
|||
Subproject commit 2d446269d8a8095a6a509e2ddd6d20ce7256001e
|
||||
Subproject commit 525240f6ed44b79e1d7ae8cd473ac6523aca9630
|
|
@ -1,762 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
|
||||
<title>GAI Class Reference</title>
|
||||
<meta id="xcode-display" name="xcode-display" content="render"/>
|
||||
<meta name="viewport" content="width=550" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
|
||||
<meta name="generator" content="appledoc 2.1 (build 858)" />
|
||||
</head>
|
||||
<body>
|
||||
<header id="top_header">
|
||||
<div id="library" class="hideInXcode">
|
||||
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
|
||||
<a id="developerHome" href="../index.html">Google Inc</a>
|
||||
</div>
|
||||
|
||||
<div id="title" role="banner">
|
||||
<h1 class="hideInXcode">GAI Class Reference</h1>
|
||||
</div>
|
||||
<ul id="headerButtons" role="toolbar">
|
||||
<li id="toc_button">
|
||||
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
|
||||
</li>
|
||||
<li id="jumpto_button" role="navigation">
|
||||
<select id="jumpTo">
|
||||
<option value="top">Jump To…</option>
|
||||
|
||||
<option value="overview">Overview</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="tasks">Tasks</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="properties">Properties</option>
|
||||
|
||||
<option value="//api/name/debug"> debug</option>
|
||||
|
||||
<option value="//api/name/defaultTracker"> defaultTracker</option>
|
||||
|
||||
<option value="//api/name/dispatchInterval"> dispatchInterval</option>
|
||||
|
||||
<option value="//api/name/optOut"> optOut</option>
|
||||
|
||||
<option value="//api/name/trackUncaughtExceptions"> trackUncaughtExceptions</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="class_methods">Class Methods</option>
|
||||
|
||||
<option value="//api/name/sharedInstance"> + sharedInstance</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="instance_methods">Instance Methods</option>
|
||||
|
||||
<option value="//api/name/dispatch"> - dispatch</option>
|
||||
|
||||
<option value="//api/name/trackerWithTrackingId:"> - trackerWithTrackingId:</option>
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</header>
|
||||
<nav id="tocContainer" class="isShowingTOC">
|
||||
<ul id="toc" role="tree">
|
||||
|
||||
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/debug">debug</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/defaultTracker">defaultTracker</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/dispatchInterval">dispatchInterval</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/optOut">optOut</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/trackUncaughtExceptions">trackUncaughtExceptions</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">Class Methods</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/sharedInstance">sharedInstance</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">Instance Methods</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/dispatch">dispatch</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/trackerWithTrackingId:">trackerWithTrackingId:</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<article>
|
||||
<div id="contents" class="isShowingTOC" role="main">
|
||||
<a title="GAI Class Reference" name="top"></a>
|
||||
<div class="main-navigation navigation-top">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="header">
|
||||
<div class="section-header">
|
||||
<h1 class="title title-header">GAI Class Reference</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
<div class="section section-specification"><table cellspacing="0"><tbody>
|
||||
<tr>
|
||||
<td class="specification-title">Inherits from</td>
|
||||
<td class="specification-value">NSObject</td>
|
||||
</tr><tr>
|
||||
<td class="specification-title">Declared in</td>
|
||||
<td class="specification-value">GAI.h</td>
|
||||
</tr>
|
||||
</tbody></table></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-overview">
|
||||
<a title="Overview" name="overview"></a>
|
||||
<h2 class="subtitle subtitle-overview">Overview</h2>
|
||||
<p>Google Analytics iOS top-level class. Provides facilities to create trackers
|
||||
and set behaviorial flags.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-tasks">
|
||||
<a title="Tasks" name="tasks"></a>
|
||||
<h2 class="subtitle subtitle-tasks">Tasks</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="task-list">
|
||||
<li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/defaultTracker"> defaultTracker</a></code>
|
||||
<span class="tooltip"><p>For convenience, this class exposes a default tracker instance.
|
||||
This is initialized to <code>nil</code> and will be set to the first tracker that is
|
||||
instantiated in <a href="#//api/name/trackerWithTrackingId:">trackerWithTrackingId:</a>. It may be overridden as desired.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/debug"> debug</a></code>
|
||||
<span class="tooltip"><p>If true, Google Analytics debug messages will be logged with <code>NSLog()</code>. This is
|
||||
useful for debugging calls to the Google Analytics SDK.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/optOut"> optOut</a></code>
|
||||
<span class="tooltip"><p>When this is true, no tracking information will be gathered; tracking calls
|
||||
will effectively become no-ops. When set to true, all tracking information that
|
||||
has not yet been submitted. The value of this flag will be persisted
|
||||
automatically by the SDK. Developers can optionally use this flag to implement
|
||||
an opt-out setting in the app to allows users to opt out of Google Analytics
|
||||
tracking.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/dispatchInterval"> dispatchInterval</a></code>
|
||||
<span class="tooltip"><p>If this value is negative, tracking information must be sent manually by
|
||||
calling <a href="#//api/name/dispatch">dispatch</a>. If this value is zero, tracking information will
|
||||
automatically be sent as soon as possible (usually immediately if the device
|
||||
has Internet connectivity). If this value is positive, tracking information
|
||||
will be automatically dispatched every dispatchInterval seconds.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/trackUncaughtExceptions"> trackUncaughtExceptions</a></code>
|
||||
<span class="tooltip"><p>When set to true, the SDK will record the currently registered uncaught
|
||||
exception handler, and then register an uncaught exception handler which tracks
|
||||
the exceptions that occurred using <a href="#//api/name/defaultTracker">defaultTracker</a>. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not
|
||||
<code>nil</code>, this function will track the exception on the tracker and attempt to
|
||||
<a href="#//api/name/dispatch">dispatch</a> any outstanding tracking information for 5 seconds. It will then call
|
||||
the previously registered exception handler, if any. When set back to false,
|
||||
the previously registered uncaught exception handler will be restored.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/sharedInstance">+ sharedInstance</a></code>
|
||||
<span class="tooltip"><p>Get the shared instance of the Google Analytics for iOS class.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/trackerWithTrackingId:">– trackerWithTrackingId:</a></code>
|
||||
<span class="tooltip"><p>Create or retrieve a <a href="../Protocols/GAITracker.html">GAITracker</a> implementation with the specified tracking
|
||||
ID. If the tracker for the specified tracking ID does not already exist, then
|
||||
it will be created and returned; otherwise, the existing tracker will be
|
||||
returned. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not set, it will be set to the tracker instance
|
||||
returned here.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/dispatch">– dispatch</a></code>
|
||||
<span class="tooltip"><p>Dispatches any pending tracking information.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Properties" name="properties"></a>
|
||||
<h2 class="subtitle subtitle-methods">Properties</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/debug" title="debug"></a>
|
||||
<h3 class="subsubtitle method-title">debug</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>If true, Google Analytics debug messages will be logged with <code>NSLog()</code>. This is
|
||||
useful for debugging calls to the Google Analytics SDK.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) BOOL debug</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection discussion-section">
|
||||
<h4 class="method-subtitle">Discussion</h4>
|
||||
<p>By default, this flag is set to <code>NO</code>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/defaultTracker" title="defaultTracker"></a>
|
||||
<h3 class="subsubtitle method-title">defaultTracker</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>For convenience, this class exposes a default tracker instance.
|
||||
This is initialized to <code>nil</code> and will be set to the first tracker that is
|
||||
instantiated in <a href="#//api/name/trackerWithTrackingId:">trackerWithTrackingId:</a>. It may be overridden as desired.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) id<GAITracker> defaultTracker</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection discussion-section">
|
||||
<h4 class="method-subtitle">Discussion</h4>
|
||||
<p>The <a href="../Classes/GAITrackedViewController.html">GAITrackedViewController</a> class will, by default, use this tracker instance.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/dispatchInterval" title="dispatchInterval"></a>
|
||||
<h3 class="subsubtitle method-title">dispatchInterval</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>If this value is negative, tracking information must be sent manually by
|
||||
calling <a href="#//api/name/dispatch">dispatch</a>. If this value is zero, tracking information will
|
||||
automatically be sent as soon as possible (usually immediately if the device
|
||||
has Internet connectivity). If this value is positive, tracking information
|
||||
will be automatically dispatched every dispatchInterval seconds.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) NSTimeInterval dispatchInterval</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection discussion-section">
|
||||
<h4 class="method-subtitle">Discussion</h4>
|
||||
<p>When the dispatchInterval is non-zero, setting it to zero will cause any queued
|
||||
tracking information to be sent immediately.</p>
|
||||
|
||||
<p>By default, this is set to <code>120</code>, which indicates tracking information should
|
||||
be dispatched automatically every 120 seconds.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/optOut" title="optOut"></a>
|
||||
<h3 class="subsubtitle method-title">optOut</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>When this is true, no tracking information will be gathered; tracking calls
|
||||
will effectively become no-ops. When set to true, all tracking information that
|
||||
has not yet been submitted. The value of this flag will be persisted
|
||||
automatically by the SDK. Developers can optionally use this flag to implement
|
||||
an opt-out setting in the app to allows users to opt out of Google Analytics
|
||||
tracking.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) BOOL optOut</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection discussion-section">
|
||||
<h4 class="method-subtitle">Discussion</h4>
|
||||
<p>This is set to <code>NO</code> the first time the Google Analytics SDK is used on a
|
||||
device, and is persisted thereafter.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/trackUncaughtExceptions" title="trackUncaughtExceptions"></a>
|
||||
<h3 class="subsubtitle method-title">trackUncaughtExceptions</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>When set to true, the SDK will record the currently registered uncaught
|
||||
exception handler, and then register an uncaught exception handler which tracks
|
||||
the exceptions that occurred using <a href="#//api/name/defaultTracker">defaultTracker</a>. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not
|
||||
<code>nil</code>, this function will track the exception on the tracker and attempt to
|
||||
<a href="#//api/name/dispatch">dispatch</a> any outstanding tracking information for 5 seconds. It will then call
|
||||
the previously registered exception handler, if any. When set back to false,
|
||||
the previously registered uncaught exception handler will be restored.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) BOOL trackUncaughtExceptions</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Class Methods" name="class_methods"></a>
|
||||
<h2 class="subtitle subtitle-methods">Class Methods</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/sharedInstance" title="sharedInstance"></a>
|
||||
<h3 class="subsubtitle method-title">sharedInstance</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Get the shared instance of the Google Analytics for iOS class.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>+ (GAI *)sharedInstance</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Instance Methods" name="instance_methods"></a>
|
||||
<h2 class="subtitle subtitle-methods">Instance Methods</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/dispatch" title="dispatch"></a>
|
||||
<h3 class="subsubtitle method-title">dispatch</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Dispatches any pending tracking information.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>- (void)dispatch</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection discussion-section">
|
||||
<h4 class="method-subtitle">Discussion</h4>
|
||||
<p>It would be wise to call this when application is exiting to initiate the
|
||||
submission of any unsubmitted tracking information. Note that this does not
|
||||
have any effect on <a href="#//api/name/dispatchInterval">dispatchInterval</a>, and can be used in conjuntion with
|
||||
periodic dispatch.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/trackerWithTrackingId:" title="trackerWithTrackingId:"></a>
|
||||
<h3 class="subsubtitle method-title">trackerWithTrackingId:</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Create or retrieve a <a href="../Protocols/GAITracker.html">GAITracker</a> implementation with the specified tracking
|
||||
ID. If the tracker for the specified tracking ID does not already exist, then
|
||||
it will be created and returned; otherwise, the existing tracker will be
|
||||
returned. If <a href="#//api/name/defaultTracker">defaultTracker</a> is not set, it will be set to the tracker instance
|
||||
returned here.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>- (id<GAITracker>)trackerWithTrackingId:(NSString *)<em>trackingId</em></code></div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection arguments-section parameters">
|
||||
<h4 class="method-subtitle parameter-title">Parameters</h4>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>trackingId</em></dt>
|
||||
<dd><p>The tracking ID (a string that begins with “UA-”). Must not
|
||||
be <code>nil</code> or empty.</p></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection return">
|
||||
<h4 class="method-subtitle parameter-title">Return Value</h4>
|
||||
<p>A <a href="../Protocols/GAITracker.html">GAITracker</a> associated with the specified tracking ID. The tracker
|
||||
can be used to send tracking data to Google Analytics. The first time this
|
||||
method is called with a particular tracking ID, the tracker for that tracking
|
||||
ID will be returned, and subsequent calls with the same tracking ID will return
|
||||
the same instance. It is not necessary to retain the tracker because the
|
||||
tracker will be retained internally by the library.</p>
|
||||
|
||||
<p>If an error occurs or the tracker ID is not valid, this method will return
|
||||
<code>nil</code>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAI.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="main-navigation navigation-bottom">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<hr />
|
||||
<div class="footer-copyright">
|
||||
<p><span class="copyright">© 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
|
||||
|
||||
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<script type="text/javascript">
|
||||
function jumpToChange()
|
||||
{
|
||||
window.location.hash = this.options[this.selectedIndex].value;
|
||||
}
|
||||
|
||||
function toggleTOC()
|
||||
{
|
||||
var contents = document.getElementById('contents');
|
||||
var tocContainer = document.getElementById('tocContainer');
|
||||
|
||||
if (this.getAttribute('class') == 'open')
|
||||
{
|
||||
this.setAttribute('class', '');
|
||||
contents.setAttribute('class', '');
|
||||
tocContainer.setAttribute('class', '');
|
||||
|
||||
window.name = "hideTOC";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setAttribute('class', 'open');
|
||||
contents.setAttribute('class', 'isShowingTOC');
|
||||
tocContainer.setAttribute('class', 'isShowingTOC');
|
||||
|
||||
window.name = "";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function toggleTOCEntryChildren(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
var currentClass = this.getAttribute('class');
|
||||
if (currentClass == 'children') {
|
||||
this.setAttribute('class', 'children open');
|
||||
}
|
||||
else if (currentClass == 'children open') {
|
||||
this.setAttribute('class', 'children');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function tocEntryClick(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
return true;
|
||||
}
|
||||
|
||||
function init()
|
||||
{
|
||||
var selectElement = document.getElementById('jumpTo');
|
||||
selectElement.addEventListener('change', jumpToChange, false);
|
||||
|
||||
var tocButton = document.getElementById('table_of_contents');
|
||||
tocButton.addEventListener('click', toggleTOC, false);
|
||||
|
||||
var taskTreeItem = document.getElementById('task_treeitem');
|
||||
if (taskTreeItem.getElementsByTagName('li').length > 0)
|
||||
{
|
||||
taskTreeItem.setAttribute('class', 'children');
|
||||
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
|
||||
}
|
||||
|
||||
var tocList = document.getElementById('toc');
|
||||
|
||||
var tocEntries = tocList.getElementsByTagName('li');
|
||||
for (var i = 0; i < tocEntries.length; i++) {
|
||||
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
|
||||
}
|
||||
|
||||
var tocLinks = tocList.getElementsByTagName('a');
|
||||
for (var i = 0; i < tocLinks.length; i++) {
|
||||
tocLinks[i].addEventListener('click', tocEntryClick, false);
|
||||
}
|
||||
|
||||
if (window.name == "hideTOC") {
|
||||
toggleTOC.call(tocButton);
|
||||
}
|
||||
}
|
||||
|
||||
window.onload = init;
|
||||
|
||||
// If showing in Xcode, hide the TOC and Header
|
||||
if (navigator.userAgent.match(/xcode/i)) {
|
||||
document.getElementById("contents").className = "hideInXcode"
|
||||
document.getElementById("tocContainer").className = "hideInXcode"
|
||||
document.getElementById("top_header").className = "hideInXcode"
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,361 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
|
||||
<title>GAITrackedViewController Class Reference</title>
|
||||
<meta id="xcode-display" name="xcode-display" content="render"/>
|
||||
<meta name="viewport" content="width=550" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
|
||||
<meta name="generator" content="appledoc 2.1 (build 858)" />
|
||||
</head>
|
||||
<body>
|
||||
<header id="top_header">
|
||||
<div id="library" class="hideInXcode">
|
||||
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
|
||||
<a id="developerHome" href="../index.html">Google Inc</a>
|
||||
</div>
|
||||
|
||||
<div id="title" role="banner">
|
||||
<h1 class="hideInXcode">GAITrackedViewController Class Reference</h1>
|
||||
</div>
|
||||
<ul id="headerButtons" role="toolbar">
|
||||
<li id="toc_button">
|
||||
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
|
||||
</li>
|
||||
<li id="jumpto_button" role="navigation">
|
||||
<select id="jumpTo">
|
||||
<option value="top">Jump To…</option>
|
||||
|
||||
<option value="overview">Overview</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="tasks">Tasks</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="properties">Properties</option>
|
||||
|
||||
<option value="//api/name/trackedViewName"> trackedViewName</option>
|
||||
|
||||
<option value="//api/name/tracker"> tracker</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</header>
|
||||
<nav id="tocContainer" class="isShowingTOC">
|
||||
<ul id="toc" role="tree">
|
||||
|
||||
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/trackedViewName">trackedViewName</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/tracker">tracker</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<article>
|
||||
<div id="contents" class="isShowingTOC" role="main">
|
||||
<a title="GAITrackedViewController Class Reference" name="top"></a>
|
||||
<div class="main-navigation navigation-top">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="header">
|
||||
<div class="section-header">
|
||||
<h1 class="title title-header">GAITrackedViewController Class Reference</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
<div class="section section-specification"><table cellspacing="0"><tbody>
|
||||
<tr>
|
||||
<td class="specification-title">Inherits from</td>
|
||||
<td class="specification-value">UIViewController</td>
|
||||
</tr><tr>
|
||||
<td class="specification-title">Declared in</td>
|
||||
<td class="specification-value">GAITrackedViewController.h</td>
|
||||
</tr>
|
||||
</tbody></table></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-overview">
|
||||
<a title="Overview" name="overview"></a>
|
||||
<h2 class="subtitle subtitle-overview">Overview</h2>
|
||||
<p>Extends UIViewController to generate Google Analytics view tracking calls
|
||||
whenever the view appears; this is done by overriding the <code>viewDidAppear:</code>
|
||||
method. The view name must be set for any tracking calls to be made.</p>
|
||||
|
||||
<p>By default, this will use <a href="../Classes/GAI.html#//api/name/defaultTracker">[GAI defaultTracker]</a> for tracking calls, but one can
|
||||
override this by setting the <a href="#//api/name/tracker">tracker</a> property.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-tasks">
|
||||
<a title="Tasks" name="tasks"></a>
|
||||
<h2 class="subtitle subtitle-tasks">Tasks</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="task-list">
|
||||
<li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/tracker"> tracker</a></code>
|
||||
<span class="tooltip"><p>The tracker on which view tracking calls are be made, or <code>nil</code>, in which case
|
||||
<a href="../Classes/GAI.html#//api/name/defaultTracker">[GAI defaultTracker]</a> will be used.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/trackedViewName"> trackedViewName</a></code>
|
||||
<span class="tooltip"><p>The view name, for purposes of Google Analytics view tracking. If this is
|
||||
<code>nil</code>, no tracking calls will be made.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Properties" name="properties"></a>
|
||||
<h2 class="subtitle subtitle-methods">Properties</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/trackedViewName" title="trackedViewName"></a>
|
||||
<h3 class="subsubtitle method-title">trackedViewName</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The view name, for purposes of Google Analytics view tracking. If this is
|
||||
<code>nil</code>, no tracking calls will be made.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy) NSString *trackedViewName</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITrackedViewController.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/tracker" title="tracker"></a>
|
||||
<h3 class="subsubtitle method-title">tracker</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The tracker on which view tracking calls are be made, or <code>nil</code>, in which case
|
||||
<a href="../Classes/GAI.html#//api/name/defaultTracker">[GAI defaultTracker]</a> will be used.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) id<GAITracker> tracker</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITrackedViewController.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="main-navigation navigation-bottom">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<hr />
|
||||
<div class="footer-copyright">
|
||||
<p><span class="copyright">© 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
|
||||
|
||||
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<script type="text/javascript">
|
||||
function jumpToChange()
|
||||
{
|
||||
window.location.hash = this.options[this.selectedIndex].value;
|
||||
}
|
||||
|
||||
function toggleTOC()
|
||||
{
|
||||
var contents = document.getElementById('contents');
|
||||
var tocContainer = document.getElementById('tocContainer');
|
||||
|
||||
if (this.getAttribute('class') == 'open')
|
||||
{
|
||||
this.setAttribute('class', '');
|
||||
contents.setAttribute('class', '');
|
||||
tocContainer.setAttribute('class', '');
|
||||
|
||||
window.name = "hideTOC";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setAttribute('class', 'open');
|
||||
contents.setAttribute('class', 'isShowingTOC');
|
||||
tocContainer.setAttribute('class', 'isShowingTOC');
|
||||
|
||||
window.name = "";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function toggleTOCEntryChildren(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
var currentClass = this.getAttribute('class');
|
||||
if (currentClass == 'children') {
|
||||
this.setAttribute('class', 'children open');
|
||||
}
|
||||
else if (currentClass == 'children open') {
|
||||
this.setAttribute('class', 'children');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function tocEntryClick(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
return true;
|
||||
}
|
||||
|
||||
function init()
|
||||
{
|
||||
var selectElement = document.getElementById('jumpTo');
|
||||
selectElement.addEventListener('change', jumpToChange, false);
|
||||
|
||||
var tocButton = document.getElementById('table_of_contents');
|
||||
tocButton.addEventListener('click', toggleTOC, false);
|
||||
|
||||
var taskTreeItem = document.getElementById('task_treeitem');
|
||||
if (taskTreeItem.getElementsByTagName('li').length > 0)
|
||||
{
|
||||
taskTreeItem.setAttribute('class', 'children');
|
||||
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
|
||||
}
|
||||
|
||||
var tocList = document.getElementById('toc');
|
||||
|
||||
var tocEntries = tocList.getElementsByTagName('li');
|
||||
for (var i = 0; i < tocEntries.length; i++) {
|
||||
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
|
||||
}
|
||||
|
||||
var tocLinks = tocList.getElementsByTagName('a');
|
||||
for (var i = 0; i < tocLinks.length; i++) {
|
||||
tocLinks[i].addEventListener('click', tocEntryClick, false);
|
||||
}
|
||||
|
||||
if (window.name == "hideTOC") {
|
||||
toggleTOC.call(tocButton);
|
||||
}
|
||||
}
|
||||
|
||||
window.onload = init;
|
||||
|
||||
// If showing in Xcode, hide the TOC and Header
|
||||
if (navigator.userAgent.match(/xcode/i)) {
|
||||
document.getElementById("contents").className = "hideInXcode"
|
||||
document.getElementById("tocContainer").className = "hideInXcode"
|
||||
document.getElementById("top_header").className = "hideInXcode"
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,783 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
|
||||
<title>GAITransaction Class Reference</title>
|
||||
<meta id="xcode-display" name="xcode-display" content="render"/>
|
||||
<meta name="viewport" content="width=550" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
|
||||
<meta name="generator" content="appledoc 2.1 (build 858)" />
|
||||
</head>
|
||||
<body>
|
||||
<header id="top_header">
|
||||
<div id="library" class="hideInXcode">
|
||||
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
|
||||
<a id="developerHome" href="../index.html">Google Inc</a>
|
||||
</div>
|
||||
|
||||
<div id="title" role="banner">
|
||||
<h1 class="hideInXcode">GAITransaction Class Reference</h1>
|
||||
</div>
|
||||
<ul id="headerButtons" role="toolbar">
|
||||
<li id="toc_button">
|
||||
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
|
||||
</li>
|
||||
<li id="jumpto_button" role="navigation">
|
||||
<select id="jumpTo">
|
||||
<option value="top">Jump To…</option>
|
||||
|
||||
<option value="overview">Overview</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="tasks">Tasks</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="properties">Properties</option>
|
||||
|
||||
<option value="//api/name/affiliation"> affiliation</option>
|
||||
|
||||
<option value="//api/name/items"> items</option>
|
||||
|
||||
<option value="//api/name/revenueMicros"> revenueMicros</option>
|
||||
|
||||
<option value="//api/name/shippingMicros"> shippingMicros</option>
|
||||
|
||||
<option value="//api/name/taxMicros"> taxMicros</option>
|
||||
|
||||
<option value="//api/name/transactionId"> transactionId</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="class_methods">Class Methods</option>
|
||||
|
||||
<option value="//api/name/transactionWithId:withAffiliation:"> + transactionWithId:withAffiliation:</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="instance_methods">Instance Methods</option>
|
||||
|
||||
<option value="//api/name/addItem:"> - addItem:</option>
|
||||
|
||||
<option value="//api/name/addItemWithCode:name:category:priceMicros:quantity:"> - addItemWithCode:name:category:priceMicros:quantity:</option>
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</header>
|
||||
<nav id="tocContainer" class="isShowingTOC">
|
||||
<ul id="toc" role="tree">
|
||||
|
||||
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/affiliation">affiliation</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/items">items</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/revenueMicros">revenueMicros</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/shippingMicros">shippingMicros</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/taxMicros">taxMicros</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/transactionId">transactionId</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">Class Methods</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/transactionWithId:withAffiliation:">transactionWithId:withAffiliation:</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">Instance Methods</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/addItem:">addItem:</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/addItemWithCode:name:category:priceMicros:quantity:">addItemWithCode:name:category:priceMicros:quantity:</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<article>
|
||||
<div id="contents" class="isShowingTOC" role="main">
|
||||
<a title="GAITransaction Class Reference" name="top"></a>
|
||||
<div class="main-navigation navigation-top">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="header">
|
||||
<div class="section-header">
|
||||
<h1 class="title title-header">GAITransaction Class Reference</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
<div class="section section-specification"><table cellspacing="0"><tbody>
|
||||
<tr>
|
||||
<td class="specification-title">Inherits from</td>
|
||||
<td class="specification-value">NSObject</td>
|
||||
</tr><tr>
|
||||
<td class="specification-title">Declared in</td>
|
||||
<td class="specification-value">GAITransaction.h</td>
|
||||
</tr>
|
||||
</tbody></table></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-overview">
|
||||
<a title="Overview" name="overview"></a>
|
||||
<h2 class="subtitle subtitle-overview">Overview</h2>
|
||||
<p>A simple class to hold transaction data.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-tasks">
|
||||
<a title="Tasks" name="tasks"></a>
|
||||
<h2 class="subtitle subtitle-tasks">Tasks</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="task-list">
|
||||
<li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/transactionId"> transactionId</a></code>
|
||||
<span class="tooltip"><p>Transaction ID.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/affiliation"> affiliation</a></code>
|
||||
<span class="tooltip"><p>Transaction affiliation.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/revenueMicros"> revenueMicros</a></code>
|
||||
<span class="tooltip"><p>Revenue in micros (millionths of a currency unit). Note that this must be
|
||||
set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/taxMicros"> taxMicros</a></code>
|
||||
<span class="tooltip"><p>Tax in micros (millionths of a currency unit). Note that this must be set
|
||||
manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/shippingMicros"> shippingMicros</a></code>
|
||||
<span class="tooltip"><p>Shipping cost in micros (millionths of a currency unit). Note that
|
||||
this must be set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/items"> items</a></code>
|
||||
<span class="tooltip"><p>Transaction items, as an immutable array.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/transactionWithId:withAffiliation:">+ transactionWithId:withAffiliation:</a></code>
|
||||
<span class="tooltip"><p>Create and initialize a transaction.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/addItem:">– addItem:</a></code>
|
||||
<span class="tooltip"><p>Add an item to the transaction. If an item with the same SKU already
|
||||
exists in the transaction, that item will be replaced with this one.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/addItemWithCode:name:category:priceMicros:quantity:">– addItemWithCode:name:category:priceMicros:quantity:</a></code>
|
||||
<span class="tooltip"><p>Add an item to the transaction. If an item with the same SKU already
|
||||
exists in the transaction, that item will be replaced with this one.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Properties" name="properties"></a>
|
||||
<h2 class="subtitle subtitle-methods">Properties</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/affiliation" title="affiliation"></a>
|
||||
<h3 class="subsubtitle method-title">affiliation</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Transaction affiliation.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy, readonly) NSString *affiliation</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/items" title="items"></a>
|
||||
<h3 class="subsubtitle method-title">items</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Transaction items, as an immutable array.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, readonly) NSArray *items</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/revenueMicros" title="revenueMicros"></a>
|
||||
<h3 class="subsubtitle method-title">revenueMicros</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Revenue in micros (millionths of a currency unit). Note that this must be
|
||||
set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t revenueMicros</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/shippingMicros" title="shippingMicros"></a>
|
||||
<h3 class="subsubtitle method-title">shippingMicros</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Shipping cost in micros (millionths of a currency unit). Note that
|
||||
this must be set manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t shippingMicros</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/taxMicros" title="taxMicros"></a>
|
||||
<h3 class="subsubtitle method-title">taxMicros</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Tax in micros (millionths of a currency unit). Note that this must be set
|
||||
manually because it is not updated when <a href="#//api/name/items">items</a> are added.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t taxMicros</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/transactionId" title="transactionId"></a>
|
||||
<h3 class="subsubtitle method-title">transactionId</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Transaction ID.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy, readonly) NSString *transactionId</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Class Methods" name="class_methods"></a>
|
||||
<h2 class="subtitle subtitle-methods">Class Methods</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/transactionWithId:withAffiliation:" title="transactionWithId:withAffiliation:"></a>
|
||||
<h3 class="subsubtitle method-title">transactionWithId:withAffiliation:</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Create and initialize a transaction.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>+ (GAITransaction *)transactionWithId:(NSString *)<em>transactionId</em> withAffiliation:(NSString *)<em>affiliation</em></code></div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection arguments-section parameters">
|
||||
<h4 class="method-subtitle parameter-title">Parameters</h4>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>transactionId</em></dt>
|
||||
<dd><p>The transaction ID. Required (must not be <code>nil</code>).</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>affiliation</em></dt>
|
||||
<dd><p>The transaction <a href="#//api/name/affiliation">affiliation</a>. May be <code>nil</code>.</p></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection return">
|
||||
<h4 class="method-subtitle parameter-title">Return Value</h4>
|
||||
<p>A GAITransaction object with the specified transaction ID and
|
||||
<a href="#//api/name/affiliation">affiliation</a>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Instance Methods" name="instance_methods"></a>
|
||||
<h2 class="subtitle subtitle-methods">Instance Methods</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/addItem:" title="addItem:"></a>
|
||||
<h3 class="subsubtitle method-title">addItem:</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Add an item to the transaction. If an item with the same SKU already
|
||||
exists in the transaction, that item will be replaced with this one.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>- (void)addItem:(GAITransactionItem *)<em>item</em></code></div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection arguments-section parameters">
|
||||
<h4 class="method-subtitle parameter-title">Parameters</h4>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>item</em></dt>
|
||||
<dd><p>The <a href="../Classes/GAITransactionItem.html">GAITransactionItem</a> to add to the transaction.</p></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/addItemWithCode:name:category:priceMicros:quantity:" title="addItemWithCode:name:category:priceMicros:quantity:"></a>
|
||||
<h3 class="subsubtitle method-title">addItemWithCode:name:category:priceMicros:quantity:</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Add an item to the transaction. If an item with the same SKU already
|
||||
exists in the transaction, that item will be replaced with this one.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>- (void)addItemWithCode:(NSString *)<em>productCode</em> name:(NSString *)<em>productName</em> category:(NSString *)<em>productCategory</em> priceMicros:(int64_t)<em>priceMicros</em> quantity:(NSInteger)<em>quantity</em></code></div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection arguments-section parameters">
|
||||
<h4 class="method-subtitle parameter-title">Parameters</h4>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>productCode</em></dt>
|
||||
<dd><p>The item product code; must not be <code>nil</code> or empty.</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>productName</em></dt>
|
||||
<dd><p>The item product name; may be <code>nil</code>.</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>productCategory</em></dt>
|
||||
<dd><p>The item product category; may be <code>nil</code>.</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>priceMicros</em></dt>
|
||||
<dd><p>The item price, in micros (millionths of a currency unit).</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>quantity</em></dt>
|
||||
<dd><p>The item quantity, as an NSInteger.</p></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection return">
|
||||
<h4 class="method-subtitle parameter-title">Return Value</h4>
|
||||
<p>The newly initialized item.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransaction.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="main-navigation navigation-bottom">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<hr />
|
||||
<div class="footer-copyright">
|
||||
<p><span class="copyright">© 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
|
||||
|
||||
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<script type="text/javascript">
|
||||
function jumpToChange()
|
||||
{
|
||||
window.location.hash = this.options[this.selectedIndex].value;
|
||||
}
|
||||
|
||||
function toggleTOC()
|
||||
{
|
||||
var contents = document.getElementById('contents');
|
||||
var tocContainer = document.getElementById('tocContainer');
|
||||
|
||||
if (this.getAttribute('class') == 'open')
|
||||
{
|
||||
this.setAttribute('class', '');
|
||||
contents.setAttribute('class', '');
|
||||
tocContainer.setAttribute('class', '');
|
||||
|
||||
window.name = "hideTOC";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setAttribute('class', 'open');
|
||||
contents.setAttribute('class', 'isShowingTOC');
|
||||
tocContainer.setAttribute('class', 'isShowingTOC');
|
||||
|
||||
window.name = "";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function toggleTOCEntryChildren(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
var currentClass = this.getAttribute('class');
|
||||
if (currentClass == 'children') {
|
||||
this.setAttribute('class', 'children open');
|
||||
}
|
||||
else if (currentClass == 'children open') {
|
||||
this.setAttribute('class', 'children');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function tocEntryClick(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
return true;
|
||||
}
|
||||
|
||||
function init()
|
||||
{
|
||||
var selectElement = document.getElementById('jumpTo');
|
||||
selectElement.addEventListener('change', jumpToChange, false);
|
||||
|
||||
var tocButton = document.getElementById('table_of_contents');
|
||||
tocButton.addEventListener('click', toggleTOC, false);
|
||||
|
||||
var taskTreeItem = document.getElementById('task_treeitem');
|
||||
if (taskTreeItem.getElementsByTagName('li').length > 0)
|
||||
{
|
||||
taskTreeItem.setAttribute('class', 'children');
|
||||
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
|
||||
}
|
||||
|
||||
var tocList = document.getElementById('toc');
|
||||
|
||||
var tocEntries = tocList.getElementsByTagName('li');
|
||||
for (var i = 0; i < tocEntries.length; i++) {
|
||||
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
|
||||
}
|
||||
|
||||
var tocLinks = tocList.getElementsByTagName('a');
|
||||
for (var i = 0; i < tocLinks.length; i++) {
|
||||
tocLinks[i].addEventListener('click', tocEntryClick, false);
|
||||
}
|
||||
|
||||
if (window.name == "hideTOC") {
|
||||
toggleTOC.call(tocButton);
|
||||
}
|
||||
}
|
||||
|
||||
window.onload = init;
|
||||
|
||||
// If showing in Xcode, hide the TOC and Header
|
||||
if (navigator.userAgent.match(/xcode/i)) {
|
||||
document.getElementById("contents").className = "hideInXcode"
|
||||
document.getElementById("tocContainer").className = "hideInXcode"
|
||||
document.getElementById("top_header").className = "hideInXcode"
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,588 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
|
||||
<title>GAITransactionItem Class Reference</title>
|
||||
<meta id="xcode-display" name="xcode-display" content="render"/>
|
||||
<meta name="viewport" content="width=550" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
|
||||
<meta name="generator" content="appledoc 2.1 (build 858)" />
|
||||
</head>
|
||||
<body>
|
||||
<header id="top_header">
|
||||
<div id="library" class="hideInXcode">
|
||||
<h1><a id="libraryTitle" href="../index.html">Google Analytics SDK for iOS </a></h1>
|
||||
<a id="developerHome" href="../index.html">Google Inc</a>
|
||||
</div>
|
||||
|
||||
<div id="title" role="banner">
|
||||
<h1 class="hideInXcode">GAITransactionItem Class Reference</h1>
|
||||
</div>
|
||||
<ul id="headerButtons" role="toolbar">
|
||||
<li id="toc_button">
|
||||
<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
|
||||
</li>
|
||||
<li id="jumpto_button" role="navigation">
|
||||
<select id="jumpTo">
|
||||
<option value="top">Jump To…</option>
|
||||
|
||||
<option value="overview">Overview</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="tasks">Tasks</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="properties">Properties</option>
|
||||
|
||||
<option value="//api/name/priceMicros"> priceMicros</option>
|
||||
|
||||
<option value="//api/name/productCategory"> productCategory</option>
|
||||
|
||||
<option value="//api/name/productCode"> productCode</option>
|
||||
|
||||
<option value="//api/name/productName"> productName</option>
|
||||
|
||||
<option value="//api/name/quantity"> quantity</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<option value="class_methods">Class Methods</option>
|
||||
|
||||
<option value="//api/name/itemWithCode:name:category:priceMicros:quantity:"> + itemWithCode:name:category:priceMicros:quantity:</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</header>
|
||||
<nav id="tocContainer" class="isShowingTOC">
|
||||
<ul id="toc" role="tree">
|
||||
|
||||
<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">Properties</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/priceMicros">priceMicros</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/productCategory">productCategory</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/productCode">productCode</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/productName">productName</a></span></li>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/quantity">quantity</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">Class Methods</a></span><ul>
|
||||
|
||||
<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/itemWithCode:name:category:priceMicros:quantity:">itemWithCode:name:category:priceMicros:quantity:</a></span></li>
|
||||
|
||||
</ul></li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<article>
|
||||
<div id="contents" class="isShowingTOC" role="main">
|
||||
<a title="GAITransactionItem Class Reference" name="top"></a>
|
||||
<div class="main-navigation navigation-top">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="header">
|
||||
<div class="section-header">
|
||||
<h1 class="title title-header">GAITransactionItem Class Reference</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
<div class="section section-specification"><table cellspacing="0"><tbody>
|
||||
<tr>
|
||||
<td class="specification-title">Inherits from</td>
|
||||
<td class="specification-value">NSObject</td>
|
||||
</tr><tr>
|
||||
<td class="specification-title">Declared in</td>
|
||||
<td class="specification-value">GAITransactionItem.h</td>
|
||||
</tr>
|
||||
</tbody></table></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-overview">
|
||||
<a title="Overview" name="overview"></a>
|
||||
<h2 class="subtitle subtitle-overview">Overview</h2>
|
||||
<p>A simple class to hold transaction item data.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-tasks">
|
||||
<a title="Tasks" name="tasks"></a>
|
||||
<h2 class="subtitle subtitle-tasks">Tasks</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="task-list">
|
||||
<li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/productCode"> productCode</a></code>
|
||||
<span class="tooltip"><p>The item code, as a string.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/productName"> productName</a></code>
|
||||
<span class="tooltip"><p>The item name.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/productCategory"> productCategory</a></code>
|
||||
<span class="tooltip"><p>The item variation.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/priceMicros"> priceMicros</a></code>
|
||||
<span class="tooltip"><p>The item price in micros (millionths of a currency unit).</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/quantity"> quantity</a></code>
|
||||
<span class="tooltip"><p>The item quantity.</p></span>
|
||||
</span>
|
||||
<span class="task-item-suffix">property</span>
|
||||
|
||||
</li><li>
|
||||
<span class="tooltip">
|
||||
<code><a href="#//api/name/itemWithCode:name:category:priceMicros:quantity:">+ itemWithCode:name:category:priceMicros:quantity:</a></code>
|
||||
<span class="tooltip"><p>Create and initialize an item.</p></span>
|
||||
</span>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Properties" name="properties"></a>
|
||||
<h2 class="subtitle subtitle-methods">Properties</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/priceMicros" title="priceMicros"></a>
|
||||
<h3 class="subsubtitle method-title">priceMicros</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The item price in micros (millionths of a currency unit).</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) int64_t priceMicros</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransactionItem.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/productCategory" title="productCategory"></a>
|
||||
<h3 class="subsubtitle method-title">productCategory</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The item variation.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy) NSString *productCategory</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransactionItem.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/productCode" title="productCode"></a>
|
||||
<h3 class="subsubtitle method-title">productCode</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The item code, as a string.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy, readonly) NSString *productCode</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransactionItem.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/productName" title="productName"></a>
|
||||
<h3 class="subsubtitle method-title">productName</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The item name.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, copy) NSString *productName</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransactionItem.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/quantity" title="quantity"></a>
|
||||
<h3 class="subsubtitle method-title">quantity</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>The item quantity.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>@property (nonatomic, assign) NSInteger quantity</code></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransactionItem.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="section section-methods">
|
||||
<a title="Class Methods" name="class_methods"></a>
|
||||
<h2 class="subtitle subtitle-methods">Class Methods</h2>
|
||||
|
||||
<div class="section-method">
|
||||
<a name="//api/name/itemWithCode:name:category:priceMicros:quantity:" title="itemWithCode:name:category:priceMicros:quantity:"></a>
|
||||
<h3 class="subsubtitle method-title">itemWithCode:name:category:priceMicros:quantity:</h3>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection brief-description">
|
||||
<p>Create and initialize an item.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection method-declaration"><code>+ (GAITransactionItem *)itemWithCode:(NSString *)<em>productCode</em> name:(NSString *)<em>productName</em> category:(NSString *)<em>productCategory</em> priceMicros:(int64_t)<em>priceMicros</em> quantity:(NSInteger)<em>quantity</em></code></div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection arguments-section parameters">
|
||||
<h4 class="method-subtitle parameter-title">Parameters</h4>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>productCode</em></dt>
|
||||
<dd><p>The item product code; must not be <code>nil</code> or empty.</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>productName</em></dt>
|
||||
<dd><p>The item product name; must not be <code>nil</code> or empty.</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>productCategory</em></dt>
|
||||
<dd><p>The item product category; may be <code>nil</code>.</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>priceMicros</em></dt>
|
||||
<dd><p>The item price, in micros (millionths of a currency unit).</p></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="argument-def parameter-def">
|
||||
<dt><em>quantity</em></dt>
|
||||
<dd><p>The item <a href="#//api/name/quantity">quantity</a>, as an NSInteger.</p></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection return">
|
||||
<h4 class="method-subtitle parameter-title">Return Value</h4>
|
||||
<p>The newly initialized item.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="method-subsection declared-in-section">
|
||||
<h4 class="method-subtitle">Declared In</h4>
|
||||
<code class="declared-in-ref">GAITransactionItem.h</code><br />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="main-navigation navigation-bottom">
|
||||
<ul>
|
||||
<li><a href="../index.html">Index</a></li>
|
||||
<li><a href="../hierarchy.html">Hierarchy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<hr />
|
||||
<div class="footer-copyright">
|
||||
<p><span class="copyright">© 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
|
||||
|
||||
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<script type="text/javascript">
|
||||
function jumpToChange()
|
||||
{
|
||||
window.location.hash = this.options[this.selectedIndex].value;
|
||||
}
|
||||
|
||||
function toggleTOC()
|
||||
{
|
||||
var contents = document.getElementById('contents');
|
||||
var tocContainer = document.getElementById('tocContainer');
|
||||
|
||||
if (this.getAttribute('class') == 'open')
|
||||
{
|
||||
this.setAttribute('class', '');
|
||||
contents.setAttribute('class', '');
|
||||
tocContainer.setAttribute('class', '');
|
||||
|
||||
window.name = "hideTOC";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setAttribute('class', 'open');
|
||||
contents.setAttribute('class', 'isShowingTOC');
|
||||
tocContainer.setAttribute('class', 'isShowingTOC');
|
||||
|
||||
window.name = "";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function toggleTOCEntryChildren(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
var currentClass = this.getAttribute('class');
|
||||
if (currentClass == 'children') {
|
||||
this.setAttribute('class', 'children open');
|
||||
}
|
||||
else if (currentClass == 'children open') {
|
||||
this.setAttribute('class', 'children');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function tocEntryClick(e)
|
||||
{
|
||||
e.stopPropagation();
|
||||
return true;
|
||||
}
|
||||
|
||||
function init()
|
||||
{
|
||||
var selectElement = document.getElementById('jumpTo');
|
||||
selectElement.addEventListener('change', jumpToChange, false);
|
||||
|
||||
var tocButton = document.getElementById('table_of_contents');
|
||||
tocButton.addEventListener('click', toggleTOC, false);
|
||||
|
||||
var taskTreeItem = document.getElementById('task_treeitem');
|
||||
if (taskTreeItem.getElementsByTagName('li').length > 0)
|
||||
{
|
||||
taskTreeItem.setAttribute('class', 'children');
|
||||
taskTreeItem.firstChild.setAttribute('class', 'disclosure');
|
||||
}
|
||||
|
||||
var tocList = document.getElementById('toc');
|
||||
|
||||
var tocEntries = tocList.getElementsByTagName('li');
|
||||
for (var i = 0; i < tocEntries.length; i++) {
|
||||
tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
|
||||
}
|
||||
|
||||
var tocLinks = tocList.getElementsByTagName('a');
|
||||
for (var i = 0; i < tocLinks.length; i++) {
|
||||
tocLinks[i].addEventListener('click', tocEntryClick, false);
|
||||
}
|
||||
|
||||
if (window.name == "hideTOC") {
|
||||
toggleTOC.call(tocButton);
|
||||
}
|
||||
}
|
||||
|
||||
window.onload = init;
|
||||
|
||||
// If showing in Xcode, hide the TOC and Header
|
||||
if (navigator.userAgent.match(/xcode/i)) {
|
||||
document.getElementById("contents").className = "hideInXcode"
|
||||
document.getElementById("tocContainer").className = "hideInXcode"
|
||||
document.getElementById("top_header").className = "hideInXcode"
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,588 +0,0 @@
|
|||
body {
|
||||
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: Courier, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: Courier, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
tab-interval: 0.5em;
|
||||
border: 1px solid #C7CFD5;
|
||||
background-color: #F1F5F9;
|
||||
color: #666;
|
||||
padding: 0.3em 1em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
a, a code {
|
||||
text-decoration: none;
|
||||
color: #36C;
|
||||
}
|
||||
|
||||
a:hover, a:hover code {
|
||||
text-decoration: underline;
|
||||
color: #36C;
|
||||
}
|
||||
|
||||
h2 {
|
||||
border-bottom: 1px solid #8391A8;
|
||||
color: #3C4C6C;
|
||||
font-size: 187%;
|
||||
font-weight: normal;
|
||||
margin-top: 1.75em;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-bottom: 4em;
|
||||
border-collapse:collapse;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
td {
|
||||
border: 1px solid #9BB3CD;
|
||||
padding: .667em;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
th {
|
||||
border: 1px solid #9BB3CD;
|
||||
padding: .3em .667em .3em .667em;
|
||||
background: #93A5BB;
|
||||
font-size: 103%;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* @group Common page elements */
|
||||
|
||||
#top_header {
|
||||
height: 91px;
|
||||
left: 0;
|
||||
min-width: 598px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: 900;
|
||||
}
|
||||
|
||||
#footer {
|
||||
clear: both;
|
||||
padding-top: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#contents, #overview_contents {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
border-top: 1px solid #2B334F;
|
||||
position: absolute;
|
||||
top: 91px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
padding-top: 1em;
|
||||
min-width: 550px;
|
||||
}
|
||||
|
||||
#contents.isShowingTOC {
|
||||
left: 230px;
|
||||
min-width: 320px;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.generator {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.main-navigation ul li {
|
||||
display: inline;
|
||||
margin-left: 15px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.navigation-top {
|
||||
clear: both;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.navigation-bottom {
|
||||
clear: both;
|
||||
float: right;
|
||||
margin-top: 20px;
|
||||
margin-bottom: -10px;
|
||||
}
|
||||
|
||||
.open > .disclosure {
|
||||
background-image: url("../img/disclosure_open.png");
|
||||
}
|
||||
|
||||
.disclosure {
|
||||
background: url("../img/disclosure.png") no-repeat scroll 0 0;
|
||||
}
|
||||
|
||||
.disclosure, .nodisclosure {
|
||||
display: inline-block;
|
||||
height: 8px;
|
||||
margin-right: 5px;
|
||||
position: relative;
|
||||
width: 9px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Header */
|
||||
|
||||
#top_header #library {
|
||||
background: url("../img/library_background.png") repeat-x 0 0 #485E78;
|
||||
background-color: #ccc;
|
||||
height: 35px;
|
||||
font-size: 115%;
|
||||
}
|
||||
|
||||
#top_header #library #libraryTitle {
|
||||
color: #FFFFFF;
|
||||
margin-left: 15px;
|
||||
text-shadow: 0 -1px 0 #485E78;
|
||||
top: 8px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#libraryTitle {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
#top_header #library #developerHome {
|
||||
color: #92979E;
|
||||
right: 15px;
|
||||
top: 8px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#top_header #library a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#top_header #title {
|
||||
background: url("../img/title_background.png") repeat-x 0 0 #8A98A9;
|
||||
border-bottom: 1px solid #B6B6B6;
|
||||
height: 25px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#top_header h1 {
|
||||
font-size: 115%;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding: 3px 0 2px;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #D5D5D5;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#headerButtons {
|
||||
background-color: #D8D8D8;
|
||||
background-image: url("../img/button_bar_background.png");
|
||||
border-bottom: 1px solid #EDEDED;
|
||||
border-top: 1px solid #2B334F;
|
||||
font-size: 8pt;
|
||||
height: 28px;
|
||||
left: 0;
|
||||
list-style: none outside none;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 61px;
|
||||
}
|
||||
|
||||
#headerButtons li {
|
||||
background-repeat: no-repeat;
|
||||
display: inline;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#toc_button button {
|
||||
border-color: #ACACAC;
|
||||
border-style: none solid none none;
|
||||
border-width: 0 1px 0 0;
|
||||
height: 28px;
|
||||
margin: 0;
|
||||
padding-left: 30px;
|
||||
text-align: left;
|
||||
width: 230px;
|
||||
}
|
||||
|
||||
li#jumpto_button {
|
||||
left: 230px;
|
||||
margin-left: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
li#jumpto_button select {
|
||||
height: 22px;
|
||||
margin: 5px 2px 0 10px;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Table of contents */
|
||||
|
||||
#tocContainer.isShowingTOC {
|
||||
border-right: 1px solid #ACACAC;
|
||||
display: block;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#tocContainer {
|
||||
background-color: #E4EBF7;
|
||||
border-top: 1px solid #2B334F;
|
||||
bottom: 0;
|
||||
display: none;
|
||||
left: 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 91px;
|
||||
width: 229px;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc {
|
||||
font-size: 11px;
|
||||
margin: 0;
|
||||
padding: 12px 0 18px;
|
||||
width: 209px;
|
||||
-moz-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li {
|
||||
margin: 0;
|
||||
padding: 0 0 7px 30px;
|
||||
text-indent: -15px;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > .sectionName a {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > .sectionName a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc li.children > ul {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
|
||||
margin-left: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li ul {
|
||||
list-style: none;
|
||||
margin-right: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc li.children.open > ul {
|
||||
display: block;
|
||||
height: auto;
|
||||
margin-left: -15px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
|
||||
margin-left: 0;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
#tocContainer li ul li {
|
||||
margin-top: 0.583em;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#tocContainer li ul li span.sectionName {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > ul > li > .sectionName a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#tocContainer > ul#toc > li > ul a {
|
||||
color: #4F4F4F;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Index formatting */
|
||||
|
||||
.index-title {
|
||||
font-size: 13px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.index-column {
|
||||
float: left;
|
||||
width: 30%;
|
||||
min-width: 200px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.index-column ul {
|
||||
margin: 8px 0 0 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.index-column ul li {
|
||||
margin: 0 0 3px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.hierarchy-column {
|
||||
min-width: 400px;
|
||||
}
|
||||
|
||||
.hierarchy-column ul {
|
||||
margin: 3px 0 0 15px;
|
||||
}
|
||||
|
||||
.hierarchy-column ul li {
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Common formatting elements */
|
||||
|
||||
.title {
|
||||
font-weight: normal;
|
||||
font-size: 215%;
|
||||
margin-top:0;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-weight: normal;
|
||||
font-size: 180%;
|
||||
color: #3C4C6C;
|
||||
border-bottom: 1px solid #5088C5;
|
||||
}
|
||||
|
||||
.subsubtitle {
|
||||
font-weight: normal;
|
||||
font-size: 145%;
|
||||
height: 0.7em;
|
||||
}
|
||||
|
||||
.note {
|
||||
border: 1px solid #5088C5;
|
||||
background-color: white;
|
||||
margin: 1.667em 0 1.75em 0;
|
||||
padding: 0 .667em .083em .750em;
|
||||
}
|
||||
|
||||
.warning {
|
||||
border: 1px solid #5088C5;
|
||||
background-color: #F0F3F7;
|
||||
margin-bottom: 0.5em;
|
||||
padding: 0.3em 0.8em;
|
||||
}
|
||||
|
||||
.bug {
|
||||
border: 1px solid #000;
|
||||
background-color: #ffffcc;
|
||||
margin-bottom: 0.5em;
|
||||
padding: 0.3em 0.8em;
|
||||
}
|
||||
|
||||
.deprecated {
|
||||
color: #F60425;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Common layout */
|
||||
|
||||
.section {
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Object specification section */
|
||||
|
||||
.section-specification {
|
||||
margin-left: 2.5em;
|
||||
margin-right: 2.5em;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.section-specification table {
|
||||
margin-bottom: 0em;
|
||||
border-top: 1px solid #d6e0e5;
|
||||
}
|
||||
|
||||
.section-specification td {
|
||||
vertical-align: top;
|
||||
border-bottom: 1px solid #d6e0e5;
|
||||
border-left-width: 0px;
|
||||
border-right-width: 0px;
|
||||
border-top-width: 0px;
|
||||
padding: .6em;
|
||||
}
|
||||
|
||||
.section-specification .specification-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Tasks section */
|
||||
|
||||
.task-list {
|
||||
list-style-type: none;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.task-list li {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.task-item-suffix {
|
||||
color: #996;
|
||||
font-size: 12px;
|
||||
font-style: italic;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
span.tooltip span.tooltip {
|
||||
font-size: 1.0em;
|
||||
display: none;
|
||||
padding: 0.3em;
|
||||
border: 1px solid #aaa;
|
||||
background-color: #fdfec8;
|
||||
color: #000;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
span.tooltip:hover span.tooltip {
|
||||
display: block;
|
||||
position: absolute;
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Method section */
|
||||
|
||||
.section-method {
|
||||
margin-top: 2.3em;
|
||||
}
|
||||
|
||||
.method-title {
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
.method-subtitle {
|
||||
margin-top: 0.7em;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
.method-subsection p {
|
||||
margin-top: 0.4em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
|
||||
.method-declaration {
|
||||
margin-top:1.182em;
|
||||
margin-bottom:.909em;
|
||||
}
|
||||
|
||||
.method-declaration code {
|
||||
font:14px Courier, Consolas, monospace;
|
||||
color:#000;
|
||||
}
|
||||
|
||||
.declaration {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.argument-def {
|
||||
margin-top: 0.3em;
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
|
||||
.argument-def dd {
|
||||
margin-left: 1.25em;
|
||||
}
|
||||
|
||||
.see-also-section ul {
|
||||
list-style-type: none;
|
||||
padding-left: 0px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.see-also-section li {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.declared-in-ref {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
#tocContainer.hideInXcode {
|
||||
display: none;
|
||||
border: 0px solid black;
|
||||
}
|
||||
|
||||
#top_header.hideInXcode {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#contents.hideInXcode {
|
||||
border: 0px solid black;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
|
||||
header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.main-navigation, div.navigation-top {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#overview_contents, div#contents.isShowingTOC, div#contents {
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
top: 0px;
|
||||
border: none;
|
||||
left: 0;
|
||||
}
|
||||
#tocContainer.isShowingTOC {
|
||||
display: none;
|
||||
}
|
||||
nav {
|
||||
display: none;
|
||||
}
|
|
@ -1,94 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Google Analytics SDK for iOS Hierarchy</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/styles.css" media="all" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="css/stylesPrint.css" />
|
||||
<meta name="generator" content="appledoc 2.1 (build 858)" />
|
||||
</head>
|
||||
<body>
|
||||
<header id="top_header">
|
||||
<div id="library" class="hideInXcode">
|
||||
<h1><a id="libraryTitle" href="index.html">Google Analytics SDK for iOS </a></h1>
|
||||
<a id="developerHome" href="index.html">Google Inc</a>
|
||||
</div>
|
||||
|
||||
<div id="title" role="banner">
|
||||
<h1 class="hideInXcode">Google Analytics SDK for iOS Hierarchy</h1>
|
||||
</div>
|
||||
<ul id="headerButtons" role="toolbar"></ul>
|
||||
</header>
|
||||
<article>
|
||||
<div id="overview_contents" role="main">
|
||||
<div class="main-navigation navigation-top">
|
||||
<a href="index.html">Previous</a>
|
||||
</div>
|
||||
<div id="header">
|
||||
<div class="section-header">
|
||||
<h1 class="title title-header">Google Analytics SDK for iOS Hierarchy</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
<div class="index-column hierarchy-column">
|
||||
<h2 class="index-title">Class Hierarchy</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>NSObject
|
||||
<ul>
|
||||
|
||||
<li><a href="Classes/GAI.html">GAI</a></li>
|
||||
|
||||
<li><a href="Classes/GAITransaction.html">GAITransaction</a></li>
|
||||
|
||||
<li><a href="Classes/GAITransactionItem.html">GAITransactionItem</a></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>UIViewController
|
||||
<ul>
|
||||
|
||||
<li><a href="Classes/GAITrackedViewController.html">GAITrackedViewController</a></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="index-column">
|
||||
|
||||
<h2 class="index-title">Protocol References</h2>
|
||||
<ul>
|
||||
|
||||
<li><a href="Protocols/GAITracker.html">GAITracker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="main-navigation navigation-bottom">
|
||||
<a href="index.html">Previous</a>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<hr />
|
||||
<div class="footer-copyright">
|
||||
<p><span class="copyright">© 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
|
||||
|
||||
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 95 B |
Before Width: | Height: | Size: 115 B |
Before Width: | Height: | Size: 131 B |
Before Width: | Height: | Size: 119 B |
Before Width: | Height: | Size: 101 B |
|
@ -1,84 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Google Analytics SDK for iOS Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/styles.css" media="all" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="css/stylesPrint.css" />
|
||||
<meta name="generator" content="appledoc 2.1 (build 858)" />
|
||||
</head>
|
||||
<body>
|
||||
<header id="top_header">
|
||||
<div id="library" class="hideInXcode">
|
||||
<h1><a id="libraryTitle" href="index.html">Google Analytics SDK for iOS </a></h1>
|
||||
<a id="developerHome" href="index.html">Google Inc</a>
|
||||
</div>
|
||||
|
||||
<div id="title" role="banner">
|
||||
<h1 class="hideInXcode">Google Analytics SDK for iOS Reference</h1>
|
||||
</div>
|
||||
<ul id="headerButtons" role="toolbar"></ul>
|
||||
</header>
|
||||
<article>
|
||||
<div id="overview_contents" role="main">
|
||||
<div class="main-navigation navigation-top">
|
||||
<a href="hierarchy.html">Next</a>
|
||||
</div>
|
||||
<div id="header">
|
||||
<div class="section-header">
|
||||
<h1 class="title title-header">Google Analytics SDK for iOS Reference</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="index-column">
|
||||
<h2 class="index-title">Class References</h2>
|
||||
<ul>
|
||||
|
||||
<li><a href="Classes/GAI.html">GAI</a></li>
|
||||
|
||||
<li><a href="Classes/GAITrackedViewController.html">GAITrackedViewController</a></li>
|
||||
|
||||
<li><a href="Classes/GAITransaction.html">GAITransaction</a></li>
|
||||
|
||||
<li><a href="Classes/GAITransactionItem.html">GAITransactionItem</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="index-column">
|
||||
|
||||
<h2 class="index-title">Protocol References</h2>
|
||||
<ul>
|
||||
|
||||
<li><a href="Protocols/GAITracker.html">GAITracker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="main-navigation navigation-bottom">
|
||||
<a href="hierarchy.html">Next</a>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<hr />
|
||||
<div class="footer-copyright">
|
||||
<p><span class="copyright">© 2013 Google Inc. All rights reserved. (Last updated: 2013-01-08)</span><br />
|
||||
|
||||
<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.1 (build 858)</a>.</span></p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +1,31 @@
|
|||
Google Analytics SDK for iOS Changelog
|
||||
|
||||
--------------------------------------------
|
||||
Version: 3.01 (September 2013)
|
||||
-------------------------------------------
|
||||
* Fixed link error when targeting iOS 7.0.
|
||||
|
||||
--------------------------------------------
|
||||
Version: 3.00 (August 2013)
|
||||
-------------------------------------------
|
||||
* SDK API change to align with analytics.js. The track<hittype> and
|
||||
send<hittype> methods have been removed. Use send and the
|
||||
GAIDictionaryBuilder construct methods instead.
|
||||
* Most properties on the GAITracker protocol have been removed. Use
|
||||
set on the various fields instead.
|
||||
* All parameters set using the set method will be persisted. Previously,
|
||||
several parameters would only be set for the next send/track call.
|
||||
* GAILogger protocol is available for those wanting to implement their
|
||||
own custom logging for the SDK.
|
||||
* Minimium system requirements have changed. See Readme.txt for details.
|
||||
* All SDK activity (database and network access) is now done on a separate
|
||||
thread.
|
||||
* Clientid can now be read. Call [tracker get:kGAIClientId]. Note that
|
||||
this call will block until the client id can be read from the database.
|
||||
* SDK no longer uses POST unless the hit is larger than 2000 bytes. It
|
||||
will use GET instead.
|
||||
* SDK will no longer retry sending hits based off the HTTP response code.
|
||||
|
||||
--------------------------------------------
|
||||
Version: 2.0beta4 Update (Jan 2013)
|
||||
--------------------------------------------
|
|
@ -0,0 +1,23 @@
|
|||
//
|
||||
// AppDelegate.h
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2012 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "GAI.h"
|
||||
|
||||
@class RootViewController;
|
||||
@class NavController;
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property(nonatomic, strong) UIWindow *window;
|
||||
@property(nonatomic, strong) NavController *navController;
|
||||
@property(nonatomic, strong) RootViewController *viewController;
|
||||
@property(nonatomic, strong) id<GAITracker> tracker;
|
||||
@property(nonatomic, strong) NSDictionary *images;
|
||||
|
||||
@end
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
/******* Set your tracking ID here *******/
|
||||
static NSString *const kTrackingId = @"UA-TRACKING-ID";
|
||||
static NSString *const kAllowTracking = @"allowTracking";
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
|
@ -19,51 +20,42 @@ static NSString *const kTrackingId = @"UA-TRACKING-ID";
|
|||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@synthesize window = window_;
|
||||
@synthesize navController = navController_;
|
||||
@synthesize viewController = viewController_;
|
||||
@synthesize tracker = tracker_;
|
||||
@synthesize images = images_;
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
[GAI sharedInstance].optOut =
|
||||
![[NSUserDefaults standardUserDefaults] boolForKey:kAllowTracking];
|
||||
}
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
self.images = [self loadImages];
|
||||
|
||||
NSDictionary *appDefaults = @{kAllowTracking: @(YES)};
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
|
||||
// User must be able to opt out of tracking
|
||||
[GAI sharedInstance].optOut =
|
||||
![[NSUserDefaults standardUserDefaults] boolForKey:kAllowTracking];
|
||||
// Initialize Google Analytics with a 120-second dispatch interval. There is a
|
||||
// tradeoff between battery usage and timely dispatch.
|
||||
[GAI sharedInstance].debug = YES;
|
||||
[GAI sharedInstance].dispatchInterval = 120;
|
||||
[GAI sharedInstance].trackUncaughtExceptions = YES;
|
||||
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kTrackingId];
|
||||
self.tracker = [[GAI sharedInstance] trackerWithName:@"CuteAnimals"
|
||||
trackingId:kTrackingId];
|
||||
|
||||
self.window =
|
||||
[[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]
|
||||
autorelease];
|
||||
[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||
// Override point for customization after application launch.
|
||||
self.viewController =
|
||||
[[[RootViewController alloc] initWithNibName:@"RootViewController"
|
||||
bundle:nil] autorelease];
|
||||
[[RootViewController alloc] initWithNibName:@"RootViewController"
|
||||
bundle:nil];
|
||||
|
||||
self.navController =
|
||||
[[[NavController alloc] initWithRootViewController:self.viewController]
|
||||
autorelease];
|
||||
[[NavController alloc] initWithRootViewController:self.viewController];
|
||||
self.navController.delegate = self.navController;
|
||||
|
||||
self.viewController.navController = self.navController;
|
||||
self.window.rootViewController = self.navController;
|
||||
[self.window makeKeyAndVisible];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[tracker_ release];
|
||||
[viewController_ release];
|
||||
[navController_ release];
|
||||
[window_ release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSDictionary *)loadImages {
|
||||
NSArray *contents = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg"
|
||||
|
@ -72,7 +64,7 @@ static NSString *const kTrackingId = @"UA-TRACKING-ID";
|
|||
NSLog(@"Failed to load directory contents");
|
||||
return nil;
|
||||
}
|
||||
NSMutableDictionary *images = [NSMutableDictionary dictionaryWithCapacity:0];
|
||||
NSMutableDictionary *images = [NSMutableDictionary dictionary];
|
||||
for (NSString *file in contents) {
|
||||
NSArray *components = [[file lastPathComponent]
|
||||
componentsSeparatedByString:@"-"];
|
||||
|
@ -85,17 +77,16 @@ static NSString *const kTrackingId = @"UA-TRACKING-ID";
|
|||
NSLog(@"Failed to load file: %@", file);
|
||||
continue;
|
||||
}
|
||||
NSString *prefix = [components objectAtIndex:0];
|
||||
NSMutableArray *categoryImages = [images objectForKey:prefix];
|
||||
NSString *prefix = components[0];
|
||||
NSMutableArray *categoryImages = images[prefix];
|
||||
if (!categoryImages) {
|
||||
categoryImages = [NSMutableArray arrayWithCapacity:0];
|
||||
[images setObject:categoryImages
|
||||
forKey:prefix];
|
||||
categoryImages = [NSMutableArray array];
|
||||
images[prefix] = categoryImages;
|
||||
}
|
||||
[categoryImages addObject:image];
|
||||
}
|
||||
for (NSString *cat in [images allKeys]) {
|
||||
NSArray *array = [images objectForKey:cat];
|
||||
NSArray *array = images[cat];
|
||||
NSLog(@"Category %@: %u image(s).", cat, array.count);
|
||||
}
|
||||
return images;
|
|
@ -12,9 +12,8 @@
|
|||
@interface CategoryViewController :
|
||||
GAITrackedViewController<UITableViewDelegate, UITableViewDataSource>
|
||||
|
||||
@property(nonatomic, retain) NSString *category;
|
||||
@property(nonatomic, retain) NavController *navController;
|
||||
@property(nonatomic, retain) IBOutlet UITableView *tableView;
|
||||
@property(nonatomic, strong) NSString *category;
|
||||
@property(nonatomic, strong) IBOutlet UITableView *tableView;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibName
|
||||
bundle:(NSBundle *)nibBundle
|
|
@ -13,44 +13,31 @@
|
|||
|
||||
@interface CategoryViewController ()
|
||||
|
||||
@property(nonatomic, retain) NSMutableArray *items;
|
||||
@property(nonatomic, assign) AppDelegate *delegate;
|
||||
@property(nonatomic, strong) NSMutableArray *items;
|
||||
@property(nonatomic, weak) AppDelegate *delegate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CategoryViewController
|
||||
|
||||
@synthesize category = category_;
|
||||
@synthesize navController = navController_;
|
||||
@synthesize tableView = tableView_;
|
||||
@synthesize items = items_;
|
||||
@synthesize delegate = delegate_;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibName
|
||||
bundle:(NSBundle *)nibBundle
|
||||
category:(NSString *)category {
|
||||
self = [super initWithNibName:nibName
|
||||
bundle:nibBundle];
|
||||
if (self) {
|
||||
self.category = category;
|
||||
self.trackedViewName = category;
|
||||
_category = category;
|
||||
_delegate = [UIApplication sharedApplication].delegate;
|
||||
self.title = [NSString stringWithFormat:@"Cute %@s", category];
|
||||
self.delegate = [UIApplication sharedApplication].delegate;
|
||||
self.screenName = category;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[category_ release];
|
||||
[navController_ release];
|
||||
[tableView_ release];
|
||||
[items_ release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.items = [self.delegate.images objectForKey:self.category];
|
||||
self.items = (self.delegate.images)[self.category];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:
|
||||
|
@ -74,14 +61,14 @@
|
|||
}
|
||||
NSString *title =
|
||||
[NSString stringWithFormat:@"%@ %d", self.category, indexPath.row];
|
||||
UIImage *image = [self.items objectAtIndex:indexPath.row];
|
||||
UIImage *image = (self.items)[indexPath.row];
|
||||
ImageViewController *imageViewController =
|
||||
[[[ImageViewController alloc] initWithNibName:nil
|
||||
[[ImageViewController alloc] initWithNibName:nil
|
||||
bundle:nil
|
||||
title:title
|
||||
image:image] autorelease];
|
||||
[imageViewController.view addSubview:imageViewController.imageView];
|
||||
[self.navController pushViewController:imageViewController animated:YES];
|
||||
image:image];
|
||||
[self.delegate.navController pushViewController:imageViewController
|
||||
animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark UITableViewDataSource methods
|
||||
|
@ -101,17 +88,17 @@
|
|||
static NSString *CellId = @"Cell";
|
||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
|
||||
if (!cell) {
|
||||
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
|
||||
reuseIdentifier:CellId] autorelease];
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
|
||||
reuseIdentifier:CellId];
|
||||
cell.textLabel.font = [UIFont systemFontOfSize:14];
|
||||
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
|
||||
}
|
||||
|
||||
cell.textLabel.text = [NSString stringWithFormat:@"%@ %d",
|
||||
self.category, indexPath.row];
|
||||
cell.textLabel.font = [UIFont systemFontOfSize:14];
|
||||
UIImage *image = [self.items objectAtIndex:indexPath.row];
|
||||
UIImage *image = (self.items)[indexPath.row];
|
||||
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d x %d",
|
||||
(int)image.size.width, (int)image.size.height];
|
||||
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
|
||||
return cell;
|
||||
}
|
||||
|
|
@ -18,7 +18,6 @@
|
|||
113B6F16153E1F99003CAC38 /* CategoryViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */; };
|
||||
113B6F2B153E208D003CAC38 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6F2A153E208D003CAC38 /* CoreData.framework */; };
|
||||
115686561593CE6A00A5D031 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 115686551593CE6A00A5D031 /* SystemConfiguration.framework */; };
|
||||
11BC54011577E1F000E7D657 /* libGoogleAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11BC53FF1577E1E000E7D657 /* libGoogleAnalytics.a */; };
|
||||
11FCCC1F1561834700949704 /* CategoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11FCCC1C1561834700949704 /* CategoryViewController.m */; };
|
||||
11FCCC201561834700949704 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11FCCC1E1561834700949704 /* ImageViewController.m */; };
|
||||
11FCCC34156189A600949704 /* Bunny-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC22156189A600949704 /* Bunny-1.jpg */; };
|
||||
|
@ -39,6 +38,8 @@
|
|||
11FCCC43156189A600949704 /* Monkey-5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC31156189A600949704 /* Monkey-5.jpg */; };
|
||||
11FCCC44156189A600949704 /* Tiger-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC32156189A600949704 /* Tiger-1.jpg */; };
|
||||
11FCCC45156189A600949704 /* Tiger-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC33156189A600949704 /* Tiger-2.jpg */; };
|
||||
88679A8E17A184FA00F476D5 /* libGoogleAnalyticsServices.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 88679A8D17A184FA00F476D5 /* libGoogleAnalyticsServices.a */; };
|
||||
F7C47F21178B5B56003A7D0F /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F7C47F20178B5B55003A7D0F /* Settings.bundle */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
|
@ -59,12 +60,9 @@
|
|||
113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoryViewController_iPhone.xib; sourceTree = SOURCE_ROOT; };
|
||||
113B6F2A153E208D003CAC38 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
|
||||
115686551593CE6A00A5D031 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||
11BC53FF1577E1E000E7D657 /* libGoogleAnalytics.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAnalytics.a; path = ../../Library/libGoogleAnalytics.a; sourceTree = "<group>"; };
|
||||
11BC54021577E24400E7D657 /* GAI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAI.h; path = ../../Library/GAI.h; sourceTree = "<group>"; };
|
||||
11BC54031577E24500E7D657 /* GAITrackedViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITrackedViewController.h; path = ../../Library/GAITrackedViewController.h; sourceTree = "<group>"; };
|
||||
11BC54041577E24500E7D657 /* GAITracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITracker.h; path = ../../Library/GAITracker.h; sourceTree = "<group>"; };
|
||||
11BC54051577E24500E7D657 /* GAITransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITransaction.h; path = ../../Library/GAITransaction.h; sourceTree = "<group>"; };
|
||||
11BC54061577E24500E7D657 /* GAITransactionItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAITransactionItem.h; path = ../../Library/GAITransactionItem.h; sourceTree = "<group>"; };
|
||||
11FCCC1B1561834700949704 /* CategoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CategoryViewController.h; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC1C1561834700949704 /* CategoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CategoryViewController.m; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC1D1561834700949704 /* ImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageViewController.h; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -87,6 +85,11 @@
|
|||
11FCCC31156189A600949704 /* Monkey-5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-5.jpg"; path = "Images/Monkey-5.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC32156189A600949704 /* Tiger-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Tiger-1.jpg"; path = "Images/Tiger-1.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC33156189A600949704 /* Tiger-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Tiger-2.jpg"; path = "Images/Tiger-2.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
88679A8D17A184FA00F476D5 /* libGoogleAnalyticsServices.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAnalyticsServices.a; path = ../../../../libGoogleAnalyticsServices.a; sourceTree = "<group>"; };
|
||||
F707E732174D7550008123BF /* GAIDictionaryBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GAIDictionaryBuilder.h; path = ../../Library/GAIDictionaryBuilder.h; sourceTree = "<group>"; };
|
||||
F707E733174D7550008123BF /* GAIFields.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GAIFields.h; path = ../../Library/GAIFields.h; sourceTree = "<group>"; };
|
||||
F707E734174D7550008123BF /* GAILogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GAILogger.h; path = ../../Library/GAILogger.h; sourceTree = "<group>"; };
|
||||
F7C47F20178B5B55003A7D0F /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = SOURCE_ROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -98,7 +101,7 @@
|
|||
113B6F2B153E208D003CAC38 /* CoreData.framework in Frameworks */,
|
||||
113B6EE8153E1F0B003CAC38 /* UIKit.framework in Frameworks */,
|
||||
113B6EEA153E1F0B003CAC38 /* Foundation.framework in Frameworks */,
|
||||
11BC54011577E1F000E7D657 /* libGoogleAnalytics.a in Frameworks */,
|
||||
88679A8E17A184FA00F476D5 /* libGoogleAnalyticsServices.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -160,6 +163,7 @@
|
|||
113B6EEE153E1F0B003CAC38 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F7C47F20178B5B55003A7D0F /* Settings.bundle */,
|
||||
11FCCC211561899800949704 /* Images */,
|
||||
113B6EEF153E1F0B003CAC38 /* CuteAnimals-Info.plist */,
|
||||
113B6EF5153E1F0B003CAC38 /* CuteAnimals-Prefix.pch */,
|
||||
|
@ -170,12 +174,13 @@
|
|||
113B6F1E153E1FAD003CAC38 /* Google Analytics Library */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
88679A8D17A184FA00F476D5 /* libGoogleAnalyticsServices.a */,
|
||||
F707E732174D7550008123BF /* GAIDictionaryBuilder.h */,
|
||||
F707E733174D7550008123BF /* GAIFields.h */,
|
||||
F707E734174D7550008123BF /* GAILogger.h */,
|
||||
11BC54021577E24400E7D657 /* GAI.h */,
|
||||
11BC54031577E24500E7D657 /* GAITrackedViewController.h */,
|
||||
11BC54041577E24500E7D657 /* GAITracker.h */,
|
||||
11BC54051577E24500E7D657 /* GAITransaction.h */,
|
||||
11BC54061577E24500E7D657 /* GAITransactionItem.h */,
|
||||
11BC53FF1577E1E000E7D657 /* libGoogleAnalytics.a */,
|
||||
);
|
||||
name = "Google Analytics Library";
|
||||
sourceTree = "<group>";
|
||||
|
@ -231,7 +236,7 @@
|
|||
113B6EDA153E1F0B003CAC38 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0430;
|
||||
LastUpgradeCheck = 0460;
|
||||
};
|
||||
buildConfigurationList = 113B6EDD153E1F0B003CAC38 /* Build configuration list for PBXProject "CuteAnimals" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
|
@ -276,6 +281,7 @@
|
|||
11FCCC43156189A600949704 /* Monkey-5.jpg in Resources */,
|
||||
11FCCC44156189A600949704 /* Tiger-1.jpg in Resources */,
|
||||
11FCCC45156189A600949704 /* Tiger-2.jpg in Resources */,
|
||||
F7C47F21178B5B56003A7D0F /* Settings.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -303,6 +309,10 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
|
@ -328,6 +338,10 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
|
@ -346,6 +360,7 @@
|
|||
113B6EFC153E1F0B003CAC38 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CuteAnimals-Prefix.pch";
|
||||
INFOPLIST_FILE = "CuteAnimals-Info.plist";
|
||||
|
@ -353,6 +368,7 @@
|
|||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../Library\"",
|
||||
"\"$(SRCROOT)/../../..\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
|
@ -362,6 +378,7 @@
|
|||
113B6EFD153E1F0B003CAC38 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CuteAnimals-Prefix.pch";
|
||||
INFOPLIST_FILE = "CuteAnimals-Info.plist";
|
||||
|
@ -369,6 +386,7 @@
|
|||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../Library\"",
|
||||
"\"$(SRCROOT)/../../..\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
|
@ -12,9 +12,6 @@
|
|||
|
||||
@interface ImageViewController : GAITrackedViewController
|
||||
|
||||
@property(nonatomic, retain) NavController *navController;
|
||||
@property(nonatomic, retain) UIImageView *imageView;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
title:(NSString *)title
|
|
@ -9,10 +9,13 @@
|
|||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@implementation ImageViewController
|
||||
@interface ImageViewController ()
|
||||
|
||||
@synthesize imageView = imageView_;
|
||||
@synthesize navController = navController_;
|
||||
@property(nonatomic, strong) UIImage *image;
|
||||
|
||||
@end
|
||||
|
||||
@implementation ImageViewController
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
|
@ -21,19 +24,18 @@
|
|||
self = [super initWithNibName:nibNameOrNil
|
||||
bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
self.title = self.trackedViewName = title;
|
||||
self.imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
|
||||
self.imageView.userInteractionEnabled = YES;
|
||||
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
_image = image;
|
||||
self.title = self.screenName = title;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[imageView_ release];
|
||||
[navController_ release];
|
||||
[super dealloc];
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
UIImageView *imageView = [[UIImageView alloc] initWithImage:self.image];
|
||||
imageView.userInteractionEnabled = YES;
|
||||
imageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
[self.view addSubview:imageView];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
|
@ -10,7 +10,6 @@
|
|||
@interface RootViewController :
|
||||
GAITrackedViewController<UITableViewDelegate, UITableViewDataSource>
|
||||
|
||||
@property(nonatomic, retain) NavController *navController;
|
||||
@property(nonatomic, retain) IBOutlet UITableView *tableView;
|
||||
@property(nonatomic, strong) IBOutlet UITableView *tableView;
|
||||
|
||||
@end
|
|
@ -11,59 +11,38 @@
|
|||
#import "ImageViewController.h"
|
||||
|
||||
#import "GAI.h"
|
||||
#import "GAIDictionaryBuilder.h"
|
||||
|
||||
@interface RootViewController ()
|
||||
|
||||
@property(nonatomic, retain) NSArray *items;
|
||||
@property(nonatomic, assign) AppDelegate *delegate;
|
||||
@property(nonatomic, strong) NSArray *items;
|
||||
@property(nonatomic, weak) AppDelegate *delegate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation RootViewController
|
||||
|
||||
@synthesize tableView = tableView_;
|
||||
@synthesize navController = navController_;
|
||||
@synthesize items = items_;
|
||||
@synthesize delegate = delegate_;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibName
|
||||
bundle:(NSBundle *)nibBundle {
|
||||
self = [super initWithNibName:nibName
|
||||
bundle:nibBundle];
|
||||
if (self) {
|
||||
self.trackedViewName = @"root";
|
||||
_delegate = [UIApplication sharedApplication].delegate;
|
||||
self.title = @"Cute Animals";
|
||||
self.delegate = [UIApplication sharedApplication].delegate;
|
||||
[self updateSecureButton];
|
||||
self.screenName = @"root";
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[tableView_ release];
|
||||
[navController_ release];
|
||||
[items_ release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)updateSecureButton {
|
||||
if ([GAI sharedInstance].defaultTracker.useHttps) {
|
||||
self.navigationItem.leftBarButtonItem.title = @"HTTPS";
|
||||
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;
|
||||
} else {
|
||||
self.navigationItem.leftBarButtonItem.title = @"HTTP";
|
||||
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleBordered;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)toggleSecure {
|
||||
[GAI sharedInstance].defaultTracker.useHttps =
|
||||
![GAI sharedInstance].defaultTracker.useHttps;
|
||||
[self updateSecureButton];
|
||||
[[GAI sharedInstance].defaultTracker sendEventWithCategory:@"secureDispatch"
|
||||
withAction:@"toggle"
|
||||
withLabel:nil
|
||||
withValue:nil];
|
||||
- (void)dispatch {
|
||||
NSMutableDictionary *event =
|
||||
[[GAIDictionaryBuilder createEventWithCategory:@"UI"
|
||||
action:@"buttonPress"
|
||||
label:@"dispatch"
|
||||
value:nil] build];
|
||||
[[GAI sharedInstance].defaultTracker send:event];
|
||||
[[GAI sharedInstance] dispatch];
|
||||
}
|
||||
|
||||
- (void)crash {
|
||||
|
@ -74,17 +53,15 @@
|
|||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.navigationItem.leftBarButtonItem =
|
||||
[[[UIBarButtonItem alloc]
|
||||
initWithTitle:@"HTTP"
|
||||
[[UIBarButtonItem alloc] initWithTitle:@"Dispatch"
|
||||
style:UIBarButtonItemStyleBordered
|
||||
target:self
|
||||
action:@selector(toggleSecure)] autorelease];
|
||||
action:@selector(dispatch)];
|
||||
self.navigationItem.rightBarButtonItem =
|
||||
[[[UIBarButtonItem alloc]
|
||||
initWithTitle:@"Crash"
|
||||
[[UIBarButtonItem alloc] initWithTitle:@"Crash"
|
||||
style:UIBarButtonItemStyleBordered
|
||||
target:self
|
||||
action:@selector(crash)] autorelease];
|
||||
action:@selector(crash)];
|
||||
self.items =
|
||||
[[self.delegate.images allKeys]
|
||||
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
|
||||
|
@ -106,16 +83,16 @@
|
|||
return;
|
||||
}
|
||||
|
||||
NSString *category = [self.items objectAtIndex:indexPath.row];
|
||||
NSString *category = (self.items)[indexPath.row];
|
||||
NSString *nib = ([[UIDevice currentDevice] userInterfaceIdiom] ==
|
||||
UIUserInterfaceIdiomPhone) ? @"CategoryViewController_iPhone" :
|
||||
@"CategoryViewController_iPad";
|
||||
CategoryViewController *categoryController =
|
||||
[[[CategoryViewController alloc] initWithNibName:nib
|
||||
[[CategoryViewController alloc] initWithNibName:nib
|
||||
bundle:nil
|
||||
category:category] autorelease];
|
||||
categoryController.navController = self.navController;
|
||||
[self.navController pushViewController:categoryController animated:YES];
|
||||
category:category];
|
||||
[self.delegate.navController pushViewController:categoryController
|
||||
animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark UITableViewDataSource methods
|
||||
|
@ -131,23 +108,22 @@
|
|||
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
|
||||
return nil;
|
||||
}
|
||||
NSString *category = [self.items objectAtIndex:indexPath.row];
|
||||
NSString *category = (self.items)[indexPath.row];
|
||||
|
||||
static NSString *CellId = @"Cell";
|
||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
|
||||
if (!cell) {
|
||||
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
|
||||
reuseIdentifier:CellId] autorelease];
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
|
||||
reuseIdentifier:CellId];
|
||||
cell.textLabel.font = [UIFont systemFontOfSize:14];
|
||||
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
|
||||
}
|
||||
|
||||
NSString *label = [NSString stringWithFormat:@"Cute %@ Pictures!", category];
|
||||
cell.textLabel.text = label;
|
||||
cell.textLabel.font = [UIFont systemFontOfSize:14];
|
||||
NSUInteger imageCount =
|
||||
[(NSArray *)[self.delegate.images objectForKey:category] count];
|
||||
NSUInteger imageCount = [(self.delegate.images)[category] count];
|
||||
cell.detailTextLabel.text = [NSString stringWithFormat:@"%u image(s).",
|
||||
imageCount];
|
||||
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
|
||||
return cell;
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?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>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>DefaultValue</key>
|
||||
<true/>
|
||||
<key>Key</key>
|
||||
<string>allowTracking</string>
|
||||
<key>Title</key>
|
||||
<string>Allow analytics</string>
|
||||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Root</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,11 +1,12 @@
|
|||
/*!
|
||||
@header GAI.h
|
||||
@abstract Google Analytics iOS SDK Header
|
||||
@version 2.0
|
||||
@copyright Copyright 2011 Google Inc. All rights reserved.
|
||||
@version 3.0
|
||||
@copyright Copyright 2013 Google Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "GAILogger.h"
|
||||
#import "GAITracker.h"
|
||||
#import "GAITrackedViewController.h"
|
||||
|
||||
|
@ -49,11 +50,9 @@ typedef enum {
|
|||
@property(nonatomic, assign) id<GAITracker> defaultTracker;
|
||||
|
||||
/*!
|
||||
If true, Google Analytics debug messages will be logged with `NSLog()`. This is
|
||||
useful for debugging calls to the Google Analytics SDK.
|
||||
|
||||
By default, this flag is set to `NO`. */
|
||||
@property(nonatomic, assign) BOOL debug;
|
||||
The GAILogger to use.
|
||||
*/
|
||||
@property(nonatomic, retain) id<GAILogger> logger;
|
||||
|
||||
/*!
|
||||
When this is true, no tracking information will be gathered; tracking calls
|
||||
|
@ -69,14 +68,9 @@ typedef enum {
|
|||
@property(nonatomic, assign) BOOL optOut;
|
||||
|
||||
/*!
|
||||
If this value is negative, tracking information must be sent manually by
|
||||
calling dispatch. If this value is zero, tracking information will
|
||||
automatically be sent as soon as possible (usually immediately if the device
|
||||
has Internet connectivity). If this value is positive, tracking information
|
||||
will be automatically dispatched every dispatchInterval seconds.
|
||||
|
||||
When the dispatchInterval is non-zero, setting it to zero will cause any queued
|
||||
tracking information to be sent immediately.
|
||||
If this value is positive, tracking information will be automatically
|
||||
dispatched every dispatchInterval seconds. Otherwise, tracking information must
|
||||
be sent manually by calling dispatch.
|
||||
|
||||
By default, this is set to `120`, which indicates tracking information should
|
||||
be dispatched automatically every 120 seconds.
|
||||
|
@ -94,31 +88,72 @@ typedef enum {
|
|||
*/
|
||||
@property(nonatomic, assign) BOOL trackUncaughtExceptions;
|
||||
|
||||
/*!
|
||||
When this is 'YES', no tracking information will be sent. Defaults to 'NO'.
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL dryRun;
|
||||
|
||||
/*! Get the shared instance of the Google Analytics for iOS class. */
|
||||
+ (GAI *)sharedInstance;
|
||||
|
||||
/*!
|
||||
Create or retrieve a GAITracker implementation with the specified tracking
|
||||
ID. If the tracker for the specified tracking ID does not already exist, then
|
||||
Creates or retrieves a GAITracker implementation with the specified name and
|
||||
tracking ID. If the tracker for the specified name does not already exist, then
|
||||
it will be created and returned; otherwise, the existing tracker will be
|
||||
returned. If defaultTracker is not set, it will be set to the tracker instance
|
||||
returned here.
|
||||
returned. If the existing tracker for the respective name has a different
|
||||
tracking ID, that tracking ID is not changed by this method. If defaultTracker
|
||||
is not set, it will be set to the tracker instance returned here.
|
||||
|
||||
@param trackingId The tracking ID (a string that begins with "UA-"). Must not
|
||||
be `nil` or empty.
|
||||
@param name The name of this tracker. Must not be `nil` or empty.
|
||||
|
||||
@return A GAITracker associated with the specified tracking ID. The tracker
|
||||
@param trackingID The tracking ID to use for this tracker. It should be of
|
||||
the form `UA-xxxxx-y`.
|
||||
|
||||
@return A GAITracker associated with the specified name. The tracker
|
||||
can be used to send tracking data to Google Analytics. The first time this
|
||||
method is called with a particular tracking ID, the tracker for that tracking
|
||||
ID will be returned, and subsequent calls with the same tracking ID will return
|
||||
the same instance. It is not necessary to retain the tracker because the
|
||||
tracker will be retained internally by the library.
|
||||
method is called with a particular name, the tracker for that name will be
|
||||
returned, and subsequent calls with the same name will return the same
|
||||
instance. It is not necessary to retain the tracker because the tracker will be
|
||||
retained internally by the library.
|
||||
|
||||
If an error occurs or the tracker ID is not valid, this method will return
|
||||
If an error occurs or the name is not valid, this method will return
|
||||
`nil`.
|
||||
*/
|
||||
- (id<GAITracker>)trackerWithName:(NSString *)name
|
||||
trackingId:(NSString *)trackingId;
|
||||
|
||||
/*!
|
||||
Creates or retrieves a GAITracker implementation with name equal to
|
||||
the specified tracking ID. If the tracker for the respective name does not
|
||||
already exist, it is created, has it's tracking ID set to |trackingId|,
|
||||
and is returned; otherwise, the existing tracker is returned. If the existing
|
||||
tracker for the respective name has a different tracking ID, that tracking ID
|
||||
is not changed by this method. If defaultTracker is not set, it is set to the
|
||||
tracker instance returned here.
|
||||
|
||||
@param trackingID The tracking ID to use for this tracker. It should be of
|
||||
the form `UA-xxxxx-y`. The name of the tracker will be the same as trackingID.
|
||||
|
||||
@return A GAITracker associated with the specified trackingID. The tracker
|
||||
can be used to send tracking data to Google Analytics. The first time this
|
||||
method is called with a particular trackingID, the tracker for the respective
|
||||
name will be returned, and subsequent calls with the same trackingID
|
||||
will return the same instance. It is not necessary to retain the tracker
|
||||
because the tracker will be retained internally by the library.
|
||||
|
||||
If an error occurs or the trackingId is not valid, this method will return
|
||||
`nil`.
|
||||
*/
|
||||
- (id<GAITracker>)trackerWithTrackingId:(NSString *)trackingId;
|
||||
|
||||
/*!
|
||||
Remove a tracker from the trackers dictionary. If it is the default tracker,
|
||||
clears the default tracker as well.
|
||||
|
||||
@param name The name of the tracker.
|
||||
*/
|
||||
- (void)removeTrackerByName:(NSString *)name;
|
||||
|
||||
/*!
|
||||
Dispatches any pending tracking information.
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
/*!
|
||||
@header GAIDictionaryBuilder.h
|
||||
@abstract Google Analytics iOS SDK Hit Format Header
|
||||
@copyright Copyright 2013 Google Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/*!
|
||||
* Helper class to build a dictionary of hit parameters and values.
|
||||
* <br>
|
||||
* Examples:
|
||||
* <code>
|
||||
* id<GAITracker> t = // get a tracker.
|
||||
* [t send:[[GAIDictionaryBuilder createEventWithCategory:@"EventCategory"
|
||||
* action:@"EventAction"
|
||||
* label:nil
|
||||
* value:nil]
|
||||
* set:@"dimension1" forKey:[GAIFields CustomDimension:1] build]];
|
||||
* </code>
|
||||
* This will send an event hit type with the specified parameters
|
||||
* and a custom dimension parameter.
|
||||
* <br>
|
||||
* If you want to send a parameter with all hits, set it on GAITracker directly.
|
||||
* <code>
|
||||
* [t set:kGAIScreenName value:@"Home"];
|
||||
* [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
|
||||
* action:@"PlusOne"
|
||||
* target:@"SOME_URL"] build]];
|
||||
* [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
|
||||
* action:@"Share"
|
||||
* target:@"SOME_POST"] build]];
|
||||
* [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
|
||||
* action:@"HangOut"
|
||||
* target:@"SOME_CIRCLE"]
|
||||
* build]];
|
||||
* </code>
|
||||
* You can override a value set on the tracker by adding it to the dictionary.
|
||||
* <code>
|
||||
* [t set:kGAIScreenName value:@"Home"];
|
||||
* [t send:...];
|
||||
* [t send[[[GAIDictionaryBuilder createEventWithCategory:@"click"
|
||||
* action:@"popup"
|
||||
* label:nil
|
||||
* value:nil]
|
||||
* set:@"popup title" forKey:kGAIScreenName] build]];
|
||||
* </code>
|
||||
* The values set via [GAIDictionaryBuilder set] or
|
||||
* [GAIDictionaryBuilder setAll] will override any existing values in the
|
||||
* GAIDictionaryBuilder object (i.e. initialized by
|
||||
* [GAIDictionaryBuilder createXYZ]). e.g.
|
||||
* <code>
|
||||
* GAIDictionaryBuilder *m =
|
||||
* GAIDictionaryBuilder createTimingWithCategory:@"category"
|
||||
* interval:@0
|
||||
* name:@"name"
|
||||
* label:nil];
|
||||
* [t send:[m.set:@"10" forKey:kGAITimingVar] build];
|
||||
* [t send:[m.set:@"20" forKey:kGAITimingVar] build];
|
||||
* </code>
|
||||
*/
|
||||
@interface GAIDictionaryBuilder : NSObject
|
||||
|
||||
- (GAIDictionaryBuilder *)set:(NSString *)value
|
||||
forKey:(NSString *)key;
|
||||
|
||||
/*!
|
||||
* Copies all the name-value pairs from params into this object, ignoring any
|
||||
* keys that are not NSString and any values that are neither NSString or
|
||||
* NSNull.
|
||||
*/
|
||||
- (GAIDictionaryBuilder *)setAll:(NSDictionary *)params;
|
||||
|
||||
/*!
|
||||
* Returns the value for the input parameter paramName, or nil if paramName
|
||||
* is not present.
|
||||
*/
|
||||
- (NSString *)get:(NSString *)paramName;
|
||||
|
||||
/*!
|
||||
* Return an NSMutableDictionary object with all the parameters set in this
|
||||
*/
|
||||
- (NSMutableDictionary *)build;
|
||||
|
||||
/*!
|
||||
* Parses and translates utm campaign parameters to analytics campaign param
|
||||
* and returns them as a map.
|
||||
*
|
||||
* @param params url containing utm campaign parameters.
|
||||
*
|
||||
* Valid campaign parameters are:
|
||||
* <ul>
|
||||
* <li>utm_id</li>
|
||||
* <li>utm_campaign</li>
|
||||
* <li>utm_content</li>
|
||||
* <li>utm_medium</li>
|
||||
* <li>utm_source</li>
|
||||
* <li>utm_term</li>
|
||||
* <li>dclid</li>
|
||||
* <li>gclid</li>
|
||||
* <li>gmob_t</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* Example:
|
||||
* http://my.site.com/index.html?utm_campaign=wow&utm_source=source
|
||||
* utm_campaign=wow&utm_source=source.
|
||||
* <p>
|
||||
* For more information on auto-tagging, see
|
||||
* http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55590
|
||||
* <p>
|
||||
* For more information on manual tagging, see
|
||||
* http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55518
|
||||
*/
|
||||
- (GAIDictionaryBuilder *)setCampaignParametersFromUrl:(NSString *)urlString;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to an appview
|
||||
hit.
|
||||
|
||||
Note that using this method will not set the screen name for followon hits. To
|
||||
do that you need to call set:kGAIDescription value:<screenName> on the
|
||||
GAITracker instance.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createAppView;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to an event hit.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createEventWithCategory:(NSString *)category
|
||||
action:(NSString *)action
|
||||
label:(NSString *)label
|
||||
value:(NSNumber *)value;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to an exception
|
||||
hit.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createExceptionWithDescription:(NSString *)description
|
||||
withFatal:(NSNumber *)fatal;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to an item hit.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createItemWithTransactionId:(NSString *)transactionId
|
||||
name:(NSString *)name
|
||||
sku:(NSString *)sku
|
||||
category:(NSString *)category
|
||||
price:(NSNumber *)price
|
||||
quantity:(NSNumber *)quantity
|
||||
currencyCode:(NSString *)currencyCode;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to a social hit.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createSocialWithNetwork:(NSString *)network
|
||||
action:(NSString *)action
|
||||
target:(NSString *)target;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to a timing hit.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createTimingWithCategory:(NSString *)category
|
||||
interval:(NSNumber *)intervalMillis
|
||||
name:(NSString *)name
|
||||
label:(NSString *)label;
|
||||
|
||||
/*!
|
||||
Returns a GAIDictionaryBuilder object with parameters specific to a transaction
|
||||
hit.
|
||||
*/
|
||||
+ (GAIDictionaryBuilder *)createTransactionWithId:(NSString *)transactionId
|
||||
affiliation:(NSString *)affiliation
|
||||
revenue:(NSNumber *)revenue
|
||||
tax:(NSNumber *)tax
|
||||
shipping:(NSNumber *)shipping
|
||||
currencyCode:(NSString *)currencyCode;
|
||||
|
||||
@end
|
|
@ -0,0 +1,123 @@
|
|||
/*!
|
||||
@header GAIFields.h
|
||||
@abstract Google Analytics iOS SDK Hit Format Header
|
||||
@copyright Copyright 2013 Google Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/*!
|
||||
These fields can be used for the wire format parameter names required by
|
||||
the |GAITracker| get, set and send methods as well as the set methods in the
|
||||
|GAIDictionaryBuilder| class.
|
||||
*/
|
||||
extern NSString *const kGAIUseSecure;
|
||||
|
||||
extern NSString *const kGAIHitType;
|
||||
extern NSString *const kGAITrackingId;
|
||||
extern NSString *const kGAIClientId;
|
||||
extern NSString *const kGAIAnonymizeIp;
|
||||
extern NSString *const kGAISessionControl;
|
||||
extern NSString *const kGAIScreenResolution;
|
||||
extern NSString *const kGAIViewportSize;
|
||||
extern NSString *const kGAIEncoding;
|
||||
extern NSString *const kGAIScreenColors;
|
||||
extern NSString *const kGAILanguage;
|
||||
extern NSString *const kGAIJavaEnabled;
|
||||
extern NSString *const kGAIFlashVersion;
|
||||
extern NSString *const kGAINonInteraction;
|
||||
extern NSString *const kGAIReferrer;
|
||||
extern NSString *const kGAILocation;
|
||||
extern NSString *const kGAIHostname;
|
||||
extern NSString *const kGAIPage;
|
||||
extern NSString *const kGAIDescription; // synonym for kGAIScreenName
|
||||
extern NSString *const kGAIScreenName; // synonym for kGAIDescription
|
||||
extern NSString *const kGAITitle;
|
||||
extern NSString *const kGAIAppName;
|
||||
extern NSString *const kGAIAppVersion;
|
||||
extern NSString *const kGAIAppId;
|
||||
extern NSString *const kGAIAppInstallerId;
|
||||
|
||||
extern NSString *const kGAIEventCategory;
|
||||
extern NSString *const kGAIEventAction;
|
||||
extern NSString *const kGAIEventLabel;
|
||||
extern NSString *const kGAIEventValue;
|
||||
|
||||
extern NSString *const kGAISocialNetwork;
|
||||
extern NSString *const kGAISocialAction;
|
||||
extern NSString *const kGAISocialTarget;
|
||||
|
||||
extern NSString *const kGAITransactionId;
|
||||
extern NSString *const kGAITransactionAffiliation;
|
||||
extern NSString *const kGAITransactionRevenue;
|
||||
extern NSString *const kGAITransactionShipping;
|
||||
extern NSString *const kGAITransactionTax;
|
||||
extern NSString *const kGAICurrencyCode;
|
||||
|
||||
extern NSString *const kGAIItemPrice;
|
||||
extern NSString *const kGAIItemQuantity;
|
||||
extern NSString *const kGAIItemSku;
|
||||
extern NSString *const kGAIItemName;
|
||||
extern NSString *const kGAIItemCategory;
|
||||
|
||||
extern NSString *const kGAICampaignSource;
|
||||
extern NSString *const kGAICampaignMedium;
|
||||
extern NSString *const kGAICampaignName;
|
||||
extern NSString *const kGAICampaignKeyword;
|
||||
extern NSString *const kGAICampaignContent;
|
||||
extern NSString *const kGAICampaignId;
|
||||
|
||||
extern NSString *const kGAITimingCategory;
|
||||
extern NSString *const kGAITimingVar;
|
||||
extern NSString *const kGAITimingValue;
|
||||
extern NSString *const kGAITimingLabel;
|
||||
|
||||
extern NSString *const kGAIExDescription;
|
||||
extern NSString *const kGAIExFatal;
|
||||
|
||||
extern NSString *const kGAISampleRate;
|
||||
|
||||
// hit types
|
||||
extern NSString *const kGAIAppView;
|
||||
extern NSString *const kGAIEvent;
|
||||
extern NSString *const kGAISocial;
|
||||
extern NSString *const kGAITransaction;
|
||||
extern NSString *const kGAIItem;
|
||||
extern NSString *const kGAIException;
|
||||
extern NSString *const kGAITiming;
|
||||
|
||||
/*!
|
||||
This class provides several fields and methods useful as wire format parameter
|
||||
names. The methods are used for wire format parameter names that are indexed.
|
||||
*/
|
||||
|
||||
@interface GAIFields : NSObject
|
||||
|
||||
/*!
|
||||
Generates the correct parameter name for a content group with an index.
|
||||
|
||||
@param index the index of the content group.
|
||||
|
||||
@return an NSString representing the content group parameter for the index.
|
||||
*/
|
||||
+ (NSString *)contentGroupForIndex:(NSUInteger)index;
|
||||
|
||||
/*!
|
||||
Generates the correct parameter name for a custon dimension with an index.
|
||||
|
||||
@param index the index of the custom dimension.
|
||||
|
||||
@return an NSString representing the custom dimension parameter for the index.
|
||||
*/
|
||||
+ (NSString *)customDimensionForIndex:(NSUInteger)index;
|
||||
|
||||
/*!
|
||||
Generates the correct parameter name for a custom metric with an index.
|
||||
|
||||
@param index the index of the custom metric.
|
||||
|
||||
@return an NSString representing the custom metric parameter for the index.
|
||||
*/
|
||||
+ (NSString *)customMetricForIndex:(NSUInteger)index;
|
||||
|
||||
@end
|
|
@ -0,0 +1,49 @@
|
|||
/*!
|
||||
@header GAILogger.h
|
||||
@abstract Google Analytics iOS SDK Source
|
||||
@copyright Copyright 2011 Google Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_ENUM(NSUInteger, GAILogLevel) {
|
||||
kGAILogLevelNone = 0,
|
||||
kGAILogLevelError = 1,
|
||||
kGAILogLevelWarning = 2,
|
||||
kGAILogLevelInfo = 3,
|
||||
kGAILogLevelVerbose = 4
|
||||
};
|
||||
|
||||
/*!
|
||||
Protocol to be used for logging debug and informational messages from the SDK.
|
||||
Implementations of this protocol can be provided to the |GAI| class,
|
||||
to be used as the logger by the SDK. See the |logger| property in GAI.h.
|
||||
*/
|
||||
@protocol GAILogger<NSObject>
|
||||
@required
|
||||
|
||||
/*!
|
||||
Only messages of |logLevel| and below are logged.
|
||||
*/
|
||||
@property (nonatomic, assign) GAILogLevel logLevel;
|
||||
|
||||
/*!
|
||||
Logs message with log level |kGAILogLevelVerbose|.
|
||||
*/
|
||||
- (void)verbose:(NSString *)message;
|
||||
|
||||
/*!
|
||||
Logs message with log level |kGAILogLevelInfo|.
|
||||
*/
|
||||
- (void)info:(NSString *)message;
|
||||
|
||||
/*!
|
||||
Logs message with log level |kGAILogLevelWarning|.
|
||||
*/
|
||||
- (void)warning:(NSString *)message;
|
||||
|
||||
/*!
|
||||
Logs message with log level |kGAILogLevelError|.
|
||||
*/
|
||||
- (void)error:(NSString *)message;
|
||||
@end
|
|
@ -11,18 +11,14 @@
|
|||
@protocol GAITracker;
|
||||
|
||||
/*!
|
||||
Extends UIViewController to generate Google Analytics view tracking calls
|
||||
Extends UIViewController to generate Google Analytics appview calls
|
||||
whenever the view appears; this is done by overriding the `viewDidAppear:`
|
||||
method. The view name must be set for any tracking calls to be made.
|
||||
method. The screen name must be set for any tracking calls to be made.
|
||||
|
||||
By default, this will use [GAI defaultTracker] for tracking calls, but one can
|
||||
override this by setting the tracker property.
|
||||
*/
|
||||
@interface GAITrackedViewController : UIViewController {
|
||||
@private
|
||||
id<GAITracker> tracker_;
|
||||
NSString *trackedViewName_;
|
||||
}
|
||||
@interface GAITrackedViewController : UIViewController
|
||||
|
||||
/*!
|
||||
The tracker on which view tracking calls are be made, or `nil`, in which case
|
||||
|
@ -30,9 +26,9 @@
|
|||
*/
|
||||
@property(nonatomic, assign) id<GAITracker> tracker;
|
||||
/*!
|
||||
The view name, for purposes of Google Analytics view tracking. If this is
|
||||
`nil`, no tracking calls will be made.
|
||||
The screen name, for purposes of Google Analytics tracking. If this is `nil`,
|
||||
no tracking calls will be made.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *trackedViewName;
|
||||
@property(nonatomic, copy) NSString *screenName;
|
||||
|
||||
@end
|
|
@ -0,0 +1,53 @@
|
|||
/*!
|
||||
@header GAITracker.h
|
||||
@abstract Google Analytics iOS SDK Tracker Header
|
||||
@version 3.0
|
||||
@copyright Copyright 2013 Google Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/*!
|
||||
Google Analytics tracking interface. Obtain instances of this interface from
|
||||
[GAI trackerWithTrackingId:] to track screens, events, transactions, timing,
|
||||
and exceptions. The implementation of this interface is thread-safe, and no
|
||||
calls are expected to block or take a long time. All network and disk activity
|
||||
will take place in the background.
|
||||
*/
|
||||
@protocol GAITracker<NSObject>
|
||||
|
||||
/*!
|
||||
Name of this tracker.
|
||||
*/
|
||||
@property(nonatomic, readonly) NSString *name;
|
||||
|
||||
/*!
|
||||
Set a tracking parameter.
|
||||
|
||||
@param parameterName The parameter name.
|
||||
|
||||
@param value The value to set for the parameter. If this is nil, the
|
||||
value for the parameter will be cleared.
|
||||
*/
|
||||
- (void)set:(NSString *)parameterName
|
||||
value:(NSString *)value;
|
||||
|
||||
/*!
|
||||
Get a tracking parameter.
|
||||
|
||||
@param parameterName The parameter name.
|
||||
|
||||
@returns The parameter value, or nil if no value for the given parameter is
|
||||
set.
|
||||
*/
|
||||
- (NSString *)get:(NSString *)parameterName;
|
||||
|
||||
/*!
|
||||
Queue tracking information with the given parameter values.
|
||||
|
||||
@param parameters A map from parameter names to parameter values which will be
|
||||
set just for this piece of tracking information, or nil for none.
|
||||
*/
|
||||
- (void)send:(NSDictionary *)parameters;
|
||||
|
||||
@end
|
75
Frameworks/Google Analytics SDK/GoogleAnalytics/Readme.txt
Normal file
|
@ -0,0 +1,75 @@
|
|||
Google Analytics iOS SDK version 3.01
|
||||
Copyright 2009 - 2013 Google, Inc. All rights reserved.
|
||||
|
||||
================================================================================
|
||||
DESCRIPTION:
|
||||
|
||||
This SDK provides developers with the capability to use Google Analytics
|
||||
to track iOS application usage.
|
||||
|
||||
The SDK is packaged as a set of header files and a static library. Get started
|
||||
by adding the header files from the Library subdirectory (GAI.h,
|
||||
GAIDictionaryBuilder.h, GAIFields.h, GAILogger.h, GAITrackedViewController.h
|
||||
and GAITracker.h) and libGoogleAnalyticsV3(?).a to your XCode project. You must
|
||||
also include the CoreData framework in your project.
|
||||
|
||||
To use a version of the library with debug symbols intact, link against
|
||||
libGoogleAnalytics_debug.a instead of libGoogleAnalyticsServices.a. This may be
|
||||
useful if you experience exceptions or crashes originating in the SDK.
|
||||
|
||||
See the Examples/CuteAnimals application for an illustration of how to use
|
||||
automatic screen tracking, event tracking, and uncaught exception tracking.
|
||||
|
||||
You will need a Google Analytics tracking ID to track application usage with the
|
||||
SDK. It is recommended to create an account for each set of applications that
|
||||
are to be tracked together, and to use that account's tracking ID in each
|
||||
application. To create a new tracking ID, go to your admin panel in Google
|
||||
Analytics and select "New Account". Under "What would you like to track?",
|
||||
choose "App" and complete the remainder of the form. When you are finished,
|
||||
click "Get Tracking ID". The tracking ID will be of the form "UA-" followed by a
|
||||
sequence of numbers and dashes.
|
||||
|
||||
You must indicate to your users, either in the app itself or in your terms of
|
||||
service, that you reserve the right to anonymously track and report a user's
|
||||
activity inside of your app.
|
||||
|
||||
Implementation Details:
|
||||
|
||||
Tracking information is stored in an SQLite database and dispatched to the
|
||||
Google Analytics servers in a manner set by the developer: periodically at an
|
||||
interval determined by the developer, immediately when tracking calls are made,
|
||||
or manually. A battery efficient strategy may be to initiate a dispatch when the
|
||||
application needs to access the network. Tracking information is dispatched
|
||||
using HTTP or HTTPS requests to a Google Analytics server.
|
||||
|
||||
================================================================================
|
||||
BUILD REQUIREMENTS:
|
||||
|
||||
Mac OS X 10.6 or later.
|
||||
XCode with iOS SDK 5.0 or later.
|
||||
|
||||
================================================================================
|
||||
RUNTIME REQUIREMENTS:
|
||||
|
||||
iOS 5.0 or later.
|
||||
|
||||
Your app must link the following frameworks:
|
||||
CoreData.framework
|
||||
SystemConfiguration.framework
|
||||
|
||||
================================================================================
|
||||
PACKAGING LIST:
|
||||
|
||||
Library/ (contains header and library files to compile and link with)
|
||||
GAI.h
|
||||
GAIDictionaryBuilder.h
|
||||
GAIFields.h
|
||||
GAILogger.h
|
||||
GAITrackedViewController.h
|
||||
GAITracker.h
|
||||
libGoogleAnalytics.a
|
||||
libGoogleAnalytics_debug.a
|
||||
Examples/ (contains an example tracked application)
|
||||
Documentation/ (contains documentation)
|
||||
|
||||
================================================================================
|
|
@ -0,0 +1,90 @@
|
|||
Google Tag Manager SDK for iOS Change Log
|
||||
|
||||
--------------------------------------------
|
||||
Version: 3.01 (September, 2013)
|
||||
--------------------------------------------
|
||||
* Fixed link error when targeting iOS 7.0
|
||||
|
||||
--------------------------------------------
|
||||
Version: 3.0 (August 16, 2013)
|
||||
--------------------------------------------
|
||||
* Added support for AdWords Conversion Tracking Tag, AdWords Remarketing Tag,
|
||||
and Custom Image Tag.
|
||||
|
||||
* Added Advertising Enabled Macro, Application ID Macro, and ID for
|
||||
Advertising Macro.
|
||||
|
||||
* Pushing a link to the data layer as "gtm.url" will now cache the
|
||||
Click Referrer for AdWords Tags.
|
||||
|
||||
* Updated cuteAnimals sample app to demonstrate how to use Function Call Macro
|
||||
and Function Call Tag.
|
||||
|
||||
--------------------------------------------
|
||||
Version: 3.0b1 (July 26, 2013)
|
||||
--------------------------------------------
|
||||
* libGoogleAnalyticsServices.a replaces libTagManager.a in the
|
||||
downloaded SDK. libGoogleAnalyticsServices.a includes all functions
|
||||
in libTagManager.a plus version 3 of the Google Analytics SDK.
|
||||
Note that an application can't include both libGoogleAnalyticsServices.a
|
||||
and the old libGoogleAnalytics.a or libTagManager.a file.
|
||||
An application that wants to use GTM and also do analytics tracking should
|
||||
either update their GA calls to use version 3 of the SDK, or replace GA
|
||||
calls with data layer push calls and add appropriate rules to their
|
||||
container to fire Universal Analytics hits.
|
||||
|
||||
* Added Tag support in SDK. There are 2 types of tags currently supported:
|
||||
Universal Analytics (beta) tag and Custom Function Tag.
|
||||
|
||||
* Added DataLayer support to hold generic information about the application.
|
||||
An app can obtain the DataLayer object by calling TagManager::dataLayer.
|
||||
|
||||
* Added 2 new macros: data layer variable macro and custom event macro.
|
||||
|
||||
* Added LogLevel support into Logger. This allows adjusting the threshold of
|
||||
what gets logged without having to write a new logger.
|
||||
|
||||
* Added preview exit link support to allow exiting preview mode of a container
|
||||
without killing the app.
|
||||
|
||||
* Fixed a bug that prevented developers from using both GTM and open-sourced
|
||||
proto buffer library.
|
||||
|
||||
* Modified the cuteAnimals example to show how to instrument an application
|
||||
by pushing events to the data layer. A sample container is provided that
|
||||
uses the pushed events to fire Google Universal Analytics tag.
|
||||
|
||||
--------------------------------------------
|
||||
Version: 1.0b3 (June 26, 2013)
|
||||
--------------------------------------------
|
||||
* TagManager::openContainer no longer allows opening multiple containers with
|
||||
the same container ID.
|
||||
|
||||
* ContainerOpener no longer has the two methods
|
||||
openNonDefaultContainerWithId:tagManager:timeout:notifier and
|
||||
openFreshContainerWithId:tagManager:timeout:notifier:.
|
||||
Instead, there are now two openContainer methods:
|
||||
openContainerWithId:tagManager:openType:timeout: and
|
||||
openContainerWithId:tagManager:openType:timeout:notifier.
|
||||
The first returns a TAGContainerFuture, while the other takes a notifier.
|
||||
Both of these methods take a parameter specifying how the container should
|
||||
be opened (kTAGPreferNonDefault or kTAGPreferFresh). This should reduce
|
||||
confusion as to how TAGContainerFutures and notifiers interact.
|
||||
|
||||
These two new methods can be called more than once with the same
|
||||
container ID; if the container is already open, it'll be returned (via the
|
||||
future or notifier).
|
||||
|
||||
* In container preview mode, containers that are already open will be
|
||||
auto-updated (was just updating the container on the next open).
|
||||
|
||||
--------------------------------------------
|
||||
Version: 1.0b2 (June 3, 2013)
|
||||
--------------------------------------------
|
||||
* Initial beta release.
|
||||
|
||||
--------------------------------------------
|
||||
Version: 1.0b1
|
||||
--------------------------------------------
|
||||
* Unreleased internal version.
|
||||
|
|
@ -2,22 +2,23 @@
|
|||
// AppDelegate.h
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2012 Google, Inc. All rights reserved.
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "GAI.h"
|
||||
|
||||
@class RootViewController;
|
||||
@class NavController;
|
||||
@class TAGManager;
|
||||
@class TAGContainer;
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property(nonatomic, retain) UIWindow *window;
|
||||
@property(nonatomic, retain) NavController *navController;
|
||||
@property(nonatomic, retain) RootViewController *viewController;
|
||||
@property(nonatomic, retain) id<GAITracker> tracker;
|
||||
@property(nonatomic, retain) NSDictionary *images;
|
||||
@property(nonatomic, retain) TAGManager *tagManager;
|
||||
@property(nonatomic, retain) TAGContainer *container;
|
||||
|
||||
@end
|
|
@ -0,0 +1,135 @@
|
|||
//
|
||||
// AppDelegate.m
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if !defined(__has_feature) || !__has_feature(objc_arc)
|
||||
#error "This file requires ARC support."
|
||||
#endif
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "CustomMacroHandler.h"
|
||||
#import "CustomTagHandler.h"
|
||||
#import "NavController.h"
|
||||
#import "RootViewController.h"
|
||||
#import "TAGContainer.h"
|
||||
#import "TAGContainerOpener.h"
|
||||
#import "TAGLogger.h"
|
||||
#import "TAGManager.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
- (NSDictionary *)loadImages;
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@synthesize window = _window;
|
||||
@synthesize navController = _navController;
|
||||
@synthesize viewController = _viewController;
|
||||
@synthesize images = _images;
|
||||
@synthesize tagManager = _tagManager;
|
||||
@synthesize container = _container;
|
||||
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
self.tagManager = [TAGManager instance];
|
||||
|
||||
// Modify the log level of the logger to print out not only
|
||||
// warning and error messages, but also verbose, debug, info messages.
|
||||
[self.tagManager.logger setLogLevel:kTAGLoggerLogLevelVerbose];
|
||||
|
||||
// Following provides ability to support preview from Tag Manager.
|
||||
// You need to make these calls before opening a container to make
|
||||
// preview works.
|
||||
NSURL *url = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
|
||||
if (url != nil) {
|
||||
[self.tagManager previewWithUrl:url];
|
||||
}
|
||||
|
||||
// Open a container.
|
||||
id<TAGContainerFuture> future =
|
||||
[TAGContainerOpener openContainerWithId:@"GTM-XXXX"
|
||||
tagManager:self.tagManager
|
||||
openType:kTAGOpenTypePreferNonDefault
|
||||
timeout:nil];
|
||||
|
||||
self.images = [self loadImages];
|
||||
|
||||
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||
|
||||
self.container = [future get];
|
||||
// Register two custom function call macros to the container.
|
||||
[self.container registerFunctionCallMacroHandler:[[CustomMacroHandler alloc] init]
|
||||
forMacro:@"increment"];
|
||||
[self.container registerFunctionCallMacroHandler:[[CustomMacroHandler alloc] init]
|
||||
forMacro:@"mod"];
|
||||
// Register a custom function call tag to the container.
|
||||
[self.container registerFunctionCallTagHandler:[[CustomTagHandler alloc] init]
|
||||
forTag:@"custom_tag"];
|
||||
|
||||
self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController"
|
||||
bundle:nil];
|
||||
|
||||
self.navController = [[NavController alloc] initWithRootViewController:self.viewController];
|
||||
self.navController.delegate = self.navController;
|
||||
|
||||
self.viewController.navController = self.navController;
|
||||
self.window.rootViewController = self.navController;
|
||||
[self.window makeKeyAndVisible];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
openURL:(NSURL *)url
|
||||
sourceApplication:(NSString *)sourceApplication
|
||||
annotation:(id)annotation {
|
||||
if ([self.tagManager previewWithUrl:url]) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
// Code to handle other urls.
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSDictionary *)loadImages {
|
||||
NSArray *contents = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg"
|
||||
inDirectory:nil];
|
||||
if (!contents) {
|
||||
NSLog(@"Failed to load directory contents");
|
||||
return nil;
|
||||
}
|
||||
NSMutableDictionary *images = [NSMutableDictionary dictionaryWithCapacity:0];
|
||||
for (NSString *file in contents) {
|
||||
NSArray *components = [[file lastPathComponent] componentsSeparatedByString:@"-"];
|
||||
if (components.count == 0) {
|
||||
NSLog(@"Filename doesn't contain dash: %@", file);
|
||||
continue;
|
||||
}
|
||||
UIImage *image = [UIImage imageWithContentsOfFile:file];
|
||||
if (!image) {
|
||||
NSLog(@"Failed to load file: %@", file);
|
||||
continue;
|
||||
}
|
||||
NSString *prefix = [components objectAtIndex:0];
|
||||
NSMutableArray *categoryImages = [images objectForKey:prefix];
|
||||
if (!categoryImages) {
|
||||
categoryImages = [NSMutableArray arrayWithCapacity:0];
|
||||
[images setObject:categoryImages
|
||||
forKey:prefix];
|
||||
}
|
||||
[categoryImages addObject:image];
|
||||
}
|
||||
for (NSString *cat in [images allKeys]) {
|
||||
NSArray *array = [images objectForKey:cat];
|
||||
NSLog(@"Category %@: %u image(s).", cat, array.count);
|
||||
}
|
||||
return images;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,22 @@
|
|||
//
|
||||
// CategoryViewController.h
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "NavController.h"
|
||||
|
||||
@interface CategoryViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>
|
||||
|
||||
@property(nonatomic, retain) NSString *category;
|
||||
@property(nonatomic, retain) NavController *navController;
|
||||
@property(nonatomic, retain) IBOutlet UITableView *tableView;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibName
|
||||
bundle:(NSBundle *)nibBundle
|
||||
category:(NSString *)category;
|
||||
|
||||
@end
|
|
@ -0,0 +1,130 @@
|
|||
//
|
||||
// CategoryViewController.m
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2012 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if !defined(__has_feature) || !__has_feature(objc_arc)
|
||||
#error "This file requires ARC support."
|
||||
#endif
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "CategoryViewController.h"
|
||||
#import "ImageViewController.h"
|
||||
#import "TAGContainer.h"
|
||||
#import "TAGDataLayer.h"
|
||||
#import "TAGManager.h"
|
||||
#import "Utils.h"
|
||||
|
||||
@interface CategoryViewController ()
|
||||
|
||||
@property(nonatomic, retain) NSMutableArray *items;
|
||||
@property(nonatomic, assign) AppDelegate *delegate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CategoryViewController
|
||||
|
||||
@synthesize category = _category;
|
||||
@synthesize navController = _navController;
|
||||
@synthesize tableView = _tableView;
|
||||
@synthesize items = _items;
|
||||
@synthesize delegate = _delegate;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibName
|
||||
bundle:(NSBundle *)nibBundle
|
||||
category:(NSString *)category {
|
||||
self = [super initWithNibName:nibName
|
||||
bundle:nibBundle];
|
||||
if (self) {
|
||||
self.category = category;
|
||||
self.delegate = [UIApplication sharedApplication].delegate;
|
||||
NSString *adjective = [self.delegate.container stringForKey:@"Adjective"];
|
||||
self.title = [NSString stringWithFormat:@"%@ %@s", adjective, category];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
// Override
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.items = [self.delegate.images objectForKey:self.category];
|
||||
// Put the category_name into the data layer for future use.
|
||||
[self.delegate.tagManager.dataLayer pushValue:self.category
|
||||
forKey:@"category_name"];
|
||||
}
|
||||
|
||||
// Override
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
[Utils pushOpenScreenEventWithScreenName:@"CategoryViewScreen"];
|
||||
}
|
||||
|
||||
// Override
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[super viewDidDisappear:animated];
|
||||
[Utils pushCloseScreenEventWithScreenName:@"CategoryViewScreen"];
|
||||
}
|
||||
|
||||
// Override
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:
|
||||
(UIInterfaceOrientation)interfaceOrientation {
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] ==
|
||||
UIUserInterfaceIdiomPhone) {
|
||||
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
|
||||
} else {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark UITableViewDelegate methods
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:NO];
|
||||
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
|
||||
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
|
||||
return;
|
||||
}
|
||||
NSString *title = [NSString stringWithFormat:@"%@ %d", self.category, indexPath.row];
|
||||
UIImage *image = [self.items objectAtIndex:indexPath.row];
|
||||
ImageViewController *imageViewController =
|
||||
[[ImageViewController alloc] initWithNibName:nil
|
||||
bundle:nil
|
||||
title:title
|
||||
image:image];
|
||||
[imageViewController.view addSubview:imageViewController.imageView];
|
||||
[self.navController pushViewController:imageViewController animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark UITableViewDataSource methods
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView
|
||||
numberOfRowsInSection:(NSInteger)section {
|
||||
return self.items.count;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView
|
||||
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
|
||||
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
|
||||
return nil;
|
||||
}
|
||||
|
||||
static NSString *CellId = @"Cell";
|
||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
|
||||
if (!cell) {
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
|
||||
reuseIdentifier:CellId];
|
||||
}
|
||||
|
||||
cell.textLabel.text = [NSString stringWithFormat:@"%@ %d", self.category, indexPath.row];
|
||||
cell.textLabel.font = [UIFont systemFontOfSize:14];
|
||||
UIImage *image = [self.items objectAtIndex:indexPath.row];
|
||||
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d x %d",
|
||||
(int)image.size.width, (int)image.size.height];
|
||||
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
|
||||
return cell;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,167 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1296</int>
|
||||
<string key="IBDocument.SystemVersion">11D50b</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1181</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>IBProxyObject</string>
|
||||
<string>IBUIView</string>
|
||||
<string>IBUITableView</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="606714003">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
|
||||
</object>
|
||||
<object class="IBUIView" id="766721923">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUITableView" id="481613891">
|
||||
<reference key="NSNextResponder" ref="766721923"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{768, 1004}</string>
|
||||
<reference key="NSSuperview" ref="766721923"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
|
||||
<bool key="IBUIAlwaysBounceVertical">YES</bool>
|
||||
<int key="IBUISeparatorStyle">1</int>
|
||||
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
|
||||
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
|
||||
<float key="IBUIRowHeight">44</float>
|
||||
<float key="IBUISectionHeaderHeight">22</float>
|
||||
<float key="IBUISectionFooterHeight">22</float>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{0, 20}, {768, 1004}}</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
<object class="NSColorSpace" key="NSCustomColorSpace">
|
||||
<int key="NSID">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
|
||||
<int key="IBUIStatusBarStyle">2</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="766721923"/>
|
||||
</object>
|
||||
<int key="connectionID">3</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">tableView</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="481613891"/>
|
||||
</object>
|
||||
<int key="connectionID">8</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="481613891"/>
|
||||
<reference key="destination" ref="841351856"/>
|
||||
</object>
|
||||
<int key="connectionID">9</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="481613891"/>
|
||||
<reference key="destination" ref="841351856"/>
|
||||
</object>
|
||||
<int key="connectionID">10</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="606714003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="766721923"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="481613891"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="481613891"/>
|
||||
<reference key="parent" ref="766721923"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.CustomClassName">CategoryViewController</string>
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="-2.CustomClassName">UIResponder</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">10</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1296" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">1181</string>
|
||||
</data>
|
||||
</archive>
|
|
@ -0,0 +1,193 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1536</int>
|
||||
<string key="IBDocument.SystemVersion">12C2034</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2844</string>
|
||||
<string key="IBDocument.AppKitVersion">1187.34</string>
|
||||
<string key="IBDocument.HIToolboxVersion">625.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1930</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>IBProxyObject</string>
|
||||
<string>IBUITableView</string>
|
||||
<string>IBUIView</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="IBProxyObject" id="372490531">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="843779117">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIView" id="774585933">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUITableView" id="183585393">
|
||||
<reference key="NSNextResponder" ref="774585933"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview" ref="774585933"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIAlwaysBounceVertical">YES</bool>
|
||||
<int key="IBUISeparatorStyle">1</int>
|
||||
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
|
||||
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
|
||||
<float key="IBUIRowHeight">44</float>
|
||||
<float key="IBUISectionHeaderHeight">22</float>
|
||||
<float key="IBUISectionFooterHeight">22</float>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{0, 20}, {320, 460}}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="183585393"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC43NQA</bytes>
|
||||
<object class="NSColorSpace" key="NSCustomColorSpace">
|
||||
<int key="NSID">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="774585933"/>
|
||||
</object>
|
||||
<int key="connectionID">7</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">tableView</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="183585393"/>
|
||||
</object>
|
||||
<int key="connectionID">11</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="183585393"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">12</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="183585393"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">13</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="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="843779117"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="774585933"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="183585393"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">8</int>
|
||||
<reference key="object" ref="183585393"/>
|
||||
<reference key="parent" ref="774585933"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.CustomClassName">CategoryViewController</string>
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="-2.CustomClassName">UIResponder</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">29</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">CategoryViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">tableView</string>
|
||||
<string key="NS.object.0">UITableView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">tableView</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">tableView</string>
|
||||
<string key="candidateClassName">UITableView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/CategoryViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</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>
|
||||
<real value="1536" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">1930</string>
|
||||
</data>
|
||||
</archive>
|
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
// CustomMacroHandler.h
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TAGContainer.h"
|
||||
|
||||
@interface CustomMacroHandler : NSObject <TAGFunctionCallMacroHandler>
|
||||
|
||||
@property(nonatomic) NSUInteger numOfCalls;
|
||||
|
||||
@end
|
|
@ -0,0 +1,34 @@
|
|||
//
|
||||
// CustomMacroHandler.m
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if !defined(__has_feature) || !__has_feature(objc_arc)
|
||||
#error "This file requires ARC support."
|
||||
#endif
|
||||
|
||||
#import "CustomMacroHandler.h"
|
||||
|
||||
@implementation CustomMacroHandler
|
||||
|
||||
- (id)valueForMacro:(NSString *)macroName
|
||||
parameters:(NSDictionary *)parameters {
|
||||
if ([macroName isEqual:@"increment"]) {
|
||||
self.numOfCalls++;
|
||||
return [NSString stringWithFormat:@"%d", self.numOfCalls];
|
||||
} else if ([macroName isEqual:@"mod"]) {
|
||||
NSString *value1 = parameters[@"key1"];
|
||||
NSString *value2 = parameters[@"key2"];
|
||||
return [NSNumber numberWithInt:([value1 intValue] % [value2 intValue])];
|
||||
} else {
|
||||
NSString *message =
|
||||
[NSString stringWithFormat:@"Custom macro name: %@ is not supported", macroName];
|
||||
@throw [NSException exceptionWithName:@"IllegalArgumentException"
|
||||
reason:message
|
||||
userInfo:nil];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,12 @@
|
|||
//
|
||||
// CustomTagHandler.h
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TAGContainer.h"
|
||||
|
||||
@interface CustomTagHandler : NSObject <TAGFunctionCallTagHandler>
|
||||
|
||||
@end
|
|
@ -0,0 +1,21 @@
|
|||
//
|
||||
// CustomTagHandler.m
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if !defined(__has_feature) || !__has_feature(objc_arc)
|
||||
#error "This file requires ARC support."
|
||||
#endif
|
||||
|
||||
#import "CustomTagHandler.h"
|
||||
|
||||
@implementation CustomTagHandler
|
||||
|
||||
- (void)execute:(NSString *)tagName parameters:(NSDictionary *)parameters {
|
||||
NSLog(@"Custom function call tag :%@ is fired", tagName);
|
||||
// Other code firing this custom tag.
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.google.tagmanager.example.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>com.companyname.appname</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>tagmanager.c.com.google.tagmanager.example.cuteAnimals</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,10 @@
|
|||
#import <Availability.h>
|
||||
|
||||
#ifndef __IPHONE_4_0
|
||||
#warning "This project uses features only available in iOS SDK 4.0 and later."
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
|
@ -0,0 +1,449 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
113B6EE8153E1F0B003CAC38 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6EE7153E1F0B003CAC38 /* UIKit.framework */; };
|
||||
113B6EEA153E1F0B003CAC38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6EE9153E1F0B003CAC38 /* Foundation.framework */; };
|
||||
113B6F10153E1F99003CAC38 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F03153E1F99003CAC38 /* AppDelegate.m */; };
|
||||
113B6F11153E1F99003CAC38 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F04153E1F99003CAC38 /* main.m */; };
|
||||
113B6F12153E1F99003CAC38 /* NavController.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F06153E1F99003CAC38 /* NavController.m */; };
|
||||
113B6F13153E1F99003CAC38 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 113B6F08153E1F99003CAC38 /* RootViewController.m */; };
|
||||
113B6F14153E1F99003CAC38 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F09153E1F99003CAC38 /* RootViewController.xib */; };
|
||||
113B6F15153E1F99003CAC38 /* CategoryViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F0A153E1F99003CAC38 /* CategoryViewController_iPad.xib */; };
|
||||
113B6F16153E1F99003CAC38 /* CategoryViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */; };
|
||||
113B6F2B153E208D003CAC38 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 113B6F2A153E208D003CAC38 /* CoreData.framework */; };
|
||||
115686561593CE6A00A5D031 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 115686551593CE6A00A5D031 /* SystemConfiguration.framework */; };
|
||||
11FCCC1F1561834700949704 /* CategoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11FCCC1C1561834700949704 /* CategoryViewController.m */; };
|
||||
11FCCC201561834700949704 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11FCCC1E1561834700949704 /* ImageViewController.m */; };
|
||||
11FCCC34156189A600949704 /* Bunny-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC22156189A600949704 /* Bunny-1.jpg */; };
|
||||
11FCCC35156189A600949704 /* Bunny-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC23156189A600949704 /* Bunny-2.jpg */; };
|
||||
11FCCC36156189A600949704 /* Bunny-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC24156189A600949704 /* Bunny-3.jpg */; };
|
||||
11FCCC37156189A600949704 /* Cat-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC25156189A600949704 /* Cat-1.jpg */; };
|
||||
11FCCC38156189A600949704 /* Cat-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC26156189A600949704 /* Cat-2.jpg */; };
|
||||
11FCCC39156189A600949704 /* Cat-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC27156189A600949704 /* Cat-3.jpg */; };
|
||||
11FCCC3A156189A600949704 /* Cat-4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC28156189A600949704 /* Cat-4.jpg */; };
|
||||
11FCCC3B156189A600949704 /* Lion-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC29156189A600949704 /* Lion-1.jpg */; };
|
||||
11FCCC3C156189A600949704 /* Lion-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2A156189A600949704 /* Lion-2.jpg */; };
|
||||
11FCCC3D156189A600949704 /* Lion-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2B156189A600949704 /* Lion-3.jpg */; };
|
||||
11FCCC3E156189A600949704 /* Lion-4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2C156189A600949704 /* Lion-4.jpg */; };
|
||||
11FCCC3F156189A600949704 /* Monkey-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2D156189A600949704 /* Monkey-1.jpg */; };
|
||||
11FCCC40156189A600949704 /* Monkey-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2E156189A600949704 /* Monkey-2.jpg */; };
|
||||
11FCCC41156189A600949704 /* Monkey-3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC2F156189A600949704 /* Monkey-3.jpg */; };
|
||||
11FCCC42156189A600949704 /* Monkey-4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC30156189A600949704 /* Monkey-4.jpg */; };
|
||||
11FCCC43156189A600949704 /* Monkey-5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC31156189A600949704 /* Monkey-5.jpg */; };
|
||||
11FCCC44156189A600949704 /* Tiger-1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC32156189A600949704 /* Tiger-1.jpg */; };
|
||||
11FCCC45156189A600949704 /* Tiger-2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 11FCCC33156189A600949704 /* Tiger-2.jpg */; };
|
||||
47CD7CE717BAA2B1008840A0 /* CustomTagHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 47CD7CE617BAA2B1008840A0 /* CustomTagHandler.m */; };
|
||||
47CD7CED17BAA447008840A0 /* CustomMacroHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 47CD7CEC17BAA447008840A0 /* CustomMacroHandler.m */; };
|
||||
47CD7CF117BACB30008840A0 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47CD7CF017BACB30008840A0 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
47EC965217A19FDD00D685C9 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 47EC965117A19FDD00D685C9 /* Utils.m */; };
|
||||
47EC965417A1C9EB00D685C9 /* GTM-XXXX in Resources */ = {isa = PBXBuildFile; fileRef = 47EC965317A1C9EB00D685C9 /* GTM-XXXX */; };
|
||||
47EC965A17A1CCDE00D685C9 /* Container.png in Resources */ = {isa = PBXBuildFile; fileRef = 47EC965917A1CCDE00D685C9 /* Container.png */; };
|
||||
88679A8C17A1841C00F476D5 /* libGoogleAnalyticsServices.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 88679A8B17A1841C00F476D5 /* libGoogleAnalyticsServices.a */; };
|
||||
F4FE3F5617555573000A691A /* GTM-XXXX.plist in Resources */ = {isa = PBXBuildFile; fileRef = F4FE3F5517555573000A691A /* GTM-XXXX.plist */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
113B6EE3153E1F0B003CAC38 /* CuteAnimals.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CuteAnimals.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
113B6EE7153E1F0B003CAC38 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
113B6EE9153E1F0B003CAC38 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
113B6EEF153E1F0B003CAC38 /* CuteAnimals-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CuteAnimals-Info.plist"; sourceTree = "<group>"; };
|
||||
113B6EF5153E1F0B003CAC38 /* CuteAnimals-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CuteAnimals-Prefix.pch"; sourceTree = "<group>"; };
|
||||
113B6F02153E1F99003CAC38 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = SOURCE_ROOT; };
|
||||
113B6F03153E1F99003CAC38 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; };
|
||||
113B6F04153E1F99003CAC38 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = SOURCE_ROOT; };
|
||||
113B6F05153E1F99003CAC38 /* NavController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavController.h; sourceTree = SOURCE_ROOT; };
|
||||
113B6F06153E1F99003CAC38 /* NavController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NavController.m; sourceTree = SOURCE_ROOT; };
|
||||
113B6F07153E1F99003CAC38 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = SOURCE_ROOT; };
|
||||
113B6F08153E1F99003CAC38 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = SOURCE_ROOT; };
|
||||
113B6F09153E1F99003CAC38 /* RootViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = SOURCE_ROOT; };
|
||||
113B6F0A153E1F99003CAC38 /* CategoryViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoryViewController_iPad.xib; sourceTree = SOURCE_ROOT; };
|
||||
113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoryViewController_iPhone.xib; sourceTree = SOURCE_ROOT; };
|
||||
113B6F2A153E208D003CAC38 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
|
||||
115686551593CE6A00A5D031 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||
11FCCC1B1561834700949704 /* CategoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CategoryViewController.h; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC1C1561834700949704 /* CategoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CategoryViewController.m; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC1D1561834700949704 /* ImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageViewController.h; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC1E1561834700949704 /* ImageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageViewController.m; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC22156189A600949704 /* Bunny-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Bunny-1.jpg"; path = "Images/Bunny-1.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC23156189A600949704 /* Bunny-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Bunny-2.jpg"; path = "Images/Bunny-2.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC24156189A600949704 /* Bunny-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Bunny-3.jpg"; path = "Images/Bunny-3.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC25156189A600949704 /* Cat-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-1.jpg"; path = "Images/Cat-1.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC26156189A600949704 /* Cat-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-2.jpg"; path = "Images/Cat-2.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC27156189A600949704 /* Cat-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-3.jpg"; path = "Images/Cat-3.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC28156189A600949704 /* Cat-4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Cat-4.jpg"; path = "Images/Cat-4.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC29156189A600949704 /* Lion-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-1.jpg"; path = "Images/Lion-1.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC2A156189A600949704 /* Lion-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-2.jpg"; path = "Images/Lion-2.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC2B156189A600949704 /* Lion-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-3.jpg"; path = "Images/Lion-3.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC2C156189A600949704 /* Lion-4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Lion-4.jpg"; path = "Images/Lion-4.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC2D156189A600949704 /* Monkey-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-1.jpg"; path = "Images/Monkey-1.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC2E156189A600949704 /* Monkey-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-2.jpg"; path = "Images/Monkey-2.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC2F156189A600949704 /* Monkey-3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-3.jpg"; path = "Images/Monkey-3.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC30156189A600949704 /* Monkey-4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-4.jpg"; path = "Images/Monkey-4.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC31156189A600949704 /* Monkey-5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Monkey-5.jpg"; path = "Images/Monkey-5.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC32156189A600949704 /* Tiger-1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Tiger-1.jpg"; path = "Images/Tiger-1.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
11FCCC33156189A600949704 /* Tiger-2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = "Tiger-2.jpg"; path = "Images/Tiger-2.jpg"; sourceTree = SOURCE_ROOT; };
|
||||
47CD7CE517BAA2B1008840A0 /* CustomTagHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTagHandler.h; sourceTree = SOURCE_ROOT; };
|
||||
47CD7CE617BAA2B1008840A0 /* CustomTagHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTagHandler.m; sourceTree = SOURCE_ROOT; };
|
||||
47CD7CEB17BAA447008840A0 /* CustomMacroHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomMacroHandler.h; sourceTree = SOURCE_ROOT; };
|
||||
47CD7CEC17BAA447008840A0 /* CustomMacroHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomMacroHandler.m; sourceTree = SOURCE_ROOT; };
|
||||
47CD7CF017BACB30008840A0 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; };
|
||||
47EC964F17A19FC900D685C9 /* TAGDataLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAGDataLayer.h; sourceTree = "<group>"; };
|
||||
47EC965017A19FDD00D685C9 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utils.h; sourceTree = SOURCE_ROOT; };
|
||||
47EC965117A19FDD00D685C9 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utils.m; sourceTree = SOURCE_ROOT; };
|
||||
47EC965317A1C9EB00D685C9 /* GTM-XXXX */ = {isa = PBXFileReference; lastKnownFileType = file; path = "GTM-XXXX"; sourceTree = SOURCE_ROOT; };
|
||||
47EC965917A1CCDE00D685C9 /* Container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Container.png; path = Images/Container.png; sourceTree = SOURCE_ROOT; };
|
||||
88679A8B17A1841C00F476D5 /* libGoogleAnalyticsServices.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAnalyticsServices.a; path = ../../libGoogleAnalyticsServices.a; sourceTree = "<group>"; };
|
||||
F41DE61E171DB8A500960CB7 /* TAGContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAGContainer.h; sourceTree = "<group>"; };
|
||||
F41DE620171DB8A500960CB7 /* TAGManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAGManager.h; sourceTree = "<group>"; };
|
||||
F431344E174E8F96003C1079 /* TAGContainerOpener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAGContainerOpener.h; sourceTree = "<group>"; };
|
||||
F431344F174E8F96003C1079 /* TAGLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAGLogger.h; sourceTree = "<group>"; };
|
||||
F4FE3F5517555573000A691A /* GTM-XXXX.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GTM-XXXX.plist"; sourceTree = SOURCE_ROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
113B6EE0153E1F0B003CAC38 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
47CD7CF117BACB30008840A0 /* AdSupport.framework in Frameworks */,
|
||||
115686561593CE6A00A5D031 /* SystemConfiguration.framework in Frameworks */,
|
||||
113B6F2B153E208D003CAC38 /* CoreData.framework in Frameworks */,
|
||||
113B6EE8153E1F0B003CAC38 /* UIKit.framework in Frameworks */,
|
||||
113B6EEA153E1F0B003CAC38 /* Foundation.framework in Frameworks */,
|
||||
88679A8C17A1841C00F476D5 /* libGoogleAnalyticsServices.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
113B6ED8153E1F0B003CAC38 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
113B6EED153E1F0B003CAC38 /* CuteAnimals */,
|
||||
F41DE61B171DB8A500960CB7 /* TagManager SDK */,
|
||||
113B6EE6153E1F0B003CAC38 /* Frameworks */,
|
||||
113B6EE4153E1F0B003CAC38 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
113B6EE4153E1F0B003CAC38 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
113B6EE3153E1F0B003CAC38 /* CuteAnimals.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
113B6EE6153E1F0B003CAC38 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
47CD7CF017BACB30008840A0 /* AdSupport.framework */,
|
||||
115686551593CE6A00A5D031 /* SystemConfiguration.framework */,
|
||||
113B6F2A153E208D003CAC38 /* CoreData.framework */,
|
||||
113B6EE7153E1F0B003CAC38 /* UIKit.framework */,
|
||||
113B6EE9153E1F0B003CAC38 /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
113B6EED153E1F0B003CAC38 /* CuteAnimals */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
113B6F02153E1F99003CAC38 /* AppDelegate.h */,
|
||||
113B6F03153E1F99003CAC38 /* AppDelegate.m */,
|
||||
11FCCC1B1561834700949704 /* CategoryViewController.h */,
|
||||
11FCCC1C1561834700949704 /* CategoryViewController.m */,
|
||||
113B6F0A153E1F99003CAC38 /* CategoryViewController_iPad.xib */,
|
||||
113B6F0B153E1F99003CAC38 /* CategoryViewController_iPhone.xib */,
|
||||
47CD7CEB17BAA447008840A0 /* CustomMacroHandler.h */,
|
||||
47CD7CEC17BAA447008840A0 /* CustomMacroHandler.m */,
|
||||
47CD7CE517BAA2B1008840A0 /* CustomTagHandler.h */,
|
||||
47CD7CE617BAA2B1008840A0 /* CustomTagHandler.m */,
|
||||
11FCCC1D1561834700949704 /* ImageViewController.h */,
|
||||
11FCCC1E1561834700949704 /* ImageViewController.m */,
|
||||
113B6F04153E1F99003CAC38 /* main.m */,
|
||||
113B6F05153E1F99003CAC38 /* NavController.h */,
|
||||
113B6F06153E1F99003CAC38 /* NavController.m */,
|
||||
113B6F07153E1F99003CAC38 /* RootViewController.h */,
|
||||
113B6F08153E1F99003CAC38 /* RootViewController.m */,
|
||||
113B6F09153E1F99003CAC38 /* RootViewController.xib */,
|
||||
113B6EEE153E1F0B003CAC38 /* Supporting Files */,
|
||||
47EC965017A19FDD00D685C9 /* Utils.h */,
|
||||
47EC965117A19FDD00D685C9 /* Utils.m */,
|
||||
);
|
||||
name = CuteAnimals;
|
||||
path = .;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
113B6EEE153E1F0B003CAC38 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
11FCCC211561899800949704 /* Images */,
|
||||
113B6EEF153E1F0B003CAC38 /* CuteAnimals-Info.plist */,
|
||||
113B6EF5153E1F0B003CAC38 /* CuteAnimals-Prefix.pch */,
|
||||
47EC965317A1C9EB00D685C9 /* GTM-XXXX */,
|
||||
F4FE3F5517555573000A691A /* GTM-XXXX.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
11FCCC211561899800949704 /* Images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
47EC965917A1CCDE00D685C9 /* Container.png */,
|
||||
11FCCC22156189A600949704 /* Bunny-1.jpg */,
|
||||
11FCCC23156189A600949704 /* Bunny-2.jpg */,
|
||||
11FCCC24156189A600949704 /* Bunny-3.jpg */,
|
||||
11FCCC25156189A600949704 /* Cat-1.jpg */,
|
||||
11FCCC26156189A600949704 /* Cat-2.jpg */,
|
||||
11FCCC27156189A600949704 /* Cat-3.jpg */,
|
||||
11FCCC28156189A600949704 /* Cat-4.jpg */,
|
||||
11FCCC29156189A600949704 /* Lion-1.jpg */,
|
||||
11FCCC2A156189A600949704 /* Lion-2.jpg */,
|
||||
11FCCC2B156189A600949704 /* Lion-3.jpg */,
|
||||
11FCCC2C156189A600949704 /* Lion-4.jpg */,
|
||||
11FCCC2D156189A600949704 /* Monkey-1.jpg */,
|
||||
11FCCC2E156189A600949704 /* Monkey-2.jpg */,
|
||||
11FCCC2F156189A600949704 /* Monkey-3.jpg */,
|
||||
11FCCC30156189A600949704 /* Monkey-4.jpg */,
|
||||
11FCCC31156189A600949704 /* Monkey-5.jpg */,
|
||||
11FCCC32156189A600949704 /* Tiger-1.jpg */,
|
||||
11FCCC33156189A600949704 /* Tiger-2.jpg */,
|
||||
);
|
||||
name = Images;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F41DE61B171DB8A500960CB7 /* TagManager SDK */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
88679A8B17A1841C00F476D5 /* libGoogleAnalyticsServices.a */,
|
||||
47EC964F17A19FC900D685C9 /* TAGDataLayer.h */,
|
||||
F41DE61E171DB8A500960CB7 /* TAGContainer.h */,
|
||||
F431344E174E8F96003C1079 /* TAGContainerOpener.h */,
|
||||
F431344F174E8F96003C1079 /* TAGLogger.h */,
|
||||
F41DE620171DB8A500960CB7 /* TAGManager.h */,
|
||||
);
|
||||
name = "TagManager SDK";
|
||||
path = ../../Library;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
113B6EE2153E1F0B003CAC38 /* CuteAnimals */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 113B6EFB153E1F0B003CAC38 /* Build configuration list for PBXNativeTarget "CuteAnimals" */;
|
||||
buildPhases = (
|
||||
113B6EDF153E1F0B003CAC38 /* Sources */,
|
||||
113B6EE0153E1F0B003CAC38 /* Frameworks */,
|
||||
113B6EE1153E1F0B003CAC38 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = CuteAnimals;
|
||||
productName = CuteAnimals;
|
||||
productReference = 113B6EE3153E1F0B003CAC38 /* CuteAnimals.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
113B6EDA153E1F0B003CAC38 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0460;
|
||||
};
|
||||
buildConfigurationList = 113B6EDD153E1F0B003CAC38 /* Build configuration list for PBXProject "CuteAnimals" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 113B6ED8153E1F0B003CAC38;
|
||||
productRefGroup = 113B6EE4153E1F0B003CAC38 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
113B6EE2153E1F0B003CAC38 /* CuteAnimals */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
113B6EE1153E1F0B003CAC38 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
113B6F14153E1F99003CAC38 /* RootViewController.xib in Resources */,
|
||||
113B6F15153E1F99003CAC38 /* CategoryViewController_iPad.xib in Resources */,
|
||||
113B6F16153E1F99003CAC38 /* CategoryViewController_iPhone.xib in Resources */,
|
||||
11FCCC34156189A600949704 /* Bunny-1.jpg in Resources */,
|
||||
11FCCC35156189A600949704 /* Bunny-2.jpg in Resources */,
|
||||
11FCCC36156189A600949704 /* Bunny-3.jpg in Resources */,
|
||||
11FCCC37156189A600949704 /* Cat-1.jpg in Resources */,
|
||||
11FCCC38156189A600949704 /* Cat-2.jpg in Resources */,
|
||||
11FCCC39156189A600949704 /* Cat-3.jpg in Resources */,
|
||||
11FCCC3A156189A600949704 /* Cat-4.jpg in Resources */,
|
||||
11FCCC3B156189A600949704 /* Lion-1.jpg in Resources */,
|
||||
11FCCC3C156189A600949704 /* Lion-2.jpg in Resources */,
|
||||
11FCCC3D156189A600949704 /* Lion-3.jpg in Resources */,
|
||||
11FCCC3E156189A600949704 /* Lion-4.jpg in Resources */,
|
||||
11FCCC3F156189A600949704 /* Monkey-1.jpg in Resources */,
|
||||
11FCCC40156189A600949704 /* Monkey-2.jpg in Resources */,
|
||||
11FCCC41156189A600949704 /* Monkey-3.jpg in Resources */,
|
||||
11FCCC42156189A600949704 /* Monkey-4.jpg in Resources */,
|
||||
11FCCC43156189A600949704 /* Monkey-5.jpg in Resources */,
|
||||
11FCCC44156189A600949704 /* Tiger-1.jpg in Resources */,
|
||||
11FCCC45156189A600949704 /* Tiger-2.jpg in Resources */,
|
||||
F4FE3F5617555573000A691A /* GTM-XXXX.plist in Resources */,
|
||||
47EC965417A1C9EB00D685C9 /* GTM-XXXX in Resources */,
|
||||
47EC965A17A1CCDE00D685C9 /* Container.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
113B6EDF153E1F0B003CAC38 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
113B6F10153E1F99003CAC38 /* AppDelegate.m in Sources */,
|
||||
113B6F11153E1F99003CAC38 /* main.m in Sources */,
|
||||
113B6F12153E1F99003CAC38 /* NavController.m in Sources */,
|
||||
113B6F13153E1F99003CAC38 /* RootViewController.m in Sources */,
|
||||
11FCCC1F1561834700949704 /* CategoryViewController.m in Sources */,
|
||||
11FCCC201561834700949704 /* ImageViewController.m in Sources */,
|
||||
47EC965217A19FDD00D685C9 /* Utils.m in Sources */,
|
||||
47CD7CE717BAA2B1008840A0 /* CustomTagHandler.m in Sources */,
|
||||
47CD7CED17BAA447008840A0 /* CustomMacroHandler.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
113B6EF9153E1F0B003CAC38 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
113B6EFA153E1F0B003CAC38 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
113B6EFC153E1F0B003CAC38 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CuteAnimals-Prefix.pch";
|
||||
INFOPLIST_FILE = "CuteAnimals-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../Library\"",
|
||||
"\"$(SRCROOT)/../../..\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
113B6EFD153E1F0B003CAC38 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CuteAnimals-Prefix.pch";
|
||||
INFOPLIST_FILE = "CuteAnimals-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../Library\"",
|
||||
"\"$(SRCROOT)/../../..\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
113B6EDD153E1F0B003CAC38 /* Build configuration list for PBXProject "CuteAnimals" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
113B6EF9153E1F0B003CAC38 /* Debug */,
|
||||
113B6EFA153E1F0B003CAC38 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
113B6EFB153E1F0B003CAC38 /* Build configuration list for PBXNativeTarget "CuteAnimals" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
113B6EFC153E1F0B003CAC38 /* Debug */,
|
||||
113B6EFD153E1F0B003CAC38 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 113B6EDA153E1F0B003CAC38 /* Project object */;
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?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>Adjective</key>
|
||||
<string>Cute</string>
|
||||
<key>Title</key>
|
||||
<string>Cute Animals</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,22 @@
|
|||
//
|
||||
// ImageViewController.h
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "NavController.h"
|
||||
|
||||
@interface ImageViewController : UIViewController
|
||||
|
||||
@property(nonatomic, retain) NavController *navController;
|
||||
@property(nonatomic, retain) UIImageView *imageView;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
title:(NSString *)title
|
||||
image:(UIImage *)image;
|
||||
|
||||
@end
|
|
@ -0,0 +1,71 @@
|
|||
//
|
||||
// ImageViewController.m
|
||||
// CuteAnimals
|
||||
//
|
||||
// Copyright 2013 Google, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#if !defined(__has_feature) || !__has_feature(objc_arc)
|
||||
#error "This file requires ARC support."
|
||||
#endif
|
||||
|
||||
#import "ImageViewController.h"
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "TAGDataLayer.h"
|
||||
#import "TAGManager.h"
|
||||
#import "Utils.h"
|
||||
|
||||
@interface ImageViewController ()
|
||||
|
||||
@property(nonatomic, assign) AppDelegate *delegate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation ImageViewController
|
||||
|
||||
@synthesize imageView = _imageView;
|
||||
@synthesize navController = _navController;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
title:(NSString *)title
|
||||
image:(UIImage *)image {
|
||||
self = [super initWithNibName:nibNameOrNil
|
||||
bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
self.title = title;
|
||||
self.imageView = [[UIImageView alloc] initWithImage:image];
|
||||
self.imageView.userInteractionEnabled = YES;
|
||||
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
// Override
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Put the image_name into the data layer for future use.
|
||||
[self.delegate.tagManager.dataLayer pushValue:self.title
|
||||
forKey:@"category_name"];
|
||||
}
|
||||
|
||||
// Override
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
[Utils pushOpenScreenEventWithScreenName:@"ImageViewScreen"];
|
||||
}
|
||||
|
||||
// Override
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[super viewDidDisappear:animated];
|
||||
[Utils pushCloseScreenEventWithScreenName:@"ImageViewScreen"];
|
||||
}
|
||||
|
||||
// Override
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:
|
||||
(UIInterfaceOrientation)interfaceOrientation {
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 62 KiB |