@capgo/inappbrowser 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -0
- package/dist/docs.json +144 -1
- package/dist/esm/definitions.d.ts +31 -0
- package/dist/esm/definitions.js.map +1 -1
- package/ios/Plugin/InAppBrowserPlugin.swift +17 -17
- package/ios/Plugin/WKWebViewController.swift +4 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,10 @@ npx cap sync
|
|
|
17
17
|
* [`close()`](#close)
|
|
18
18
|
* [`openWebView(...)`](#openwebview)
|
|
19
19
|
* [`setUrl(...)`](#seturl)
|
|
20
|
+
* [`addListener('urlChangeEvent', ...)`](#addlistenerurlchangeevent)
|
|
21
|
+
* [`addListener('confirmBtnClicked', ...)`](#addlistenerconfirmbtnclicked)
|
|
20
22
|
* [Interfaces](#interfaces)
|
|
23
|
+
* [Type Aliases](#type-aliases)
|
|
21
24
|
* [Enums](#enums)
|
|
22
25
|
|
|
23
26
|
</docgen-index>
|
|
@@ -81,6 +84,46 @@ setUrl(url: string) => Promise<any>
|
|
|
81
84
|
--------------------
|
|
82
85
|
|
|
83
86
|
|
|
87
|
+
### addListener('urlChangeEvent', ...)
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
addListener(eventName: 'urlChangeEvent', listenerFunc: UrlChangeListener) => Promise<PluginListenerHandle> & PluginListenerHandle
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Listen for url change
|
|
94
|
+
|
|
95
|
+
| Param | Type |
|
|
96
|
+
| ------------------ | --------------------------------------------------------------- |
|
|
97
|
+
| **`eventName`** | <code>'urlChangeEvent'</code> |
|
|
98
|
+
| **`listenerFunc`** | <code><a href="#urlchangelistener">UrlChangeListener</a></code> |
|
|
99
|
+
|
|
100
|
+
**Returns:** <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>> & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>
|
|
101
|
+
|
|
102
|
+
**Since:** 0.0.1
|
|
103
|
+
|
|
104
|
+
--------------------
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
### addListener('confirmBtnClicked', ...)
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
addListener(eventName: 'confirmBtnClicked', listenerFunc: ConfirmBtnListener) => Promise<PluginListenerHandle> & PluginListenerHandle
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Will be triggered when user clicks on confirm button when disclaimer is required, works only on iOS
|
|
114
|
+
|
|
115
|
+
| Param | Type |
|
|
116
|
+
| ------------------ | ----------------------------------------------------------------- |
|
|
117
|
+
| **`eventName`** | <code>'confirmBtnClicked'</code> |
|
|
118
|
+
| **`listenerFunc`** | <code><a href="#confirmbtnlistener">ConfirmBtnListener</a></code> |
|
|
119
|
+
|
|
120
|
+
**Returns:** <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>> & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>
|
|
121
|
+
|
|
122
|
+
**Since:** 0.0.1
|
|
123
|
+
|
|
124
|
+
--------------------
|
|
125
|
+
|
|
126
|
+
|
|
84
127
|
### Interfaces
|
|
85
128
|
|
|
86
129
|
|
|
@@ -119,6 +162,40 @@ setUrl(url: string) => Promise<any>
|
|
|
119
162
|
| **`cancelBtn`** | <code>string</code> |
|
|
120
163
|
|
|
121
164
|
|
|
165
|
+
#### PluginListenerHandle
|
|
166
|
+
|
|
167
|
+
| Prop | Type |
|
|
168
|
+
| ------------ | ----------------------------------------- |
|
|
169
|
+
| **`remove`** | <code>() => Promise<void></code> |
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
#### UrlEvent
|
|
173
|
+
|
|
174
|
+
| Prop | Type | Description | Since |
|
|
175
|
+
| --------- | ------------------- | ------------------------- | ----- |
|
|
176
|
+
| **`url`** | <code>string</code> | Emit when the url changes | 0.0.1 |
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
#### BtnEvent
|
|
180
|
+
|
|
181
|
+
| Prop | Type | Description | Since |
|
|
182
|
+
| --------- | ------------------- | ------------------------------ | ----- |
|
|
183
|
+
| **`url`** | <code>string</code> | Emit when a button is clicked. | 0.0.1 |
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
### Type Aliases
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
#### UrlChangeListener
|
|
190
|
+
|
|
191
|
+
<code>(state: <a href="#urlevent">UrlEvent</a>): void</code>
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
#### ConfirmBtnListener
|
|
195
|
+
|
|
196
|
+
<code>(state: <a href="#btnevent">BtnEvent</a>): void</code>
|
|
197
|
+
|
|
198
|
+
|
|
122
199
|
### Enums
|
|
123
200
|
|
|
124
201
|
|
package/dist/docs.json
CHANGED
|
@@ -66,6 +66,64 @@
|
|
|
66
66
|
"docs": "",
|
|
67
67
|
"complexTypes": [],
|
|
68
68
|
"slug": "seturl"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "addListener",
|
|
72
|
+
"signature": "(eventName: 'urlChangeEvent', listenerFunc: UrlChangeListener) => Promise<PluginListenerHandle> & PluginListenerHandle",
|
|
73
|
+
"parameters": [
|
|
74
|
+
{
|
|
75
|
+
"name": "eventName",
|
|
76
|
+
"docs": "",
|
|
77
|
+
"type": "'urlChangeEvent'"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "listenerFunc",
|
|
81
|
+
"docs": "",
|
|
82
|
+
"type": "UrlChangeListener"
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"returns": "Promise<PluginListenerHandle> & PluginListenerHandle",
|
|
86
|
+
"tags": [
|
|
87
|
+
{
|
|
88
|
+
"name": "since",
|
|
89
|
+
"text": "0.0.1"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"docs": "Listen for url change",
|
|
93
|
+
"complexTypes": [
|
|
94
|
+
"PluginListenerHandle",
|
|
95
|
+
"UrlChangeListener"
|
|
96
|
+
],
|
|
97
|
+
"slug": "addlistenerurlchangeevent"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "addListener",
|
|
101
|
+
"signature": "(eventName: 'confirmBtnClicked', listenerFunc: ConfirmBtnListener) => Promise<PluginListenerHandle> & PluginListenerHandle",
|
|
102
|
+
"parameters": [
|
|
103
|
+
{
|
|
104
|
+
"name": "eventName",
|
|
105
|
+
"docs": "",
|
|
106
|
+
"type": "'confirmBtnClicked'"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "listenerFunc",
|
|
110
|
+
"docs": "",
|
|
111
|
+
"type": "ConfirmBtnListener"
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
"returns": "Promise<PluginListenerHandle> & PluginListenerHandle",
|
|
115
|
+
"tags": [
|
|
116
|
+
{
|
|
117
|
+
"name": "since",
|
|
118
|
+
"text": "0.0.1"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"docs": "Will be triggered when user clicks on confirm button when disclaimer is required, works only on iOS",
|
|
122
|
+
"complexTypes": [
|
|
123
|
+
"PluginListenerHandle",
|
|
124
|
+
"ConfirmBtnListener"
|
|
125
|
+
],
|
|
126
|
+
"slug": "addlistenerconfirmbtnclicked"
|
|
69
127
|
}
|
|
70
128
|
],
|
|
71
129
|
"properties": []
|
|
@@ -211,6 +269,64 @@
|
|
|
211
269
|
"type": "string"
|
|
212
270
|
}
|
|
213
271
|
]
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"name": "PluginListenerHandle",
|
|
275
|
+
"slug": "pluginlistenerhandle",
|
|
276
|
+
"docs": "",
|
|
277
|
+
"tags": [],
|
|
278
|
+
"methods": [],
|
|
279
|
+
"properties": [
|
|
280
|
+
{
|
|
281
|
+
"name": "remove",
|
|
282
|
+
"tags": [],
|
|
283
|
+
"docs": "",
|
|
284
|
+
"complexTypes": [],
|
|
285
|
+
"type": "() => Promise<void>"
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"name": "UrlEvent",
|
|
291
|
+
"slug": "urlevent",
|
|
292
|
+
"docs": "",
|
|
293
|
+
"tags": [],
|
|
294
|
+
"methods": [],
|
|
295
|
+
"properties": [
|
|
296
|
+
{
|
|
297
|
+
"name": "url",
|
|
298
|
+
"tags": [
|
|
299
|
+
{
|
|
300
|
+
"text": "0.0.1",
|
|
301
|
+
"name": "since"
|
|
302
|
+
}
|
|
303
|
+
],
|
|
304
|
+
"docs": "Emit when the url changes",
|
|
305
|
+
"complexTypes": [],
|
|
306
|
+
"type": "string"
|
|
307
|
+
}
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "BtnEvent",
|
|
312
|
+
"slug": "btnevent",
|
|
313
|
+
"docs": "",
|
|
314
|
+
"tags": [],
|
|
315
|
+
"methods": [],
|
|
316
|
+
"properties": [
|
|
317
|
+
{
|
|
318
|
+
"name": "url",
|
|
319
|
+
"tags": [
|
|
320
|
+
{
|
|
321
|
+
"text": "0.0.1",
|
|
322
|
+
"name": "since"
|
|
323
|
+
}
|
|
324
|
+
],
|
|
325
|
+
"docs": "Emit when a button is clicked.",
|
|
326
|
+
"complexTypes": [],
|
|
327
|
+
"type": "string"
|
|
328
|
+
}
|
|
329
|
+
]
|
|
214
330
|
}
|
|
215
331
|
],
|
|
216
332
|
"enums": [
|
|
@@ -245,6 +361,33 @@
|
|
|
245
361
|
]
|
|
246
362
|
}
|
|
247
363
|
],
|
|
248
|
-
"typeAliases": [
|
|
364
|
+
"typeAliases": [
|
|
365
|
+
{
|
|
366
|
+
"name": "UrlChangeListener",
|
|
367
|
+
"slug": "urlchangelistener",
|
|
368
|
+
"docs": "",
|
|
369
|
+
"types": [
|
|
370
|
+
{
|
|
371
|
+
"text": "(state: UrlEvent): void",
|
|
372
|
+
"complexTypes": [
|
|
373
|
+
"UrlEvent"
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
]
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"name": "ConfirmBtnListener",
|
|
380
|
+
"slug": "confirmbtnlistener",
|
|
381
|
+
"docs": "",
|
|
382
|
+
"types": [
|
|
383
|
+
{
|
|
384
|
+
"text": "(state: BtnEvent): void",
|
|
385
|
+
"complexTypes": [
|
|
386
|
+
"BtnEvent"
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
}
|
|
391
|
+
],
|
|
249
392
|
"pluginConfigs": []
|
|
250
393
|
}
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
import type { PluginListenerHandle } from '@capacitor/core';
|
|
2
|
+
export interface UrlEvent {
|
|
3
|
+
/**
|
|
4
|
+
* Emit when the url changes
|
|
5
|
+
*
|
|
6
|
+
* @since 0.0.1
|
|
7
|
+
*/
|
|
8
|
+
url: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BtnEvent {
|
|
11
|
+
/**
|
|
12
|
+
* Emit when a button is clicked.
|
|
13
|
+
*
|
|
14
|
+
* @since 0.0.1
|
|
15
|
+
*/
|
|
16
|
+
url: string;
|
|
17
|
+
}
|
|
18
|
+
export declare type UrlChangeListener = (state: UrlEvent) => void;
|
|
19
|
+
export declare type ConfirmBtnListener = (state: BtnEvent) => void;
|
|
1
20
|
export declare enum ToolBarType {
|
|
2
21
|
ACTIVITY = "activity",
|
|
3
22
|
NAVIGATION = "navigation",
|
|
@@ -32,4 +51,16 @@ export interface InAppBrowserPlugin {
|
|
|
32
51
|
close(): Promise<any>;
|
|
33
52
|
openWebView(options: OpenWebViewOptions): Promise<any>;
|
|
34
53
|
setUrl(url: string): Promise<any>;
|
|
54
|
+
/**
|
|
55
|
+
* Listen for url change
|
|
56
|
+
*
|
|
57
|
+
* @since 0.0.1
|
|
58
|
+
*/
|
|
59
|
+
addListener(eventName: 'urlChangeEvent', listenerFunc: UrlChangeListener): Promise<PluginListenerHandle> & PluginListenerHandle;
|
|
60
|
+
/**
|
|
61
|
+
* Will be triggered when user clicks on confirm button when disclaimer is required, works only on iOS
|
|
62
|
+
*
|
|
63
|
+
* @since 0.0.1
|
|
64
|
+
*/
|
|
65
|
+
addListener(eventName: 'confirmBtnClicked', listenerFunc: ConfirmBtnListener): Promise<PluginListenerHandle> & PluginListenerHandle;
|
|
35
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,wCAAyB,CAAA;IACzB,8BAAe,CAAA;IACf,2BAAY,CAAA;AACd,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nexport interface UrlEvent {\n /**\n * Emit when the url changes\n *\n * @since 0.0.1\n */\n url: string;\n}\nexport interface BtnEvent {\n /**\n * Emit when a button is clicked.\n *\n * @since 0.0.1\n */\n url: string;\n}\n\nexport type UrlChangeListener = (state: UrlEvent) => void;\nexport type ConfirmBtnListener = (state: BtnEvent) => void;\n\nexport enum ToolBarType {\n ACTIVITY = \"activity\",\n NAVIGATION = \"navigation\",\n BLANK = \"blank\",\n DEFAULT = \"\"\n}\n\nexport interface Headers {\n [key: string] : string;\n}\n\nexport interface OpenOptions {\n url: string;\n headers?: Headers;\n isPresentAfterPageLoad?: boolean;\n}\n\nexport interface DisclaimerOptions {\n title: string;\n message: string;\n confirmBtn: string;\n cancelBtn: string;\n}\n\nexport interface OpenWebViewOptions {\n url: string;\n headers?: Headers;\n shareDisclaimer?: DisclaimerOptions;\n toolbarType?: ToolBarType;\n shareSubject?: string;\n title: string;\n isPresentAfterPageLoad?: boolean;\n}\n\n// CapBrowser.addListener(\"urlChangeEvent\", (info: any) => {\n// console.log(info.url)\n// })\n\n// CapBrowser.addListener(\"confirmBtnClicked\", (info: any) => {\n// // will be triggered when user clicks on confirm button when disclaimer is required, works only on iOS\n// console.log(info.url)\n// })\nexport interface InAppBrowserPlugin {\n open(options: OpenOptions): Promise<any>;\n close(): Promise<any>;\n openWebView(options: OpenWebViewOptions): Promise<any>;\n setUrl(url: string): Promise<any>;\n /**\n * Listen for url change \n *\n * @since 0.0.1\n */\n addListener(\n eventName: 'urlChangeEvent',\n listenerFunc: UrlChangeListener,\n ): Promise<PluginListenerHandle> & PluginListenerHandle;\n /**\n * Will be triggered when user clicks on confirm button when disclaimer is required, works only on iOS\n *\n * @since 0.0.1\n */\n addListener(\n eventName: 'confirmBtnClicked',\n listenerFunc: ConfirmBtnListener,\n ): Promise<PluginListenerHandle> & PluginListenerHandle;\n}\n"]}
|
|
@@ -26,8 +26,8 @@ public class InAppBrowserPlugin: CAPPlugin {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
func presentView() {
|
|
29
|
-
self.bridge
|
|
30
|
-
self.currentPluginCall?.
|
|
29
|
+
self.bridge?.viewController?.present(self.navigationWebViewController!, animated: true, completion: {
|
|
30
|
+
self.currentPluginCall?.resolve()
|
|
31
31
|
})
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -38,34 +38,34 @@ public class InAppBrowserPlugin: CAPPlugin {
|
|
|
38
38
|
self.currentPluginCall = call
|
|
39
39
|
|
|
40
40
|
guard let urlString = call.getString("url") else {
|
|
41
|
-
call.
|
|
41
|
+
call.reject("Must provide a URL to open")
|
|
42
42
|
return
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if urlString.isEmpty {
|
|
46
|
-
call.
|
|
46
|
+
call.reject("URL must not be empty")
|
|
47
47
|
return
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
let headers = call.
|
|
50
|
+
let headers = call.getObject("headers", [:]).mapValues { String(describing: $0 as Any) }
|
|
51
51
|
|
|
52
|
-
var disclaimerContent = call.getObject("shareDisclaimer"
|
|
52
|
+
var disclaimerContent = call.getObject("shareDisclaimer")
|
|
53
53
|
let toolbarType = call.getString("toolbarType")
|
|
54
54
|
if toolbarType != "activity" {
|
|
55
55
|
disclaimerContent = nil
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
self.isPresentAfterPageLoad = call.getBool("isPresentAfterPageLoad", false)
|
|
58
|
+
self.isPresentAfterPageLoad = call.getBool("isPresentAfterPageLoad", false)
|
|
59
59
|
|
|
60
60
|
DispatchQueue.main.async {
|
|
61
61
|
let url = URL(string: urlString)
|
|
62
62
|
let webViewController: WKWebViewController?
|
|
63
63
|
|
|
64
64
|
if self.isPresentAfterPageLoad {
|
|
65
|
-
webViewController = WKWebViewController.init(url: url!, headers: headers
|
|
65
|
+
webViewController = WKWebViewController.init(url: url!, headers: headers)
|
|
66
66
|
} else {
|
|
67
67
|
webViewController = WKWebViewController.init()
|
|
68
|
-
webViewController?.setHeaders(headers: headers
|
|
68
|
+
webViewController?.setHeaders(headers: headers)
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
webViewController?.source = .remote(url!)
|
|
@@ -104,7 +104,7 @@ public class InAppBrowserPlugin: CAPPlugin {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
@objc func setUrl(_ call: CAPPluginCall) {
|
|
107
|
-
call.
|
|
107
|
+
call.resolve()
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
@objc func open(_ call: CAPPluginCall) {
|
|
@@ -115,28 +115,28 @@ public class InAppBrowserPlugin: CAPPlugin {
|
|
|
115
115
|
self.currentPluginCall = call
|
|
116
116
|
|
|
117
117
|
guard let urlString = call.getString("url") else {
|
|
118
|
-
call.
|
|
118
|
+
call.reject("Must provide a URL to open")
|
|
119
119
|
return
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
if urlString.isEmpty {
|
|
123
|
-
call.
|
|
123
|
+
call.reject("URL must not be empty")
|
|
124
124
|
return
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
let headers = call.
|
|
127
|
+
let headers = call.getObject("headers", [:]).mapValues { String(describing: $0 as Any) }
|
|
128
128
|
|
|
129
|
-
self.isPresentAfterPageLoad = call.getBool("isPresentAfterPageLoad", false)
|
|
129
|
+
self.isPresentAfterPageLoad = call.getBool("isPresentAfterPageLoad", false)
|
|
130
130
|
|
|
131
131
|
DispatchQueue.main.async {
|
|
132
132
|
let url = URL(string: urlString)
|
|
133
133
|
let webViewController: WKWebViewController?
|
|
134
134
|
|
|
135
135
|
if self.isPresentAfterPageLoad {
|
|
136
|
-
webViewController = WKWebViewController.init(url: url!, headers: headers
|
|
136
|
+
webViewController = WKWebViewController.init(url: url!, headers: headers)
|
|
137
137
|
} else {
|
|
138
138
|
webViewController = WKWebViewController.init()
|
|
139
|
-
webViewController?.setHeaders(headers: headers
|
|
139
|
+
webViewController?.setHeaders(headers: headers)
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
webViewController?.source = .remote(url!)
|
|
@@ -159,7 +159,7 @@ public class InAppBrowserPlugin: CAPPlugin {
|
|
|
159
159
|
@objc func close(_ call: CAPPluginCall) {
|
|
160
160
|
DispatchQueue.main.async {
|
|
161
161
|
self.navigationWebViewController?.dismiss(animated: true, completion: nil)
|
|
162
|
-
call.
|
|
162
|
+
call.resolve()
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
|
|
@@ -67,7 +67,7 @@ open class WKWebViewController: UIViewController {
|
|
|
67
67
|
open var bypassedSSLHosts: [String]?
|
|
68
68
|
open var cookies: [HTTPCookie]?
|
|
69
69
|
open var headers: [String: String]?
|
|
70
|
-
open var capBrowserPlugin:
|
|
70
|
+
open var capBrowserPlugin: InAppBrowserPlugin?
|
|
71
71
|
var shareDisclaimer: [String: Any]?
|
|
72
72
|
var shareSubject: String?
|
|
73
73
|
var didpageInit = false
|
|
@@ -322,7 +322,7 @@ open class WKWebViewController: UIViewController {
|
|
|
322
322
|
self.navigationItem.title = webView?.url?.host
|
|
323
323
|
}
|
|
324
324
|
case "URL":
|
|
325
|
-
self.capBrowserPlugin?.notifyListeners("urlChangeEvent", data: ["url" : webView?.url?.absoluteString])
|
|
325
|
+
self.capBrowserPlugin?.notifyListeners("urlChangeEvent", data: ["url" : webView?.url?.absoluteString ?? ""])
|
|
326
326
|
default:
|
|
327
327
|
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
|
|
328
328
|
}
|
|
@@ -583,7 +583,8 @@ fileprivate extension WKWebViewController {
|
|
|
583
583
|
func openURLWithApp(_ url: URL) -> Bool {
|
|
584
584
|
let application = UIApplication.shared
|
|
585
585
|
if application.canOpenURL(url) {
|
|
586
|
-
|
|
586
|
+
application.open(url, options: [:], completionHandler: nil)
|
|
587
|
+
return true
|
|
587
588
|
}
|
|
588
589
|
|
|
589
590
|
return false
|