forked from move-fast/qed-docs
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
executable file
·224 lines (208 loc) · 16.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<!DOCTYPE html>
<html lang="en">
<head>
<title>QEDSDK Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="QEDSDK Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">QEDSDK Docs</a> (93% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">QEDSDK Reference</a>
<img id="carat" src="img/carat.png" />
QEDSDK Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/QEDAPI.html">QEDAPI</a>
</li>
<li class="nav-group-task">
<a href="Classes/QEDAPI/Notifications.html">– Notifications</a>
</li>
<li class="nav-group-task">
<a href="Classes/QEDMediaCaptureAndPlayViewController.html">QEDMediaCaptureAndPlayViewController</a>
</li>
<li class="nav-group-task">
<a href="Classes/QEDMediaCaptureAndPlayViewController/DismissReason.html">– DismissReason</a>
</li>
<li class="nav-group-task">
<a href="Classes/QEDMediaCaptureAndPlayViewController/SetupError.html">– SetupError</a>
</li>
<li class="nav-group-task">
<a href="Classes/QEDMediaCaptureAndPlayViewController/MediaType.html">– MediaType</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/QEDMediaCaptureAndPlayViewControllerDelegate.html">QEDMediaCaptureAndPlayViewControllerDelegate</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Structs.html">Structures</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Structs/MFMailList.html">MFMailList</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDFile.html">QEDFile</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDFile/FileType.html">– FileType</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDFile/UploadStatus.html">– UploadStatus</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDModel.html">QEDModel</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDReport.html">QEDReport</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDReport/ProofStatus.html">– ProofStatus</a>
</li>
<li class="nav-group-task">
<a href="Structs/QEDUserProperties.html">QEDUserProperties</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1 id='qedsdk-documentation-for-ios' class='heading'>QEDSDK Documentation for IOS</h1>
<p>The IOS <em>QEDSDK</em> provides a set of convenience instance types aimed to ease and shorten the development time for the usage of the <a href="http://docs.qed.digital"><em>QED REST API</em></a>.</p>
<p>The main type is the <code><a href="Classes/QEDAPI.html">QEDAPI</a></code> class, which is a wrapper over the functionality of the <a href="http://docs.qed.digital"><em>QED REST API</em></a>.
The <code><a href="Structs/QEDFile.html">QEDFile</a></code> defines the representation of a data file to be reported to and notarized by the <a href="http://docs.qed.digital"><em>QED REST API</em></a>.
The <code><a href="Structs/QEDReport.html">QEDReport</a></code> defines a representation of a group of <code><a href="Structs/QEDFile.html">QEDFile</a></code>‘s that want to be joinly notarized as a common report. The <code><a href="Classes/QEDAPI.html">QEDAPI</a></code> class receives and returns <q>report</q> representations using the <code><a href="Structs/QEDReport.html">QEDReport</a></code> struct.</p>
<p>Two more convenience types are provided which are optional to use:</p>
<ul>
<li>The <code><a href="Structs/QEDModel.html">QEDModel</a></code> provides a set of convenience methods to aid on persisting and retrieving a data model to/from local storage.</li>
<li>The <code><a href="Classes/QEDMediaCaptureAndPlayViewController.html">QEDMediaCaptureAndPlayViewController</a></code> provides in a simple interface, the necessary functionality to play and capture videos and photos. You can use this view controller out of the box if your application is meant for media capturing for notarization.</li>
<li>The <code><a href="Structs/QEDUserProperties.html">QEDUserProperties</a></code> represents user information inclduing email, phone and mailing list subscriptions</li>
</ul>
<h1 id='getting-started' class='heading'>Getting Started</h1>
<h2 id='add-the-sdk-to-your-project' class='heading'>Add the SDK to your project</h2>
<h3 id='cocoa-pods' class='heading'>Cocoa Pods</h3>
<ol>
<li><p>To integrate <em>QEDSDK</em> for iOS into your Xcode project using CocoaPods, specify it in your <code>Podfile</code>:</p>
<pre class="highlight ruby"><code><span class="n">source</span> <span class="s1">'https://github.com/CocoaPods/Specs.git'</span>
<span class="n">platform</span> <span class="ss">:ios</span><span class="p">,</span> <span class="s1">'11.0'</span>
<span class="n">use_frameworks!</span>
<span class="n">target</span> <span class="s1">'YOUR_APPLICATION_TARGET_NAME_HERE'</span> <span class="k">do</span>
<span class="n">pod</span> <span class="s1">'QEDSDK'</span>
<span class="k">end</span>
</code></pre></li>
<li><p>Then, run the following command:</p>
<pre class="highlight shell"><code><span class="nv">$ </span>pod <span class="nb">install</span>
</code></pre></li>
</ol>
<h3 id='manually' class='heading'>Manually</h3>
<ol>
<li><p>Drag <strong>QEDSDK.framework</strong> to the <strong>Embedded Binaries</strong> section in the <em>General</em> tap of your project’s main target. Check <em>Copy items if needed</em> and choose to <em>Create groups</em>.
<img src="../images/IOS_Image01.png" alt="Drag to Embedd"></p></li>
<li><p>Add a new Run Script Phase in your target’s Build Phases.</p>
<p><strong>IMPORTANT</strong>: Make sure this Run Script Phase is below the Embed Frameworks build phase. You can drag and drop build phases to rearrange them.</p>
<p>Paste the following line in this Run Script Phase’s script text field:</p>
<pre class="highlight shell"><code>bash <span class="s2">"</span><span class="k">${</span><span class="nv">BUILT_PRODUCTS_DIR</span><span class="k">}</span><span class="s2">/</span><span class="k">${</span><span class="nv">FRAMEWORKS_FOLDER_PATH</span><span class="k">}</span><span class="s2">/QEDSDK.framework/ios-strip-frameworks.sh"</span> QEDSDK
</code></pre>
<p><img src="../images/IOS_Image02.png" alt="Build Phases"></p></li>
<li><p>(Ignore if your project is a Swift only project) - Set the <strong>Always Embed Swift Standard Libraries</strong> setting in your targets <em>Build Settings</em> to <strong>YES</strong></p>
<p><img src="../images/IOS_Image03.png" alt="Allways Embed Swift"></p></li>
</ol>
<h2 id='get-your-api-key' class='heading'>Get your API Key</h2>
<p>In order to use the <em>QEDSDK</em>, you must obtain an API Key. Please get in contact: <a href="mailto:[email protected]">[email protected]</a>.</p>
<h2 id='quick-launch' class='heading'>Quick Launch</h2>
<ol>
<li><p>Open your <em>AppDelegate</em> file and import the <em>QEDSDK</em>.</p>
<pre class="highlight swift"><code><span class="kd">import</span> <span class="kt">QEDSDK</span>
</code></pre></li>
<li><p>Copy the lines below and paste them into your AppDelegate’s <code>application(_:didFinishLaunchingWithOptions:)</code> method</p>
<pre class="highlight swift"><code><span class="kt">QEDAPI</span><span class="o">.</span><span class="nf">setup</span><span class="p">(</span><span class="nv">with</span><span class="p">:</span> <span class="s">"YOUR_API_KEY"</span><span class="p">)</span>
</code></pre></li>
<li><p>Prepare a <code><a href="Structs/QEDFile.html">QEDFile</a></code> representing a local data file to be reported and notarized. Create a <code><a href="Structs/QEDFile.html">QEDFile</a></code> instance. You can instantiate with the name and extension of a file that you have locally stored on the <code><a href="Structs/QEDFile.html#/s:6QEDSDK7QEDFileV12qedDirectory10Foundation3URLVvpZ">QEDFile.qedDirectory</a></code> root url.</p>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">file</span> <span class="o">=</span> <span class="kt">QEDFile</span><span class="p">(</span><span class="nv">name</span><span class="p">:</span> <span class="s">"FILE_NAME"</span><span class="p">,</span> <span class="nv">extension</span><span class="p">:</span> <span class="s">"FILE_EXTENSION"</span><span class="p">,</span> <span class="nv">dateTaken</span><span class="p">:</span> <span class="kt">Date</span><span class="p">())</span><span class="o">!</span>
</code></pre></li>
<li><p>Prepare a <code><a href="Structs/QEDReport.html">QEDReport</a></code> representing a group of files to be reported and notarized. Create a <code><a href="Structs/QEDReport.html">QEDReport</a></code> instance. You can instantiate with the name and add the files associated with the report.</p>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">report</span> <span class="o">=</span> <span class="kt">QEDReport</span><span class="p">(</span><span class="nv">name</span><span class="p">:</span> <span class="s">"REPORT_NAME"</span><span class="p">)</span><span class="o">!</span>
<span class="n">report</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="p">[</span><span class="n">file</span><span class="p">]</span>
</code></pre></li>
<li><p>Calculate the <em>SHA256</em> hash of the report if not done yet.</p>
<pre class="highlight swift"><code><span class="n">report</span> <span class="o">=</span> <span class="n">report</span><span class="o">.</span><span class="nf">withCalculatedHash</span><span class="p">()</span>
</code></pre></li>
<li><p>Using the <code><a href="Classes/QEDAPI.html">QEDAPI</a></code> class methods to interact with the <a href="http://docs.qed.digital"><em>QED REST API</em></a> server, issue a report to the backend for notarization</p>
<pre class="highlight swift"><code><span class="kt">QEDAPI</span><span class="o">.</span><span class="nf">send</span><span class="p">(</span><span class="n">report</span><span class="p">)</span> <span class="p">{</span> <span class="p">(</span><span class="n">updatedReport</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span> <span class="k">in</span>
<span class="c1">// Make sure to perform UI update related actions on main thread</span>
<span class="kt">DispatchQueue</span><span class="o">.</span><span class="n">main</span><span class="o">.</span><span class="n">async</span> <span class="p">{</span>
<span class="k">guard</span> <span class="n">error</span> <span class="o">==</span> <span class="kc">nil</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// Handle reporting errors. The `error` instance will</span>
<span class="c1">// include detailed information.</span>
<span class="k">return</span>
<span class="p">}</span>
<span class="c1">// Handle success. Update your data source and UI accordingly.</span>
<span class="c1">// `updatedReport` contains a copy of `report` with an updated `proofStatus`</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></li>
<li><p>You can check periodically for status updates until report is <code><a href="Structs/QEDReport/ProofStatus.html#/s:6QEDSDK9QEDReportV11ProofStatusO9confirmedyA2EmF">QEDReport.ProofStatus.confirmed</a></code></p>
<pre class="highlight swift"><code><span class="kt">QEDAPI</span><span class="o">.</span><span class="nf">forceStatusUpdate</span><span class="p">(</span><span class="n">report</span><span class="p">)</span> <span class="p">{</span> <span class="p">(</span><span class="n">updatedReport</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span> <span class="k">in</span>
<span class="c1">// Make sure to perform UI update related actions on main thread</span>
<span class="kt">DispatchQueue</span><span class="o">.</span><span class="n">main</span><span class="o">.</span><span class="n">async</span> <span class="p">{</span>
<span class="k">guard</span> <span class="n">error</span> <span class="o">==</span> <span class="kc">nil</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// Handle reporting errors. The `error` instance will</span>
<span class="c1">// include detailed information.</span>
<span class="k">return</span>
<span class="p">}</span>
<span class="c1">// Handle success. Update your data source and UI accordingly.</span>
<span class="c1">// `updatedReport` contains a copy of `report` with an updated</span>
<span class="c1">// `proofStatus`</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></li>
<li><p>Once the <code><a href="Structs/QEDReport.html">QEDReport</a></code> status is <code><a href="Structs/QEDReport/ProofStatus.html#/s:6QEDSDK9QEDReportV11ProofStatusO9confirmedyA2EmF">QEDReport.ProofStatus.confirmed</a></code>, you can request a PDF certificate from backend</p>
<pre class="highlight swift"><code><span class="kt">QEDAPI</span><span class="o">.</span><span class="nf">generatePDF</span><span class="p">(</span><span class="nv">for</span><span class="p">:</span> <span class="n">report</span><span class="p">)</span> <span class="p">{</span> <span class="p">(</span><span class="n">success</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span> <span class="k">in</span>
<span class="c1">// Make sure to perform UI update related actions on main thread</span>
<span class="kt">DispatchQueue</span><span class="o">.</span><span class="n">main</span><span class="o">.</span><span class="n">async</span> <span class="p">{</span>
<span class="k">guard</span> <span class="n">success</span><span class="p">,</span> <span class="n">error</span> <span class="o">==</span> <span class="kc">nil</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// Handle pdf generation errors. The `error` instance will</span>
<span class="c1">// include detailed information.</span>
<span class="k">return</span>
<span class="p">}</span>
<span class="c1">// Handle success. Update your data source and UI accordingly.</span>
<span class="c1">// The PDF proof document is now stored in the `pdfURL` of</span>
<span class="c1">// the requested `report`</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></li>
</ol>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://buzztechno.com" target="_blank" rel="external">BuzzTechno</a>. All rights reserved. (Last updated: 2019-05-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>