Files
sparkle-project.github.io/documentation/api-reference/Protocols/SPUUpdaterDelegate.html
T
2025-09-16 05:19:13 +00:00

2474 lines
154 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>SPUUpdaterDelegate Protocol 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'>
<meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1.0" />
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/objc/Protocol/SPUUpdaterDelegate" class="dashAnchor"></a>
<a title="SPUUpdaterDelegate Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p>
<a href="../index.html">Sparkle 2.8.0 Docs</a>
<span class="no-mobile"> (59% documented)</span>
</p>
</div>
</header>
<div id="breadcrumbs-container">
<div class="content-wrapper">
<p id="breadcrumbs">
<span class="no-mobile">
<a href="../index.html">Sparkle</a>
<img id="carat" src="../img/carat.png" alt=""/>
<a href="../Protocols.html">Protocols</a>
<img id="carat" src="../img/carat.png" alt=""/>
SPUUpdaterDelegate Protocol Reference
</span>
</p>
</div>
</div>
<div class="wrapper">
<div class="article-wrapper">
<article class="main-content">
<section>
<section class="section">
<h1>SPUUpdaterDelegate</h1>
<div class="declaration">
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">@protocol</span> <span class="nc">SPUUpdaterDelegate</span> <span class="o">&lt;</span><span class="n">NSObject</span><span class="o">&gt;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">protocol</span> <span class="kt">SPUUpdaterDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
<p>Provides delegation methods to control the behavior of an <code><a href="../Classes/SPUUpdater.html">SPUUpdater</a></code> object.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:mayPerformUpdateCheck:error:"></a>
<a name="//apple_ref/objc/Method/-updater:mayPerformUpdateCheck:error:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:mayPerformUpdateCheck:error:">-updater:<wbr>mayPerformUpdateCheck:<wbr>error:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns whether to allow Sparkle to check for updates.</p>
<p>For example, this may be used to prevent Sparkle from interrupting a setup assistant.
Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes.</p>
<p>Note in Swift, this method returns Void and is marked with the throws keyword. If this method
doesn&rsquo;t throw an error, the updater may perform an update check. Otherwise if an error is thrown (we recommend using an NSError),
then the updater may not perform an update check.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">mayPerformUpdateCheck</span><span class="p">:(</span><span class="n"><a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a></span><span class="p">)</span><span class="nv">updateCheck</span>
<span class="nf">error</span><span class="p">:(</span><span class="n">NSError</span> <span class="o">*</span><span class="n">_Nullable</span> <span class="o">*</span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">error</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">mayPerform</span> <span class="nv">updateCheck</span><span class="p">:</span> <span class="kt"><a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a></span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateCheck</em>
</code>
</td>
<td>
<div>
<p>The type of update check that will be performed if the updater is allowed to check for updates.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>error</em>
</code>
</td>
<td>
<div>
<p>The populated error object if the updater may not perform a new update check. The <code>NSLocalizedDescriptionKey</code> user info key should be populated indicating a description of the error.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> if the updater is allowed to check for updates, otherwise <code>NO</code></p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)allowedChannelsForUpdater:"></a>
<a name="//apple_ref/objc/Method/-allowedChannelsForUpdater:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)allowedChannelsForUpdater:">-allowedChannelsForUpdater:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the set of Sparkle channels the updater is allowed to find new updates from.</p>
<p>An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel.
For instance:</p>
<pre class="highlight objective_c"><code><span class="o">&lt;</span><span class="n">item</span><span class="o">&gt;</span>
<span class="o">&lt;</span><span class="n">sparkle</span><span class="o">:</span><span class="n">version</span><span class="o">&gt;</span><span class="mi">2</span><span class="p">.</span><span class="mi">0</span> <span class="n">Beta</span> <span class="mi">1</span><span class="o">&lt;/</span><span class="n">sparkle</span><span class="o">:</span><span class="n">version</span><span class="o">&gt;</span>
<span class="o">&lt;</span><span class="n">sparkle</span><span class="o">:</span><span class="n">channel</span><span class="o">&gt;</span><span class="n">beta</span><span class="o">&lt;/</span><span class="n">sparkle</span><span class="o">:</span><span class="n">channel</span><span class="o">&gt;</span>
<span class="o">&lt;/</span><span class="n">item</span><span class="o">&gt;</span>
</code></pre>
<p>This example posts an update to the <code>beta</code> channel, so only updaters that are allowed to use the <code>beta</code> channel can find this update.</p>
<p>If the <code>&lt;sparkle:channel&gt;</code> element is not present, the update item is posted to the default channel and can be found by any updater.</p>
<p>You can pick any name you&rsquo;d like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods.</p>
<p>Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature.
This feature was added in Sparkle 2.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">NSSet</span><span class="o">&lt;</span><span class="n">NSString</span> <span class="o">*&gt;</span> <span class="o">*</span><span class="p">)</span><span class="nf">allowedChannelsForUpdater</span><span class="p">:</span>
<span class="p">(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">allowedChannels</span><span class="p">(</span><span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Set</span><span class="o">&lt;</span><span class="kt">String</span><span class="o">&gt;</span></code></pre>
</div>
</div>
<div>
<h4>Return Value</h4>
<p>The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior,
which means the updater will only look for updates in the default channel. The default channel is always included in the allowed set.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)feedURLStringForUpdater:"></a>
<a name="//apple_ref/objc/Method/-feedURLStringForUpdater:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)feedURLStringForUpdater:">-feedURLStringForUpdater:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns a custom appcast URL used for checking for new updates.</p>
<p>Override this to dynamically specify the feed URL.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nullable</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nf">feedURLStringForUpdater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">feedURLString</span><span class="p">(</span><span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">String</span><span class="p">?</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>An appcast feed URL to check for new updates in, or <code>nil</code> for the default behavior and if you don&rsquo;t want to be delegated this task.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:"></a>
<a name="//apple_ref/objc/Method/-feedParametersForUpdater:sendingSystemProfile:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:">-feedParametersForUpdater:<wbr>sendingSystemProfile:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns additional parameters to append to the appcast URL&rsquo;s query string.</p>
<p>This is potentially based on whether or not Sparkle will also be sending along the system profile.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">NSArray</span><span class="o">&lt;</span><span class="n">NSDictionary</span><span class="o">&lt;</span><span class="n">NSString</span> <span class="o">*</span><span class="p">,</span> <span class="n">NSString</span> <span class="o">*&gt;</span> <span class="o">*&gt;</span> <span class="o">*</span><span class="p">)</span>
<span class="nf">feedParametersForUpdater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">sendingSystemProfile</span><span class="p">:(</span><span class="n">BOOL</span><span class="p">)</span><span class="nv">sendingProfile</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">feedParameters</span><span class="p">(</span><span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">sendingSystemProfile</span> <span class="nv">sendingProfile</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="p">[[</span><span class="kt">String</span> <span class="p">:</span> <span class="kt">String</span><span class="p">]]</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>sendingProfile</em>
</code>
</td>
<td>
<div>
<p>Whether the system profile will also be sent.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>An array of dictionaries with keys: <code>key</code>, <code>value</code>, <code>displayKey</code>, <code>displayValue</code>, the latter two being specifically for display to the user.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldPromptForPermissionToCheckForUpdates:"></a>
<a name="//apple_ref/objc/Method/-updaterShouldPromptForPermissionToCheckForUpdates:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldPromptForPermissionToCheckForUpdates:">-updaterShouldPromptForPermissionToCheckForUpdates:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns whether Sparkle should prompt the user about checking for new updates automatically.</p>
<p>Use this to override the default behavior, which is to prompt for permission to check for updates on second app launch
(if SUEnableAutomaticChecks is not specified).</p>
<p>This method is not called if SUEnableAutomaticChecks is defined in Info.plist or
if the user has responded to a permission prompt before.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updaterShouldPromptForPermissionToCheckForUpdates</span><span class="p">:</span>
<span class="p">(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterShouldPromptForPermissionToCheck</span><span class="p">(</span><span class="n">forUpdates</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> if the updater should prompt for permission to check for new updates automatically, otherwise <code>NO</code></p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)allowedSystemProfileKeysForUpdater:"></a>
<a name="//apple_ref/objc/Method/-allowedSystemProfileKeysForUpdater:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)allowedSystemProfileKeysForUpdater:">-allowedSystemProfileKeysForUpdater:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns an allowed list of system profile keys to be appended to the appcast URL&rsquo;s query string.</p>
<p>By default all keys will be included. This method allows overriding which keys should only be allowed.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nullable</span> <span class="n">NSArray</span><span class="o">&lt;</span><span class="n">NSString</span> <span class="o">*&gt;</span> <span class="o">*</span><span class="p">)</span><span class="nf">allowedSystemProfileKeysForUpdater</span><span class="p">:</span>
<span class="p">(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">allowedSystemProfileKeys</span><span class="p">(</span><span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="p">[</span><span class="kt">String</span><span class="p">]?</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>An array of system profile keys to include in the appcast URL&rsquo;s query string. Elements must be one of the <code>SUSystemProfiler*Key</code> constants. Return <code>nil</code> for the default behavior and if you don&rsquo;t want to be delegated this task.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishLoadingAppcast:"></a>
<a name="//apple_ref/objc/Method/-updater:didFinishLoadingAppcast:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishLoadingAppcast:">-updater:<wbr>didFinishLoadingAppcast:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called after Sparkle has downloaded the appcast from the remote server.</p>
<p>Implement this if you want to do some special handling with the appcast once it finishes loading.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">didFinishLoadingAppcast</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcast.html">SUAppcast</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">appcast</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">didFinishLoading</span> <span class="nv">appcast</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcast.html">SUAppcast</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>appcast</em>
</code>
</td>
<td>
<div>
<p>The appcast that was downloaded from the remote server.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:didFindValidUpdate:"></a>
<a name="//apple_ref/objc/Method/-updater:didFindValidUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFindValidUpdate:">-updater:<wbr>didFindValidUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when a new valid update is found by the update driver.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">didFindValidUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">didFindValidUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that is proposed to be installed.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:error:"></a>
<a name="//apple_ref/objc/Method/-updaterDidNotFindUpdate:error:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:error:">-updaterDidNotFindUpdate:<wbr>error:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when a valid new update is not found.</p>
<p>There are various reasons a new update is unavailable and can&rsquo;t be installed.</p>
<p>The userInfo dictionary on the error is populated with three keys:</p>
<ul>
<li><code><a href="../Constants.html#/c:@SPULatestAppcastItemFoundKey">SPULatestAppcastItemFoundKey</a></code>: if available, this may provide the latest <code><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></code> that was found. This will be <code>nil</code> if it&rsquo;s unavailable.</li>
<li><code><a href="../Constants.html#/c:@SPUNoUpdateFoundReasonKey">SPUNoUpdateFoundReasonKey</a></code>: This will provide the <code><a href="../Enums/SPUNoUpdateFoundReason.html">SPUNoUpdateFoundReason</a></code>.
For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version.</li>
<li><p><code><a href="../Constants.html#/c:@SPUNoUpdateFoundUserInitiatedKey">SPUNoUpdateFoundUserInitiatedKey</a></code>: A boolean that indicates if a new update was not found when the user intitiated an update check manually.</p></li>
</ul>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updaterDidNotFindUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">error</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterDidNotFindUpdate</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>error</em>
</code>
</td>
<td>
<div>
<p>An error containing information on why a new valid update was not found</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:"></a>
<a name="//apple_ref/objc/Method/-updaterDidNotFindUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:">-updaterDidNotFindUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when a valid new update is not found.</p>
<p>If more information is needed on why an update was not found, use <code><a href="../Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:error:">-[SPUUpdaterDelegate updaterDidNotFindUpdate:error:]</a></code> instead.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updaterDidNotFindUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterDidNotFindUpdate</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)bestValidUpdateInAppcast:forUpdater:"></a>
<a name="//apple_ref/objc/Method/-bestValidUpdateInAppcast:forUpdater:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)bestValidUpdateInAppcast:forUpdater:">-bestValidUpdateInAppcast:<wbr>forUpdater:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the item in the appcast corresponding to the update that should be installed.</p>
<p>Please consider using or migrating to other supported features before adopting this method.
Specifically:</p>
<ul>
<li>If you want to filter out certain tagged updates (like beta updates), consider <code><a href="../Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedChannelsForUpdater:">-[SPUUpdaterDelegate allowedChannelsForUpdater:]</a></code> instead.</li>
<li>If you want to treat certain updates as informational-only, consider supplying <code>&lt;sparkle:informationalUpdate&gt;</code> with a set of affected versions users are updating from.</li>
</ul>
<p>If you&rsquo;re using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast.</p>
<p>Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version
because Sparkle already has logic for determining whether or not those items should be filtered out.</p>
<p>Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored.
Sparkle picks the delta item from your selection if the appropriate one is available.</p>
<p>This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast.
If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version.</p>
<p>This method may be called multiple times for different selections and filters. This method should be efficient.</p>
<p>Return <code><a href="../Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(cm)emptyAppcastItem">+[SUAppcastItem emptyAppcastItem]</a></code> if no appcast item is valid.</p>
<p>Return <code>nil</code> if you don&rsquo;t want to be delegated this task and want to let Sparkle handle picking the best valid update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nullable</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span>
<span class="nf">bestValidUpdateInAppcast</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcast.html">SUAppcast</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">appcast</span>
<span class="nf">forUpdater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">bestValidUpdate</span><span class="p">(</span><span class="k">in</span> <span class="nv">appcast</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcast.html">SUAppcast</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">?</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>appcast</em>
</code>
</td>
<td>
<div>
<p>The appcast that was downloaded from the remote server.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The best valid appcast item.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldProceedWithUpdate:updateCheck:error:"></a>
<a name="//apple_ref/objc/Method/-updater:shouldProceedWithUpdate:updateCheck:error:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldProceedWithUpdate:updateCheck:error:">-updater:<wbr>shouldProceedWithUpdate:<wbr>updateCheck:<wbr>error:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns whether or not the updater should proceed with the new chosen update from the appcast.</p>
<p>By default, the updater will always proceed with the best selected update found in an appcast. Override this to override this behavior.</p>
<p>If you return <code>NO</code> and populate the <code>error,</code> the user is not shown this <code>updateItem</code> nor is the update downloaded or installed.</p>
<p>Note in Swift, this method returns Void and is marked with the throws keyword. If this method doesn&rsquo;t throw an error, the updater will proceed with the update.
Otherwise if an error is thrown (we recommend using an NSError), then the will not proceed with the update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">shouldProceedWithUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updateItem</span>
<span class="nf">updateCheck</span><span class="p">:(</span><span class="n"><a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a></span><span class="p">)</span><span class="nv">updateCheck</span>
<span class="nf">error</span><span class="p">:(</span><span class="n">NSError</span> <span class="o">*</span><span class="n">_Nullable</span> <span class="o">*</span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">error</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">shouldProceedWithUpdate</span> <span class="nv">updateItem</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">,</span> <span class="nv">updateCheck</span><span class="p">:</span> <span class="kt"><a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a></span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateItem</em>
</code>
</td>
<td>
<div>
<p>The selected update item to proceed with.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateCheck</em>
</code>
</td>
<td>
<div>
<p>The type of update check that would be performed if proceeded.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>error</em>
</code>
</td>
<td>
<div>
<p>An error object that must be populated by the delegate if the updater should not proceed with the update. The <code>NSLocalizedDescriptionKey</code> user info key should be populated indicating a description of the error.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> if the updater should proceed with <code>updateItem,</code> otherwise <code>NO</code> if the updater should not proceed with the update with an <code>error</code> populated.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:userDidMakeChoice:forUpdate:state:"></a>
<a name="//apple_ref/objc/Method/-updater:userDidMakeChoice:forUpdate:state:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:userDidMakeChoice:forUpdate:state:">-updater:<wbr>userDidMakeChoice:<wbr>forUpdate:<wbr>state:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when a user makes a choice to install, dismiss, or skip an update.</p>
<p>If the <code>choice</code> is <code>SPUUserUpdateChoiceDismiss</code> and <code>state.stage</code> is <code>SPUUserUpdateStageDownloaded</code> the downloaded update is kept
around until the next time Sparkle reminds the user of the update.</p>
<p>If the <code>choice</code> is <code>SPUUserUpdateChoiceDismiss</code> and <code>state.stage</code> is <code>SPUUserUpdateStageInstalling</code> the update is still set to install on application termination.</p>
<p>If the <code>choice</code> is <code>SPUUserUpdateChoiceSkip</code> the user will not be reminded in the future for this update unless they initiate an update check themselves.</p>
<p>If <code>updateItem.isInformationOnlyUpdate</code> is <code>YES</code> the <code>choice</code> cannot be <code>SPUUserUpdateChoiceInstall</code>.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">userDidMakeChoice</span><span class="p">:(</span><span class="n"><a href="../Enums/SPUUserUpdateChoice.html">SPUUserUpdateChoice</a></span><span class="p">)</span><span class="nv">choice</span>
<span class="nf">forUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updateItem</span>
<span class="nf">state</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUserUpdateState.html">SPUUserUpdateState</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">state</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">userDidMake</span> <span class="nv">choice</span><span class="p">:</span> <span class="kt"><a href="../Enums/SPUUserUpdateChoice.html">SPUUserUpdateChoice</a></span><span class="p">,</span> <span class="n">forUpdate</span> <span class="nv">updateItem</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">,</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUserUpdateState.html">SPUUserUpdateState</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>choice</em>
</code>
</td>
<td>
<div>
<p>The choice (install, dismiss, or skip) the user made for this <code>updateItem</code></p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateItem</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that the user made a choice on.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>state</em>
</code>
</td>
<td>
<div>
<p>The current state for the update which includes if the update has already been downloaded or already installing.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldDownloadReleaseNotesForUpdate:"></a>
<a name="//apple_ref/objc/Method/-updater:shouldDownloadReleaseNotesForUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldDownloadReleaseNotesForUpdate:">-updater:<wbr>shouldDownloadReleaseNotesForUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns whether the release notes (if available) should be downloaded after an update is found and shown.</p>
<p>This is specifically for the <code>&lt;releaseNotesLink&gt;</code> element in the appcast item.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">shouldDownloadReleaseNotesForUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updateItem</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">shouldDownloadReleaseNotesForUpdate</span> <span class="nv">updateItem</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateItem</em>
</code>
</td>
<td>
<div>
<p>The update item to download and show release notes from.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> to download and show the release notes if available, otherwise <code>NO.</code> The default behavior is <code>YES.</code></p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:willDownloadUpdate:withRequest:"></a>
<a name="//apple_ref/objc/Method/-updater:willDownloadUpdate:withRequest:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:willDownloadUpdate:withRequest:">-updater:<wbr>willDownloadUpdate:<wbr>withRequest:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called immediately before downloading the specified update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">willDownloadUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span>
<span class="nf">withRequest</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSMutableURLRequest</span> <span class="o">*</span><span class="p">)</span><span class="nv">request</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">willDownloadUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">,</span> <span class="n">with</span> <span class="nv">request</span><span class="p">:</span> <span class="kt">NSMutableURLRequest</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that is proposed to be downloaded.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>request</em>
</code>
</td>
<td>
<div>
<p>The mutable URL request that will be used to download the update.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:didDownloadUpdate:"></a>
<a name="//apple_ref/objc/Method/-updater:didDownloadUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:didDownloadUpdate:">-updater:<wbr>didDownloadUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called immediately after successful download of the specified update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">didDownloadUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">didDownloadUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The SUUpdater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that has been downloaded.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:failedToDownloadUpdate:error:"></a>
<a name="//apple_ref/objc/Method/-updater:failedToDownloadUpdate:error:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:failedToDownloadUpdate:error:">-updater:<wbr>failedToDownloadUpdate:<wbr>error:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called after the specified update failed to download.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">failedToDownloadUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span>
<span class="nf">error</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">failedToDownloadUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that failed to download.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>error</em>
</code>
</td>
<td>
<div>
<p>The error generated by the failed download.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)userDidCancelDownload:"></a>
<a name="//apple_ref/objc/Method/-userDidCancelDownload:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)userDidCancelDownload:">-userDidCancelDownload:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when the user cancels an update while it is being downloaded.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">userDidCancelDownload</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">userDidCancelDownload</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:willExtractUpdate:"></a>
<a name="//apple_ref/objc/Method/-updater:willExtractUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:willExtractUpdate:">-updater:<wbr>willExtractUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called immediately before extracting the specified downloaded update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">willExtractUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">willExtractUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The SUUpdater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that is proposed to be extracted.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:didExtractUpdate:"></a>
<a name="//apple_ref/objc/Method/-updater:didExtractUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:didExtractUpdate:">-updater:<wbr>didExtractUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called immediately after extracting the specified downloaded update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">didExtractUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">didExtractUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The SUUpdater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that has been extracted.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdate:"></a>
<a name="//apple_ref/objc/Method/-updater:willInstallUpdate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdate:">-updater:<wbr>willInstallUpdate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called immediately before installing the specified update.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">willInstallUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">willInstallUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that is proposed to be installed.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:"></a>
<a name="//apple_ref/objc/Method/-updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:">-updater:<wbr>shouldPostponeRelaunchForUpdate:<wbr>untilInvokingBlock:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns whether the relaunch should be delayed in order to perform other tasks.</p>
<p>This is not called if the user didn&rsquo;t relaunch on the previous update,
in that case it will immediately restart.</p>
<p>This may also not be called if the application is not going to relaunch after it terminates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">shouldPostponeRelaunchForUpdate</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span>
<span class="nf">untilInvokingBlock</span><span class="p">:(</span><span class="n">nonnull</span> <span class="kt">void</span> <span class="p">(</span><span class="o">^</span><span class="p">)(</span><span class="kt">void</span><span class="p">))</span><span class="nv">installHandler</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">shouldPostponeRelaunchForUpdate</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">,</span> <span class="n">untilInvokingBlock</span> <span class="nv">installHandler</span><span class="p">:</span> <span class="kd">@escaping</span> <span class="p">()</span> <span class="o">-&gt;</span> <span class="kt">Void</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that is proposed to be installed.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>installHandler</em>
</code>
</td>
<td>
<div>
<p>The install handler that must be completed before continuing with the relaunch.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> to delay the relaunch until <code>installHandler</code> is invoked.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldRelaunchApplication:"></a>
<a name="//apple_ref/objc/Method/-updaterShouldRelaunchApplication:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldRelaunchApplication:">-updaterShouldRelaunchApplication:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns whether the application should be relaunched at all.</p>
<p>Some apps <strong>cannot</strong> be relaunched under certain circumstances.
This method can be used to explicitly prevent a relaunch.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updaterShouldRelaunchApplication</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterShouldRelaunchApplication</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> if the updater should be relaunched, otherwise <code>NO</code> if it shouldn&rsquo;t.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterWillRelaunchApplication:"></a>
<a name="//apple_ref/objc/Method/-updaterWillRelaunchApplication:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterWillRelaunchApplication:">-updaterWillRelaunchApplication:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called immediately before relaunching.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updaterWillRelaunchApplication</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterWillRelaunchApplication</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)versionComparatorForUpdater:"></a>
<a name="//apple_ref/objc/Method/-versionComparatorForUpdater:" class="dashAnchor"></a>
<a class="token discouraged" href="#/c:objc(pl)SPUUpdaterDelegate(im)versionComparatorForUpdater:">-versionComparatorForUpdater:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="aside aside-deprecated">
<p class="aside-title">Deprecated</p>
<p>Custom version comparators are deprecated because they are incompatible with how the system compares different versions of an app.</p>
</div>
<div class="abstract">
<p>Returns an object that compares version numbers to determine their arithmetic relation to each other.</p>
<p>This method allows you to provide a custom version comparator.
If you don&rsquo;t implement this method or return <code>nil,</code>
the standard version comparator will be used.</p>
<p>Note that the standard version comparator may be used during installation for preventing a downgrade,
even if you provide a custom comparator here.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nullable</span> <span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SUVersionComparison.html">SUVersionComparison</a></span><span class="o">&gt;</span><span class="p">)</span><span class="nf">versionComparatorForUpdater</span><span class="p">:</span>
<span class="p">(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">versionComparator</span><span class="p">(</span><span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Protocols/SUVersionComparison.html">SUVersionComparison</a></span><span class="p">?</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The custom version comparator or <code>nil</code> if you don&rsquo;t want to be delegated this task.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:willScheduleUpdateCheckAfterDelay:"></a>
<a name="//apple_ref/objc/Method/-updater:willScheduleUpdateCheckAfterDelay:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:willScheduleUpdateCheckAfterDelay:">-updater:<wbr>willScheduleUpdateCheckAfterDelay:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when a background update will be scheduled after a delay.</p>
<p>Automatic update checks need to be enabled for this to trigger.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">willScheduleUpdateCheckAfterDelay</span><span class="p">:(</span><span class="n">NSTimeInterval</span><span class="p">)</span><span class="nv">delay</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">willScheduleUpdateCheckAfterDelay</span> <span class="nv">delay</span><span class="p">:</span> <span class="kt">TimeInterval</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>delay</em>
</code>
</td>
<td>
<div>
<p>The delay in seconds until the next scheduled update will occur. This is an approximation and may vary due to system state.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterWillNotScheduleUpdateCheck:"></a>
<a name="//apple_ref/objc/Method/-updaterWillNotScheduleUpdateCheck:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterWillNotScheduleUpdateCheck:">-updaterWillNotScheduleUpdateCheck:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when no update checks will be scheduled in the future.</p>
<p>This may later change if automatic update checks become enabled.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updaterWillNotScheduleUpdateCheck</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterWillNotScheduleUpdateCheck</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)decryptionPasswordForUpdater:"></a>
<a name="//apple_ref/objc/Method/-decryptionPasswordForUpdater:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)decryptionPasswordForUpdater:">-decryptionPasswordForUpdater:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the decryption password (if any) which is used to extract the update archive DMG.</p>
<p>Return <code>nil</code> if no password should be used.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nullable</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nf">decryptionPasswordForUpdater</span><span class="p">:</span>
<span class="p">(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">decryptionPassword</span><span class="p">(</span><span class="k">for</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">String</span><span class="p">?</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The password used for decrypting the archive, or <code>nil</code> if no password should be used.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationBlock:"></a>
<a name="//apple_ref/objc/Method/-updater:willInstallUpdateOnQuit:immediateInstallationBlock:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationBlock:">-updater:<wbr>willInstallUpdateOnQuit:<wbr>immediateInstallationBlock:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called when an update is scheduled to be silently installed on quit after downloading the update automatically.</p>
<p>If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time.</p>
<p>Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after.</p>
<p>Even if the <code>immediateInstallHandler</code> is not invoked, the installer will attempt to install the update on termination.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">willInstallUpdateOnQuit</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span>
<span class="nf">immediateInstallationBlock</span><span class="p">:(</span><span class="n">nonnull</span> <span class="kt">void</span> <span class="p">(</span><span class="o">^</span><span class="p">)(</span><span class="kt">void</span><span class="p">))</span><span class="nv">immediateInstallHandler</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">willInstallUpdateOnQuit</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">,</span> <span class="n">immediateInstallationBlock</span> <span class="nv">immediateInstallHandler</span><span class="p">:</span> <span class="kd">@escaping</span> <span class="p">()</span> <span class="o">-&gt;</span> <span class="kt">Void</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>item</em>
</code>
</td>
<td>
<div>
<p>The appcast item corresponding to the update that is proposed to be installed.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>immediateInstallHandler</em>
</code>
</td>
<td>
<div>
<p>The install handler for the delegate to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation. This handler can only be used if <code>YES</code> is returned and the delegate handles installing the update. For Sparkle 2.3 onwards, this handler can be invoked multiple times in case the application cancels the termination request.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p><code>YES</code> if the delegate will handle installing the update or <code>NO</code> if the updater should be given responsibility.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:didAbortWithError:"></a>
<a name="//apple_ref/objc/Method/-updater:didAbortWithError:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:didAbortWithError:">-updater:<wbr>didAbortWithError:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called after the update driver aborts due to an error.</p>
<p>The update driver runs when checking for updates. This delegate method is called an error occurs during this process.</p>
<p>Some special possible values of <code>error.code</code> are:</p>
<ul>
<li><code>SUNoUpdateError</code>: No new update was found.</li>
<li><p><code>SUInstallationCanceledError</code>: The user canceled installing the update when requested for authorization.</p></li>
</ul>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">didAbortWithError</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">didAbortWithError</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>error</em>
</code>
</td>
<td>
<div>
<p>The error that caused the update driver to abort.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishUpdateCycleForUpdateCheck:error:"></a>
<a name="//apple_ref/objc/Method/-updater:didFinishUpdateCycleForUpdateCheck:error:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishUpdateCycleForUpdateCheck:error:">-updater:<wbr>didFinishUpdateCycleForUpdateCheck:<wbr>error:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called after the update driver finishes.</p>
<p>The update driver runs when checking for updates. This delegate method is called when that check is finished.</p>
<p>An update may be scheduled to be installed during the update cycle, or no updates may be found, or an available update may be dismissed or skipped (which is the same as no error).</p>
<p>If the <code>error</code> is <code>nil,</code> no error has occurred.</p>
<p>Some special possible values of <code>error.code</code> are:</p>
<ul>
<li><code>SUNoUpdateError</code>: No new update was found.</li>
<li><p><code>SUInstallationCanceledError</code>: The user canceled installing the update when requested for authorization.</p></li>
</ul>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span>
<span class="nf">didFinishUpdateCycleForUpdateCheck</span><span class="p">:(</span><span class="n"><a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a></span><span class="p">)</span><span class="nv">updateCheck</span>
<span class="nf">error</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">NSError</span> <span class="o">*</span><span class="p">)</span><span class="nv">error</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">didFinishUpdateCycleFor</span> <span class="nv">updateCheck</span><span class="p">:</span> <span class="kt"><a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a></span><span class="p">,</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">Error</span><span class="p">?)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>updater</em>
</code>
</td>
<td>
<div>
<p>The updater instance.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateCheck</em>
</code>
</td>
<td>
<div>
<p>The type of update check was performed.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>error</em>
</code>
</td>
<td>
<div>
<p>The error that caused the update driver to abort. This is <code>nil</code> if the update driver finished normally and there is no error.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updaterMayCheckForUpdates:"></a>
<a name="//apple_ref/objc/Method/-updaterMayCheckForUpdates:" class="dashAnchor"></a>
<a class="token discouraged" href="#/c:objc(pl)SPUUpdaterDelegate(im)updaterMayCheckForUpdates:">-updaterMayCheckForUpdates:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="aside aside-deprecated">
<p class="aside-title">Deprecated</p>
<p>Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead.</p>
</div>
<div class="abstract">
<p>Undocumented</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">updaterMayCheckForUpdates</span><span class="p">:(</span><span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span> <span class="n">__deprecated_msg</span><span class="p">(</span><span class="s">"Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead."</span><span class="p">);</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updaterMayCheck</span><span class="p">(</span><span class="n">forUpdates</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(pl)SPUUpdaterDelegate(im)updater:userDidSkipThisVersion:"></a>
<a name="//apple_ref/objc/Method/-updater:userDidSkipThisVersion:" class="dashAnchor"></a>
<a class="token discouraged" href="#/c:objc(pl)SPUUpdaterDelegate(im)updater:userDidSkipThisVersion:">-updater:<wbr>userDidSkipThisVersion:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="aside aside-deprecated">
<p class="aside-title">Deprecated</p>
<p>Please use -[SPUUpdaterDelegate updater:userDidMakeChoice:forUpdate:state:] instead.</p>
</div>
<div class="abstract">
<p>Undocumented</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">updater</span><span class="p">:(</span><span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">updater</span> <span class="nf">userDidSkipThisVersion</span><span class="p">:(</span><span class="n"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span> <span class="o">*</span><span class="p">)</span><span class="nv">item</span> <span class="n">__deprecated_msg</span><span class="p">(</span><span class="s">"Please use -[SPUUpdaterDelegate updater:userDidMakeChoice:forUpdate:state:] instead."</span><span class="p">);</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">optional</span> <span class="kd">func</span> <span class="nf">updater</span><span class="p">(</span><span class="n">_</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span><span class="p">,</span> <span class="n">userDidSkipThisVersion</span> <span class="nv">item</span><span class="p">:</span> <span class="kt"><a href="../Classes/SUAppcastItem.html">SUAppcastItem</a></span><span class="p">)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
</article>
</div>
<div class="nav-wrapper">
<nav class="nav-bottom">
<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/SPUDownloadData.html">SPUDownloadData</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUStandardUpdaterController.html">SPUStandardUpdaterController</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUStandardUserDriver.html">SPUStandardUserDriver</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUpdatePermissionRequest.html">SPUUpdatePermissionRequest</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUpdater.html">SPUUpdater</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUpdaterSettings.html">SPUUpdaterSettings</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUserUpdateState.html">SPUUserUpdateState</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUAppcast.html">SUAppcast</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUAppcastItem.html">SUAppcastItem</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUStandardVersionComparator.html">SUStandardVersionComparator</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUUpdatePermissionResponse.html">SUUpdatePermissionResponse</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUUpdater.html">SUUpdater</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Constants.html">Constants</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Constants.html#/c:@SPULatestAppcastItemFoundKey">SPULatestAppcastItemFoundKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SPUNoUpdateFoundReasonKey">SPUNoUpdateFoundReasonKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SPUNoUpdateFoundUserInitiatedKey">SPUNoUpdateFoundUserInitiatedKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSparkleErrorDomain">SUSparkleErrorDomain</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerApplicationNameKey">SUSystemProfilerApplicationNameKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerApplicationVersionKey">SUSystemProfilerApplicationVersionKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPU64bitKey">SUSystemProfilerCPU64bitKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUCountKey">SUSystemProfilerCPUCountKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUFrequencyKey">SUSystemProfilerCPUFrequencyKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUSubtypeKey">SUSystemProfilerCPUSubtypeKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUTypeKey">SUSystemProfilerCPUTypeKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerHardwareModelKey">SUSystemProfilerHardwareModelKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerMemoryKey">SUSystemProfilerMemoryKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerOperatingSystemVersionKey">SUSystemProfilerOperatingSystemVersionKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerPreferredLanguageKey">SUSystemProfilerPreferredLanguageKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterAppcastItemNotificationKey">SUUpdaterAppcastItemNotificationKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterAppcastNotificationKey">SUUpdaterAppcastNotificationKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterDidFindValidUpdateNotification">SUUpdaterDidFindValidUpdateNotification</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterDidFinishLoadingAppCastNotification">SUUpdaterDidFinishLoadingAppCastNotification</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterDidNotFindUpdateNotification">SUUpdaterDidNotFindUpdateNotification</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterWillRestartNotification">SUUpdaterWillRestartNotification</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Enums.html">Enumerations</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Enums/SPUNoUpdateFoundReason.html">SPUNoUpdateFoundReason</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SPUUserUpdateChoice.html">SPUUserUpdateChoice</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SPUUserUpdateStage.html">SPUUserUpdateStage</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SUError.html">SUError</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/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SPUUserDriver.html">SPUUserDriver</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SUUpdaterDelegate.html">SUUpdaterDelegate</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SUVersionComparison.html">SUVersionComparison</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SUVersionDisplay.html">SUVersionDisplay</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="footer-wrapper">
<section id="footer">
<p>&copy; 2025 <a class="link" href="https://sparkle-project.org" target="_blank" rel="external noopener">Sparkle Project</a>. All rights reserved. (Last updated: 2025-09-16)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.15.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
</section>
</div>
</div>
</body>
</html>