summaryrefslogtreecommitdiff
path: root/docs/Classes/SDLPerformAppServiceInteraction.html
blob: 254f9b9b504fc1b36fe95892988a4d823a8bc975 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<h1>SDLPerformAppServiceInteraction Class Reference</h1>

<h3>Section Contents</h3>

<ul>
  <li><a href="#section--initWithServiceUri:serviceID:originApp:">-initWithServiceUri:serviceID:originApp:</a></li>
  <li><a href="#section--initWithServiceUri:serviceID:originApp:requestServiceActive:">-initWithServiceUri:serviceID:originApp:requestServiceActive:</a></li>
  <li><a href="#section-serviceUri">serviceUri</a></li>
  <li><a href="#section-serviceID">serviceID</a></li>
  <li><a href="#section-originApp">originApp</a></li>
  <li><a href="#section-requestServiceActive">requestServiceActive</a></li>
</ul>

<h3>Overview</h3>

<p>App service providers will likely have different actions exposed to the module and app service consumers. It will be difficult to standardize these actions by RPC versions and can easily become stale. Therefore, we introduce a best-effort attempt to take actions on a service.</p>

<p>The <code>PerformAppServiceInteraction</code> request will be sent to the service that has the matching <code>appServiceId</code>. The <code>serviceUri</code> should be the fully qualified URI with all parameters that are necessary for the given action. The URI prefix and actions list will be contained in the app service provider&rsquo;s manifest. SDL takes no steps to validate an app service provider&rsquo;s action sheet JSON object. In the future, plug in libraries could be added to handle these sheets on a provider by provider basis.</p>

<p>An app service consumer can also request for this service to become the active service of its respective type. If the app service consumer currently has an HMI state of HMI_FULL this request can be performed without user interaction. If the app is currently not in that state, the HMI should present the user with a choice to allow this app service provider to become the active service of its specified type. If the app service provider is not allowed to become active, the request will not be sent to it and an unsuccessful response will be sent to the requester.</p>

<p>SDL should make no guarantees that:
      1. App service providers offer URI prefix and URI Schema
      2. App service providers will correctly respond to the requests
      3. The requested app service provider will become the active service of that type
      4. The <code>serviceUri</code> will be a correctly formatted URI from the app service consumer</p>


<section class="section task-group-section">
  <h3 id="section--initWithServiceUri:serviceID:originApp:">
      -initWithServiceUri:serviceID:originApp:
  </h3>
  
  <p>Convenience init for required parameters.</p>

  
  
  <h4>Objective-C</h4>
  <pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span><span class="nf">initWithServiceUri</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nv">serviceUri</span>
                                 <span class="nf">serviceID</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nv">serviceID</span>
                                 <span class="nf">originApp</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nv">originApp</span><span class="p">;</span></code></pre>

  
  <h4>Swift</h4>
  <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">serviceUri</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">serviceID</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">originApp</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre>

  
  
  <h4>Parameters</h4>
  <dl>
      <dt>serviceUri</dt>
      <dd><p>The service URI</p></dd>
      <dt>serviceID</dt>
      <dd><p>The app service ID</p></dd>
      <dt>originApp</dt>
      <dd><p>The origin app</p></dd>
  </dl>
  <div>
    <h4>Return Value</h4>
    <p>A SDLPerformAppServiceInteraction object</p>
  </div>
  
  <h3 id="section--initWithServiceUri:serviceID:originApp:requestServiceActive:">
      -initWithServiceUri:serviceID:originApp:requestServiceActive:
  </h3>
  
  <p>Convenience init for all parameters.</p>

  
  
  <h4>Objective-C</h4>
  <pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span><span class="nf">initWithServiceUri</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nv">serviceUri</span>
                                 <span class="nf">serviceID</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nv">serviceID</span>
                                 <span class="nf">originApp</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSString</span> <span class="o">*</span><span class="p">)</span><span class="nv">originApp</span>
                      <span class="nf">requestServiceActive</span><span class="p">:(</span><span class="n">BOOL</span><span class="p">)</span><span class="nv">requestServiceActive</span><span class="p">;</span></code></pre>

  
  <h4>Swift</h4>
  <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">serviceUri</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">serviceID</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">originApp</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">requestServiceActive</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span></code></pre>

  
  
  <h4>Parameters</h4>
  <dl>
      <dt>serviceUri</dt>
      <dd><p>The service URI</p></dd>
      <dt>serviceID</dt>
      <dd><p>The app service ID</p></dd>
      <dt>originApp</dt>
      <dd><p>The origin app</p></dd>
      <dt>requestServiceActive</dt>
      <dd><p>Whether or not the service is active</p></dd>
  </dl>
  <div>
    <h4>Return Value</h4>
    <p>A SDLPerformAppServiceInteraction object</p>
  </div>
  
  <h3 id="section-serviceUri">
      serviceUri
  </h3>
  
  <p>Fully qualified URI based on a predetermined scheme provided by the app service. SDL makes no guarantee that this URI is correct.</p>

<p>String, Required</p>

  
  
  <h4>Objective-C</h4>
  <pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">strong</span><span class="p">)</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">_Nonnull</span> <span class="n">serviceUri</span><span class="p">;</span></code></pre>

  
  <h4>Swift</h4>
  <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">serviceUri</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>

  
  
  
  <h3 id="section-serviceID">
      serviceID
  </h3>
  
  <p>The service ID that the app consumer wishes to send this URI.</p>

<p>String, Required</p>

  
  
  <h4>Objective-C</h4>
  <pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">strong</span><span class="p">)</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">_Nonnull</span> <span class="n">serviceID</span><span class="p">;</span></code></pre>

  
  <h4>Swift</h4>
  <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">serviceID</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>

  
  
  
  <h3 id="section-originApp">
      originApp
  </h3>
  
  <p>This string is the appID of the app requesting the app service provider take the specific action.</p>

<p>String, Required</p>

  
  
  <h4>Objective-C</h4>
  <pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">strong</span><span class="p">)</span> <span class="n">NSString</span> <span class="o">*</span><span class="n">_Nonnull</span> <span class="n">originApp</span><span class="p">;</span></code></pre>

  
  <h4>Swift</h4>
  <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">originApp</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>

  
  
  
  <h3 id="section-requestServiceActive">
      requestServiceActive
  </h3>
  
  <p>This flag signals the requesting consumer would like this service to become the active primary service of the destination&rsquo;s type.</p>

<p>Boolean, Optional</p>

  
  
  <h4>Objective-C</h4>
  <pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">strong</span><span class="p">,</span> <span class="n">nullable</span><span class="p">)</span> <span class="n">NSNumber</span><span class="o">&lt;</span><span class="n"><a href="../Protocols.html#/c:objc(pl)SDLBool">SDLBool</a></span><span class="o">&gt;</span> <span class="o">*</span><span class="n">requestServiceActive</span><span class="p">;</span></code></pre>

  
  <h4>Swift</h4>
  <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">requestServiceActive</span><span class="p">:</span> <span class="p">(</span><span class="kt">NSNumber</span> <span class="o">&amp;</span> <span class="kt"><a href="../Protocols.html#/c:objc(pl)SDLBool">SDLBool</a></span><span class="p">)?</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>

  
  
  
</section>