@capacitor/ios 4.7.3 → 5.0.0-alpha.2

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.
@@ -12,7 +12,7 @@ import Cordova
12
12
 
13
13
  public var isStatusBarVisible = true
14
14
  public var statusBarStyle: UIStatusBarStyle = .default
15
- public var statusBarAnimation: UIStatusBarAnimation = .slide
15
+ public var statusBarAnimation: UIStatusBarAnimation = .fade
16
16
  @objc public var supportedOrientations: [Int] = []
17
17
 
18
18
  public lazy final var isNewBinary: Bool = {
@@ -287,7 +287,6 @@ extension CAPBridgeViewController {
287
287
  aWebView.scrollView.bounces = false
288
288
  aWebView.scrollView.contentInsetAdjustmentBehavior = configuration.contentInsetAdjustmentBehavior
289
289
  aWebView.allowsLinkPreview = configuration.allowLinkPreviews
290
- aWebView.configuration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
291
290
  aWebView.scrollView.isScrollEnabled = configuration.scrollingEnabled
292
291
  if let overrideUserAgent = configuration.overridenUserAgentString {
293
292
  aWebView.customUserAgent = overrideUserAgent
@@ -0,0 +1,13 @@
1
+ //
2
+ // CAPBridgedPlugin+getMethod.swift
3
+ // Capacitor
4
+ //
5
+ // Created by Steven Sherry on 3/1/23.
6
+ // Copyright © 2023 Drifty Co. All rights reserved.
7
+ //
8
+
9
+ extension CAPBridgedPlugin {
10
+ func getMethod(named name: String) -> CAPPluginMethod? {
11
+ pluginMethods.first { $0.name == name }
12
+ }
13
+ }
@@ -16,16 +16,14 @@
16
16
  @class CAPPlugin;
17
17
 
18
18
  @protocol CAPBridgedPlugin <NSObject>
19
- +(NSString *)pluginId;
20
- +(NSString *)jsName;
21
- +(NSArray *)pluginMethods;
22
- +(CAPPluginMethod *)getMethod:(NSString *)methodName;
23
- @optional
19
+ @property (nonnull, readonly) NSString *identifier;
20
+ @property (nonnull, readonly) NSString *jsName;
21
+ @property (nonnull, readonly) NSArray<CAPPluginMethod *> *pluginMethods;
24
22
  @end
25
23
 
26
24
  #define CAP_PLUGIN_CONFIG(plugin_id, js_name) \
27
- + (NSString *)pluginId { return @#plugin_id; } \
28
- + (NSString *)jsName { return @js_name; }
25
+ - (NSString *)identifier { return @#plugin_id; } \
26
+ - (NSString *)jsName { return @js_name; }
29
27
  #define CAP_PLUGIN_METHOD(method_name, method_return_type) \
30
28
  [methods addObject:[[CAPPluginMethod alloc] initWithName:@#method_name returnType:method_return_type]]
31
29
 
@@ -35,20 +33,11 @@
35
33
  @interface objc_name (CAPPluginCategory) <CAPBridgedPlugin> \
36
34
  @end \
37
35
  @implementation objc_name (CAPPluginCategory) \
38
- + (NSArray *)pluginMethods { \
36
+ - (NSArray *)pluginMethods { \
39
37
  NSMutableArray *methods = [NSMutableArray new]; \
40
38
  methods_body \
41
39
  return methods; \
42
40
  } \
43
- + (CAPPluginMethod *)getMethod:(NSString *)methodName { \
44
- NSArray *methods = [self pluginMethods]; \
45
- for(CAPPluginMethod *method in methods) { \
46
- if([method.name isEqualToString:methodName]) { \
47
- return method; \
48
- } \
49
- } \
50
- return nil; \
51
- } \
52
41
  CAP_PLUGIN_CONFIG(objc_name, js_name) \
53
42
  @end
54
43
 
@@ -6,14 +6,15 @@
6
6
  // Copyright © 2022 Drifty Co. All rights reserved.
7
7
  //
8
8
 
9
- extension CAPPlugin {
10
- func load(as bridgedType: CAPBridgedPlugin.Type, on bridge: CAPBridgeProtocol) {
9
+ extension CAPBridgedPlugin where Self: CAPPlugin {
10
+ func load(on bridge: CAPBridgeProtocol) {
11
11
  self.bridge = bridge
12
12
  webView = bridge.webView
13
- pluginId = bridgedType.pluginId()
14
- pluginName = bridgedType.jsName()
15
13
  shouldStringifyDatesInCalls = true
16
14
  retainedEventArguments = [:]
15
+ eventListeners = [:]
16
+ pluginId = identifier
17
+ pluginName = jsName
17
18
  load()
18
19
  }
19
20
  }
@@ -13,10 +13,10 @@
13
13
  @property (nonatomic, strong, nonnull) NSString *pluginId;
14
14
  @property (nonatomic, strong, nonnull) NSString *pluginName;
15
15
  @property (nonatomic, strong, nullable) NSMutableDictionary<NSString *, NSMutableArray<CAPPluginCall *>*> *eventListeners;
16
- @property (nonatomic, strong, nullable) NSMutableDictionary<NSString *, id> *retainedEventArguments;
16
+ @property (nonatomic, strong, nullable) NSMutableDictionary<NSString *, NSMutableArray<id> *> *retainedEventArguments;
17
17
  @property (nonatomic, assign) BOOL shouldStringifyDatesInCalls;
18
18
 
19
- - (instancetype _Nonnull) initWithBridge:(id<CAPBridgeProtocol> _Nonnull) bridge pluginId:(NSString* _Nonnull) pluginId pluginName:(NSString* _Nonnull) pluginName;
19
+ - (instancetype _Nonnull) initWithBridge:(id<CAPBridgeProtocol> _Nonnull) bridge pluginId:(NSString* _Nonnull) pluginId pluginName:(NSString* _Nonnull) pluginName DEPRECATED_MSG_ATTRIBUTE("This initializer is deprecated and is not suggested for use. Any data set through this init method will be overridden when it is loaded on the bridge.");
20
20
  - (void)addEventListener:(NSString* _Nonnull)eventName listener:(CAPPluginCall* _Nonnull)listener;
21
21
  - (void)removeEventListener:(NSString* _Nonnull)eventName listener:(CAPPluginCall* _Nonnull)listener;
22
22
  - (void)notifyListeners:(NSString* _Nonnull)eventName data:(NSDictionary<NSString *, id>* _Nullable)data;
@@ -52,13 +52,17 @@
52
52
  }
53
53
 
54
54
  - (void)sendRetainedArgumentsForEvent:(NSString *)eventName {
55
- id retained = [self.retainedEventArguments objectForKey:eventName];
56
- if (retained == nil) {
57
- return;
58
- }
59
-
60
- [self notifyListeners:eventName data:retained];
61
- [self.retainedEventArguments removeObjectForKey:eventName];
55
+ // copy retained args and null source to prevent potential race conditions
56
+ NSMutableArray *retained = [self.retainedEventArguments objectForKey:eventName];
57
+ if (retained == nil) {
58
+ return;
59
+ }
60
+
61
+ [self.retainedEventArguments removeObjectForKey:eventName];
62
+
63
+ for(id data in retained) {
64
+ [self notifyListeners:eventName data:data];
65
+ }
62
66
  }
63
67
 
64
68
  - (void)removeEventListener:(NSString *)eventName listener:(CAPPluginCall *)listener {
@@ -79,7 +83,12 @@
79
83
  NSArray<CAPPluginCall *> *listenersForEvent = [self.eventListeners objectForKey:eventName];
80
84
  if(listenersForEvent == nil || [listenersForEvent count] == 0) {
81
85
  if (retain == YES) {
82
- [self.retainedEventArguments setObject:data forKey:eventName];
86
+
87
+ if ([self.retainedEventArguments objectForKey:eventName] == nil) {
88
+ [self.retainedEventArguments setObject:[[NSMutableArray alloc] init] forKey:eventName];
89
+ }
90
+
91
+ [[self.retainedEventArguments objectForKey:eventName] addObject:data];
83
92
  }
84
93
  return;
85
94
  }
@@ -157,7 +157,6 @@ extension CAPWebView {
157
157
  webView.scrollView.bounces = false
158
158
  webView.scrollView.contentInsetAdjustmentBehavior = configuration.contentInsetAdjustmentBehavior
159
159
  webView.allowsLinkPreview = configuration.allowLinkPreviews
160
- webView.configuration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
161
160
  webView.scrollView.isScrollEnabled = configuration.scrollingEnabled
162
161
 
163
162
  if let overrideUserAgent = configuration.overridenUserAgentString {
@@ -3,6 +3,8 @@ import Dispatch
3
3
  import WebKit
4
4
  import Cordova
5
5
 
6
+ internal typealias CapacitorPlugin = CAPPlugin & CAPBridgedPlugin
7
+
6
8
  /**
7
9
  An internal class adopting a public protocol means that we have a lot of `public` methods
8
10
  but that is by design not a mistake. And since the bridge is the center of the whole project
@@ -101,9 +103,7 @@ internal class CapacitorBridge: NSObject, CAPBridgeProtocol {
101
103
 
102
104
  @objc public internal(set) var config: InstanceConfiguration
103
105
  // Map of all loaded and instantiated plugins by pluginId -> instance
104
- var plugins = [String: CAPPlugin]()
105
- // List of known plugins by pluginId -> Plugin Type
106
- var knownPlugins = [String: CAPPlugin.Type]()
106
+ var plugins = [String: CapacitorPlugin]()
107
107
  // Manager for getting Cordova plugins
108
108
  var cordovaPluginManager: CDVPluginManager?
109
109
  // Calls we are storing to resolve later
@@ -288,10 +288,9 @@ internal class CapacitorBridge: NSObject, CAPBridgeProtocol {
288
288
  injectCordovaFiles = true
289
289
  }
290
290
  if class_conformsToProtocol(aClass, CAPBridgedPlugin.self),
291
- let pluginType = aClass as? CAPPlugin.Type,
292
- let bridgeType = aClass as? CAPBridgedPlugin.Type {
291
+ let pluginType = aClass as? CapacitorPlugin.Type {
293
292
  if aClass is CAPInstancePlugin.Type { continue }
294
- registerPlugin(bridgeType.jsName(), pluginType)
293
+ registerPlugin(pluginType)
295
294
  }
296
295
  }
297
296
  }
@@ -312,62 +311,45 @@ internal class CapacitorBridge: NSObject, CAPBridgeProtocol {
312
311
  ⚡️ ❌ Use `registerPluginInstance(_:)` to register subclasses of CAPInstancePlugin.
313
312
  """)
314
313
  }
315
- guard let bridgedType = pluginType as? CAPBridgedPlugin.Type else { return }
316
- registerPlugin(bridgedType.jsName(), pluginType)
314
+ guard let bridgedType = pluginType as? CapacitorPlugin.Type else { return }
315
+ registerPlugin(bridgedType)
317
316
  }
318
317
 
319
318
  public func registerPluginInstance(_ pluginInstance: CAPPlugin) {
320
- guard
321
- let pluginInstance = pluginInstance as? (CAPPlugin & CAPBridgedPlugin),
322
- let pluginClass = pluginInstance.classForCoder as? (CAPPlugin & CAPBridgedPlugin).Type
323
- else { return }
319
+ guard let pluginInstance = pluginInstance as? CapacitorPlugin else {
320
+ CAPLog.print("""
324
321
 
325
- let jsName = pluginClass.jsName()!
322
+ ⚡️ Plugin \(pluginInstance.classForCoder) must conform to CAPBridgedPlugin.
323
+ ⚡️ Not loading plugin \(pluginInstance.classForCoder)
324
+ """)
325
+ return
326
+ }
326
327
 
327
- knownPlugins[jsName] = pluginClass
328
- if plugins[jsName] != nil {
329
- CAPLog.print("⚡️ Overriding existing registered plugin \(pluginClass)")
328
+ if plugins[pluginInstance.jsName] != nil {
329
+ CAPLog.print("⚡️ Overriding existing registered plugin \(pluginInstance.classForCoder)")
330
330
  }
331
- plugins[jsName] = pluginInstance
332
- pluginInstance.load(as: pluginClass, on: self)
331
+ plugins[pluginInstance.jsName] = pluginInstance
332
+ pluginInstance.load(on: self)
333
333
 
334
- JSExport.exportJS(
335
- userContentController: webViewDelegationHandler.contentController,
336
- pluginClassName: jsName,
337
- pluginType: pluginClass
338
- )
334
+ JSExport.exportJS(for: pluginInstance, in: webViewDelegationHandler.contentController)
339
335
  }
340
336
 
341
337
  /**
342
338
  Register a single plugin.
343
339
  */
344
- func registerPlugin(_ jsName: String, _ pluginType: CAPPlugin.Type) {
345
- // let bridgeType = pluginType as! CAPBridgedPlugin.Type
346
- knownPlugins[jsName] = pluginType
347
- JSExport.exportJS(userContentController: webViewDelegationHandler.contentController, pluginClassName: jsName, pluginType: pluginType)
348
- _ = loadPlugin(pluginName: jsName)
349
- }
350
-
351
- /**
352
- - parameter pluginId: the ID of the plugin
353
- - returns: the plugin, if found
354
- */
355
- func getOrLoadPlugin(pluginName: String) -> CAPPlugin? {
356
- guard let plugin = self.plugin(withName: pluginName) ?? self.loadPlugin(pluginName: pluginName) else {
357
- return nil
340
+ func registerPlugin(_ pluginType: CapacitorPlugin.Type) {
341
+ if let plugin = loadPlugin(type: pluginType) {
342
+ JSExport.exportJS(for: plugin, in: webViewDelegationHandler.contentController)
358
343
  }
359
- return plugin
360
344
  }
361
345
 
362
- func loadPlugin(pluginName: String) -> CAPPlugin? {
363
- guard let pluginType = knownPlugins[pluginName], let bridgeType = pluginType as? CAPBridgedPlugin.Type else {
364
- CAPLog.print("⚡️ Unable to load plugin \(pluginName). No such module found.")
346
+ func loadPlugin(type: CAPPlugin.Type) -> CapacitorPlugin? {
347
+ guard let plugin = type.init() as? CapacitorPlugin else {
348
+ CAPLog.print("⚡️ Unable to load plugin \(type.classForCoder()). No such module found.")
365
349
  return nil
366
350
  }
367
-
368
- let plugin = pluginType.init(bridge: self, pluginId: bridgeType.pluginId(), pluginName: bridgeType.jsName())
369
- plugin.load()
370
- self.plugins[bridgeType.jsName()] = plugin
351
+ plugin.load(on: self)
352
+ plugins[plugin.jsName] = plugin
371
353
  return plugin
372
354
  }
373
355
 
@@ -444,11 +426,14 @@ internal class CapacitorBridge: NSObject, CAPBridgeProtocol {
444
426
  */
445
427
  // swiftlint:disable:next function_body_length
446
428
  func handleJSCall(call: JSCall) {
447
- guard let plugin = self.plugin(withName: call.pluginId) ?? self.loadPlugin(pluginName: call.pluginId) else {
448
- CAPLog.print("⚡️ Error loading plugin \(call.pluginId) for call. Check that the pluginId is correct")
449
- return
429
+ let load = {
430
+ NSClassFromString(call.pluginId)
431
+ .flatMap { $0 as? CAPPlugin.Type }
432
+ .flatMap(self.loadPlugin(type:))
450
433
  }
451
- guard let pluginType = knownPlugins[plugin.getId()] else {
434
+
435
+ guard let plugin = plugins[call.pluginId] ?? load() else {
436
+ CAPLog.print("⚡️ Error loading plugin \(call.pluginId) for call. Check that the pluginId is correct")
452
437
  return
453
438
  }
454
439
 
@@ -456,14 +441,12 @@ internal class CapacitorBridge: NSObject, CAPBridgeProtocol {
456
441
  if call.method == "addListener" || call.method == "removeListener" {
457
442
  selector = NSSelectorFromString(call.method + ":")
458
443
  } else {
459
- guard let bridgeType = pluginType as? CAPBridgedPlugin.Type, let method = bridgeType.getMethod(call.method) else {
444
+ guard let method = plugin.getMethod(named: call.method) else {
460
445
  CAPLog.print("⚡️ Error calling method \(call.method) on plugin \(call.pluginId): No method found.")
461
446
  CAPLog.print("⚡️ Ensure plugin method exists and uses @objc in its declaration, and has been defined")
462
447
  return
463
448
  }
464
449
 
465
- // CAPLog.print("\n⚡️ Calling method \"\(call.method)\" on plugin \"\(plugin.getId()!)\"")
466
-
467
450
  selector = method.selector
468
451
  }
469
452
 
@@ -56,28 +56,27 @@ internal class JSExport {
56
56
  /**
57
57
  Export the JS required to implement the given plugin.
58
58
  */
59
- static func exportJS(userContentController: WKUserContentController, pluginClassName: String, pluginType: CAPPlugin.Type) {
59
+ static func exportJS(for plugin: CapacitorPlugin, in userContentController: WKUserContentController) {
60
60
  var lines = [String]()
61
61
 
62
62
  lines.append("""
63
63
  (function(w) {
64
64
  var a = (w.Capacitor = w.Capacitor || {});
65
65
  var p = (a.Plugins = a.Plugins || {});
66
- var t = (p['\(pluginClassName)'] = {});
66
+ var t = (p['\(plugin.jsName)'] = {});
67
67
  t.addListener = function(eventName, callback) {
68
- return w.Capacitor.addListener('\(pluginClassName)', eventName, callback);
68
+ return w.Capacitor.addListener('\(plugin.jsName)', eventName, callback);
69
69
  }
70
70
  """)
71
- if let bridgeType = pluginType as? CAPBridgedPlugin.Type, let methods = bridgeType.pluginMethods() as? [CAPPluginMethod] {
72
- for method in methods {
73
- lines.append(generateMethod(pluginClassName: pluginClassName, method: method))
74
- }
71
+
72
+ for method in plugin.pluginMethods {
73
+ lines.append(generateMethod(pluginClassName: plugin.jsName, method: method))
75
74
  }
76
75
 
77
76
  lines.append("""
78
77
  })(window);
79
78
  """)
80
- if let data = try? JSONEncoder().encode(createPluginHeader(pluginClassName: pluginClassName, pluginType: pluginType)),
79
+ if let data = try? JSONEncoder().encode(createPluginHeader(for: plugin)),
81
80
  let header = String(data: data, encoding: .utf8) {
82
81
  lines.append("""
83
82
  (function(w) {
@@ -92,19 +91,20 @@ internal class JSExport {
92
91
  userContentController.addUserScript(userScript)
93
92
  }
94
93
 
95
- private static func createPluginHeader(pluginClassName: String, pluginType: CAPPlugin.Type) -> PluginHeader? {
96
- if let bridgeType = pluginType as? CAPBridgedPlugin.Type, let pluginMethods = bridgeType.pluginMethods() as? [CAPPluginMethod] {
97
- let methods = [
98
- PluginHeaderMethod(name: "addListener", rtype: nil),
99
- PluginHeaderMethod(name: "removeListener", rtype: nil),
100
- PluginHeaderMethod(name: "removeAllListeners", rtype: "promise"),
101
- PluginHeaderMethod(name: "checkPermissions", rtype: "promise"),
102
- PluginHeaderMethod(name: "requestPermissions", rtype: "promise")
103
- ]
104
- return PluginHeader(name: pluginClassName, methods: methods + pluginMethods.map { createPluginHeaderMethod(method: $0) })
105
- }
94
+ private static func createPluginHeader(for plugin: CapacitorPlugin) -> PluginHeader? {
95
+ let methods = [
96
+ PluginHeaderMethod(name: "addListener", rtype: nil),
97
+ PluginHeaderMethod(name: "removeListener", rtype: nil),
98
+ PluginHeaderMethod(name: "removeAllListeners", rtype: "promise"),
99
+ PluginHeaderMethod(name: "checkPermissions", rtype: "promise"),
100
+ PluginHeaderMethod(name: "requestPermissions", rtype: "promise")
101
+ ]
102
+
103
+ return PluginHeader(
104
+ name: plugin.jsName,
105
+ methods: methods + plugin.pluginMethods.map(createPluginHeaderMethod)
106
+ )
106
107
 
107
- return nil
108
108
  }
109
109
 
110
110
  private static func createPluginHeaderMethod(method: CAPPluginMethod) -> PluginHeaderMethod {
@@ -31,7 +31,7 @@ public enum ResponseType: String {
31
31
  /// - Returns: The parsed value or an error
32
32
  func tryParseJson(_ data: Data) -> Any {
33
33
  do {
34
- return try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
34
+ return try JSONSerialization.jsonObject(with: data, options: [.mutableContainers, .fragmentsAllowed])
35
35
  } catch {
36
36
  return error.localizedDescription
37
37
  }
@@ -52,7 +52,7 @@ internal extension WKWebView {
52
52
  let swizzleFourArgClosure = { (method: Method, selector: Selector) in
53
53
  let originalImp: IMP = method_getImplementation(method)
54
54
  let original: FourArgClosureType = unsafeBitCast(originalImp, to: FourArgClosureType.self)
55
- let block : @convention(block) (Any, UnsafeRawPointer, Bool, Bool, Any?) -> Void = { (me, arg0, arg1, arg2, arg3) in
55
+ let block: @convention(block) (Any, UnsafeRawPointer, Bool, Bool, Any?) -> Void = { (me, arg0, arg1, arg2, arg3) in
56
56
  if let webview = containingWebView(me), let flag = webview.capacitor.keyboardShouldRequireUserInteraction {
57
57
  original(me, selector, arg0, !flag, arg2, arg3)
58
58
  } else {
@@ -66,7 +66,7 @@ internal extension WKWebView {
66
66
  let swizzleFiveArgClosure = { (method: Method, selector: Selector) in
67
67
  let originalImp: IMP = method_getImplementation(method)
68
68
  let original: FiveArgClosureType = unsafeBitCast(originalImp, to: FiveArgClosureType.self)
69
- let block : @convention(block) (Any, UnsafeRawPointer, Bool, Bool, Bool, Any?) -> Void = { (me, arg0, arg1, arg2, arg3, arg4) in
69
+ let block: @convention(block) (Any, UnsafeRawPointer, Bool, Bool, Bool, Any?) -> Void = { (me, arg0, arg1, arg2, arg3, arg4) in
70
70
  if let webview = containingWebView(me), let flag = webview.capacitor.keyboardShouldRequireUserInteraction {
71
71
  original(me, selector, arg0, !flag, arg2, arg3, arg4)
72
72
  } else {
@@ -384,9 +384,13 @@ var nativeBridge = (function (exports) {
384
384
  data: (options === null || options === void 0 ? void 0 : options.body) ? options.body : undefined,
385
385
  headers: headers,
386
386
  });
387
- const data = typeof nativeResponse.data === 'string'
387
+ let data = !nativeResponse.headers['Content-Type'].startsWith('application/json')
388
388
  ? nativeResponse.data
389
389
  : JSON.stringify(nativeResponse.data);
390
+ // use null data for 204 No Content HTTP response
391
+ if (nativeResponse.status === 204) {
392
+ data = null;
393
+ }
390
394
  // intercept & parse response before returning
391
395
  const response = new Response(data, {
392
396
  headers: nativeResponse.headers,
@@ -522,7 +526,7 @@ var nativeBridge = (function (exports) {
522
526
  this.status = nativeResponse.status;
523
527
  this.response = nativeResponse.data;
524
528
  this.responseText =
525
- typeof nativeResponse.data === 'string'
529
+ !nativeResponse.headers['Content-Type'].startsWith('application/json')
526
530
  ? nativeResponse.data
527
531
  : JSON.stringify(nativeResponse.data);
528
532
  this.responseURL = nativeResponse.url;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capacitor/ios",
3
- "version": "4.7.3",
3
+ "version": "5.0.0-alpha.2",
4
4
  "description": "Capacitor: Cross-platform apps with JavaScript and the web",
5
5
  "homepage": "https://capacitorjs.com",
6
6
  "author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
@@ -25,10 +25,10 @@
25
25
  "xc:build:CapacitorCordova": "cd CapacitorCordova && xcodebuild && cd .."
26
26
  },
27
27
  "peerDependencies": {
28
- "@capacitor/core": "^4.7.0"
28
+ "@capacitor/core": "^5.0.0-alpha.1"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "gitHead": "aa522964a8521f65b95e4233993019e3fe2531a4"
33
+ "gitHead": "4e4134c2c9c8c52f40d9251924a419a87eca2924"
34
34
  }
package/CHANGELOG.md DELETED
@@ -1,760 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- ## [4.7.3](https://github.com/ionic-team/capacitor/compare/4.7.2...4.7.3) (2023-03-31)
7
-
8
- **Note:** Version bump only for package @capacitor/ios
9
-
10
-
11
-
12
-
13
-
14
- ## [4.7.2](https://github.com/ionic-team/capacitor/compare/4.7.1...4.7.2) (2023-03-31)
15
-
16
- **Note:** Version bump only for package @capacitor/ios
17
-
18
-
19
-
20
-
21
-
22
- ## [4.7.1](https://github.com/ionic-team/capacitor/compare/4.7.0...4.7.1) (2023-03-16)
23
-
24
-
25
- ### Bug Fixes
26
-
27
- * **iOS:** Separate cookies by ; rather than ; when accessing through document.cookie (Cap 4.x) ([#6380](https://github.com/ionic-team/capacitor/issues/6380)) ([1902b77](https://github.com/ionic-team/capacitor/commit/1902b77213e36bd9899634e7c86c9a02aab39932))
28
-
29
-
30
-
31
-
32
-
33
- # [4.7.0](https://github.com/ionic-team/capacitor/compare/4.6.3...4.7.0) (2023-02-22)
34
-
35
-
36
- ### Bug Fixes
37
-
38
- * handle fetch headers that are Headers objects ([#6320](https://github.com/ionic-team/capacitor/issues/6320)) ([cb00e49](https://github.com/ionic-team/capacitor/commit/cb00e4952acca8e877555f30b2190f6685d25934))
39
- * **ios:** Avoid double encoding on http urls ([#6288](https://github.com/ionic-team/capacitor/issues/6288)) ([4768085](https://github.com/ionic-team/capacitor/commit/4768085414768bb2c013afcc6c645664893cd297))
40
- * **ios:** Correctly Attach Headers to Request ([#6303](https://github.com/ionic-team/capacitor/issues/6303)) ([a3f875c](https://github.com/ionic-team/capacitor/commit/a3f875cf42e111fde07d6e87643264b19ed77573))
41
-
42
-
43
-
44
-
45
-
46
- ## [4.6.3](https://github.com/ionic-team/capacitor/compare/4.6.2...4.6.3) (2023-02-03)
47
-
48
-
49
- ### Bug Fixes
50
-
51
- * **ios:** crash when http headers contain numbers ([#6251](https://github.com/ionic-team/capacitor/issues/6251)) ([028c556](https://github.com/ionic-team/capacitor/commit/028c556a50b41ee99fe8f4f1aa2f42d3fd57f92d))
52
-
53
-
54
-
55
-
56
-
57
- ## [4.6.2](https://github.com/ionic-team/capacitor/compare/4.6.1...4.6.2) (2023-01-17)
58
-
59
-
60
- ### Bug Fixes
61
-
62
- * **ios:** CapacitorHttp cannot use delete method ([#6220](https://github.com/ionic-team/capacitor/issues/6220)) ([4d238a9](https://github.com/ionic-team/capacitor/commit/4d238a9e0dcf1e3e8c105c3aa4c7361abf16398e))
63
- * **ios:** encode whitespace in http plugin urls ([#6169](https://github.com/ionic-team/capacitor/issues/6169)) ([dccb0a9](https://github.com/ionic-team/capacitor/commit/dccb0a99850c7c878906156a509ecd675836ef1a))
64
- * **ios/android:** better http error handling ([#6208](https://github.com/ionic-team/capacitor/issues/6208)) ([7d4d70a](https://github.com/ionic-team/capacitor/commit/7d4d70a0500b7996c710c0762907f44bdf27c92b))
65
-
66
-
67
-
68
-
69
-
70
- ## [4.6.1](https://github.com/ionic-team/capacitor/compare/4.6.0...4.6.1) (2022-12-05)
71
-
72
- **Note:** Version bump only for package @capacitor/ios
73
-
74
-
75
-
76
-
77
-
78
- # [4.6.0](https://github.com/ionic-team/capacitor/compare/4.5.0...4.6.0) (2022-12-01)
79
-
80
-
81
- ### Bug Fixes
82
-
83
- * **cookies:** Use Set-Cookie headers to persist cookies ([57f8b39](https://github.com/ionic-team/capacitor/commit/57f8b39d7f4c5ee0e5e5cb316913e9450a81d22b))
84
-
85
-
86
- ### Features
87
-
88
- * **ios:** Plugin Registration and Plugin Instance Support ([#6072](https://github.com/ionic-team/capacitor/issues/6072)) ([9f1d863](https://github.com/ionic-team/capacitor/commit/9f1d863c1222096334a0dd05f39ce7f984a2763a))
89
-
90
-
91
-
92
-
93
-
94
- # [4.5.0](https://github.com/ionic-team/capacitor/compare/4.4.0...4.5.0) (2022-11-16)
95
-
96
-
97
- ### Bug Fixes
98
-
99
- * **cli/ios:** Read handleApplicationNotifications configuration option ([#6030](https://github.com/ionic-team/capacitor/issues/6030)) ([99ccf18](https://github.com/ionic-team/capacitor/commit/99ccf181f6ee8a00ed97bdbf9076e2b2ea27cd57))
100
-
101
-
102
- ### Features
103
-
104
- * **cookies:** add get cookies plugin method ([ba1e770](https://github.com/ionic-team/capacitor/commit/ba1e7702a3338714aee24388c0afea39706c9341))
105
-
106
-
107
-
108
-
109
-
110
- # [4.4.0](https://github.com/ionic-team/capacitor/compare/4.3.0...4.4.0) (2022-10-21)
111
-
112
-
113
- ### Bug Fixes
114
-
115
- * **cookies:** make document.cookie setter synchronous ([2272abf](https://github.com/ionic-team/capacitor/commit/2272abf3d3d9dc82d9ca0d03b17e2b78f11f61fc))
116
- * **http:** fix local http requests on native platforms ([c4e040a](https://github.com/ionic-team/capacitor/commit/c4e040a6f8c6b54bac6ae320e5f0f008604fe50f))
117
-
118
-
119
-
120
-
121
-
122
- # [4.3.0](https://github.com/ionic-team/capacitor/compare/4.2.0...4.3.0) (2022-09-21)
123
-
124
-
125
- ### Bug Fixes
126
-
127
- * **core:** Exception object was not set on Cap ([#5917](https://github.com/ionic-team/capacitor/issues/5917)) ([9ca27a4](https://github.com/ionic-team/capacitor/commit/9ca27a4f8441b368f8bf9d97dda57b1a55ac0e4e))
128
-
129
-
130
- ### Features
131
-
132
- * Capacitor Cookies & Capacitor Http core plugins ([d4047cf](https://github.com/ionic-team/capacitor/commit/d4047cfa947676777f400389a8d65defae140b45))
133
-
134
-
135
-
136
-
137
-
138
- # [4.2.0](https://github.com/ionic-team/capacitor/compare/4.1.0...4.2.0) (2022-09-08)
139
-
140
- **Note:** Version bump only for package @capacitor/ios
141
-
142
-
143
-
144
-
145
-
146
- # [4.1.0](https://github.com/ionic-team/capacitor/compare/4.0.1...4.1.0) (2022-08-18)
147
-
148
-
149
- ### Bug Fixes
150
-
151
- * **ios:** Prevent Xcode 14 warning on CAPWebView ([#5821](https://github.com/ionic-team/capacitor/issues/5821)) ([66954ef](https://github.com/ionic-team/capacitor/commit/66954ef6bc93f2038d85a386ef2f8b582af11bc3))
152
- * **ios:** return proper mimeType on M1 x86_64 simulators ([#5853](https://github.com/ionic-team/capacitor/issues/5853)) ([325b6fe](https://github.com/ionic-team/capacitor/commit/325b6fe83939efaaef44c7e8624e33de742a57e2)), closes [#5793](https://github.com/ionic-team/capacitor/issues/5793)
153
-
154
-
155
- ### Features
156
-
157
- * **ios:** Add `setServerBasePath(_:)` to CAPBridgeProtocol ([#5860](https://github.com/ionic-team/capacitor/issues/5860)) ([76f28e7](https://github.com/ionic-team/capacitor/commit/76f28e70a5c0a03e4c6b9a93a0c068666a2c38ff))
158
-
159
-
160
-
161
-
162
-
163
- ## [4.0.1](https://github.com/ionic-team/capacitor/compare/4.0.0...4.0.1) (2022-07-28)
164
-
165
-
166
- ### Bug Fixes
167
-
168
- * **ios:** publish Podfile script ([#5799](https://github.com/ionic-team/capacitor/issues/5799)) ([604f03a](https://github.com/ionic-team/capacitor/commit/604f03a29bc500d2841987d0a0f1b20d34fba7d6))
169
-
170
-
171
-
172
-
173
-
174
- # [4.0.0](https://github.com/ionic-team/capacitor/compare/4.0.0-beta.2...4.0.0) (2022-07-27)
175
-
176
-
177
- ### Bug Fixes
178
-
179
- * **ios:** error data is optional ([#5782](https://github.com/ionic-team/capacitor/issues/5782)) ([da48d79](https://github.com/ionic-team/capacitor/commit/da48d798c3463de9de188ae6a6475fd6afba6091))
180
-
181
-
182
- ### Features
183
-
184
- * **android:** Add Optional Data Param for Error Object ([#5719](https://github.com/ionic-team/capacitor/issues/5719)) ([174172b](https://github.com/ionic-team/capacitor/commit/174172b6c64dc9117c48ed0e20c25e0b6c2fb625))
185
- * **android:** Use addWebMessageListener where available ([#5427](https://github.com/ionic-team/capacitor/issues/5427)) ([c2dfe80](https://github.com/ionic-team/capacitor/commit/c2dfe808446717412b35e82713d123b7a052f264))
186
- * **ios:** Add overrideable router var for CAPWebView. ([#5743](https://github.com/ionic-team/capacitor/issues/5743)) ([c1de1c0](https://github.com/ionic-team/capacitor/commit/c1de1c0138aad188a760118e35983d10d257f8e7))
187
- * **iOS:** post install script for deployment target ([#5783](https://github.com/ionic-team/capacitor/issues/5783)) ([f5afa94](https://github.com/ionic-team/capacitor/commit/f5afa94b3b9c246d87b2af03359840f503bace90))
188
- * Add option for custom error page ([#5723](https://github.com/ionic-team/capacitor/issues/5723)) ([e8bdef3](https://github.com/ionic-team/capacitor/commit/e8bdef3b4634e4ad45fa8fc34c7c0ab8dfa383f3))
189
-
190
-
191
-
192
-
193
-
194
- # [4.0.0-beta.2](https://github.com/ionic-team/capacitor/compare/4.0.0-beta.1...4.0.0-beta.2) (2022-07-08)
195
-
196
-
197
- ### Bug Fixes
198
-
199
- * **ios:** Add check for both serverURL and localURL in navigation ([#5736](https://github.com/ionic-team/capacitor/issues/5736)) ([8e824f3](https://github.com/ionic-team/capacitor/commit/8e824f33ad4df898fb8c0936a8f5e9041832a5c5))
200
- * **ios:** properly deliver retained events after listener re-add [#5732](https://github.com/ionic-team/capacitor/issues/5732) ([c5d6328](https://github.com/ionic-team/capacitor/commit/c5d632831924a1bcc868bc46b42f7ff619408752))
201
-
202
-
203
- ### Features
204
-
205
- * **ios:** Add `setServerBasePath(path:)` to CAPWebView ([#5742](https://github.com/ionic-team/capacitor/issues/5742)) ([1afbf8a](https://github.com/ionic-team/capacitor/commit/1afbf8a9dd0b8f7b1ac439d24e5d8ba26f786318))
206
- * Add CapWebView ([#5715](https://github.com/ionic-team/capacitor/issues/5715)) ([143d266](https://github.com/ionic-team/capacitor/commit/143d266ef0a818bac59dbbdaeda3b5c382ebfa1d))
207
-
208
-
209
-
210
-
211
-
212
- # [4.0.0-beta.1](https://github.com/ionic-team/capacitor/compare/4.0.0-beta.0...4.0.0-beta.1) (2022-06-27)
213
-
214
-
215
- ### Bug Fixes
216
-
217
- * **ios:** Remove Cordova as an embedded framework ([#5709](https://github.com/ionic-team/capacitor/issues/5709)) ([bbf6d24](https://github.com/ionic-team/capacitor/commit/bbf6d248bf9217a5c5c6c15c7bcfeda209aba5b1))
218
-
219
-
220
- ### Features
221
-
222
- * **ios:** Allow to configure popover size ([#5717](https://github.com/ionic-team/capacitor/issues/5717)) ([ca1a125](https://github.com/ionic-team/capacitor/commit/ca1a125e5ab05d6066dd303bc75e99dfe21f210a))
223
-
224
-
225
-
226
-
227
-
228
- # [4.0.0-beta.0](https://github.com/ionic-team/capacitor/compare/3.6.0...4.0.0-beta.0) (2022-06-17)
229
-
230
-
231
- ### Bug Fixes
232
-
233
- * **ios:** make removeAllListeners return a promise ([#5526](https://github.com/ionic-team/capacitor/issues/5526)) ([815f71b](https://github.com/ionic-team/capacitor/commit/815f71b6b62f6c4d5f66e6a36c190bb00a96fdcc))
234
-
235
-
236
- ### Features
237
-
238
- * **ios:** add getConfig to CAPPlugin ([#5495](https://github.com/ionic-team/capacitor/issues/5495)) ([224a9d0](https://github.com/ionic-team/capacitor/commit/224a9d075629d9c9da9ddc658eb282617fc46d09))
239
- * **ios:** Add preferredContentMode configuration option ([#5583](https://github.com/ionic-team/capacitor/issues/5583)) ([5b6dfa3](https://github.com/ionic-team/capacitor/commit/5b6dfa3fe29c85632546b299f03cc04a77cf7475))
240
- * **ios:** Support of range requests on WebViewAssetHandler ([#5659](https://github.com/ionic-team/capacitor/issues/5659)) ([348c08d](https://github.com/ionic-team/capacitor/commit/348c08d511e9d57a1b2ecedc3290c65fa9ba3924))
241
-
242
-
243
-
244
-
245
-
246
- # [3.6.0](https://github.com/ionic-team/capacitor/compare/3.5.1...3.6.0) (2022-06-17)
247
-
248
-
249
- ### Bug Fixes
250
-
251
- * **ios:** Use `URL(fileURLWithPath:)` instead of `URL(string:)` ([#5603](https://github.com/ionic-team/capacitor/issues/5603)) ([5fac1b2](https://github.com/ionic-team/capacitor/commit/5fac1b2da5aa5882087716cb2aa862d89173f4a1))
252
-
253
-
254
- ### Features
255
-
256
- * **iOS, Android:** add AppUUID Lib for plugins ([#5690](https://github.com/ionic-team/capacitor/issues/5690)) ([05e76cf](https://github.com/ionic-team/capacitor/commit/05e76cf526a44e07fa75f9482fa2223a13918638))
257
-
258
-
259
-
260
-
261
-
262
- # [4.0.0-alpha.2](https://github.com/ionic-team/capacitor/compare/3.4.1...4.0.0-alpha.2) (2022-05-12)
263
-
264
-
265
- ### Bug Fixes
266
-
267
- * **ios:** make removeAllListeners return a promise ([#5526](https://github.com/ionic-team/capacitor/issues/5526)) ([815f71b](https://github.com/ionic-team/capacitor/commit/815f71b6b62f6c4d5f66e6a36c190bb00a96fdcc))
268
-
269
-
270
- ### Features
271
-
272
- * **ios:** add getConfig to CAPPlugin ([#5495](https://github.com/ionic-team/capacitor/issues/5495)) ([224a9d0](https://github.com/ionic-team/capacitor/commit/224a9d075629d9c9da9ddc658eb282617fc46d09))
273
- * **ios:** Add preferredContentMode configuration option ([#5583](https://github.com/ionic-team/capacitor/issues/5583)) ([5b6dfa3](https://github.com/ionic-team/capacitor/commit/5b6dfa3fe29c85632546b299f03cc04a77cf7475))
274
-
275
-
276
-
277
-
278
-
279
-
280
- ## [3.5.1](https://github.com/ionic-team/capacitor/compare/3.5.0...3.5.1) (2022-05-04)
281
-
282
- **Note:** Version bump only for package @capacitor/ios
283
-
284
-
285
-
286
-
287
-
288
- # [3.5.0](https://github.com/ionic-team/capacitor/compare/3.4.3...3.5.0) (2022-04-22)
289
-
290
-
291
- ### Features
292
-
293
- * **ios:** Add overrideable routing for CAPBridgeViewController subclasses ([#5546](https://github.com/ionic-team/capacitor/issues/5546)) ([8875d5e](https://github.com/ionic-team/capacitor/commit/8875d5e2721e8a8ee763ce70cb672db383f36efa))
294
-
295
-
296
-
297
-
298
-
299
- # [4.0.0-alpha.1](https://github.com/ionic-team/capacitor/compare/3.4.1...4.0.0-alpha.1) (2022-03-25)
300
-
301
-
302
- ### Features
303
-
304
- * **ios:** add getConfig to CAPPlugin ([#5495](https://github.com/ionic-team/capacitor/issues/5495)) ([224a9d0](https://github.com/ionic-team/capacitor/commit/224a9d075629d9c9da9ddc658eb282617fc46d09))
305
-
306
-
307
-
308
-
309
-
310
- ## [3.4.3](https://github.com/ionic-team/capacitor/compare/3.4.2...3.4.3) (2022-03-04)
311
-
312
- **Note:** Version bump only for package @capacitor/ios
313
-
314
-
315
-
316
-
317
-
318
- ## [3.4.2](https://github.com/ionic-team/capacitor/compare/3.4.1...3.4.2) (2022-03-03)
319
-
320
- **Note:** Version bump only for package @capacitor/ios
321
-
322
-
323
-
324
-
325
- ## [3.4.1](https://github.com/ionic-team/capacitor/compare/3.4.0...3.4.1) (2022-02-09)
326
-
327
-
328
- ### Bug Fixes
329
-
330
- * **ios:** Reload webView on webViewWebContentProcessDidTerminate ([#5391](https://github.com/ionic-team/capacitor/issues/5391)) ([beebff4](https://github.com/ionic-team/capacitor/commit/beebff4550575c28c233937a11a8eacf5a76411c))
331
-
332
-
333
-
334
-
335
-
336
- # [3.4.0](https://github.com/ionic-team/capacitor/compare/3.3.4...3.4.0) (2022-01-19)
337
-
338
-
339
- ### Features
340
-
341
- * **ios:** Add new iOS 15 Motion permission delegate ([#5317](https://github.com/ionic-team/capacitor/issues/5317)) ([c05a3cb](https://github.com/ionic-team/capacitor/commit/c05a3cbbf02217e3972d5e067970cae18bff3faa))
342
- * **ios:** Add new iOS15 media capture permission delegate ([#5196](https://github.com/ionic-team/capacitor/issues/5196)) ([d8b54ac](https://github.com/ionic-team/capacitor/commit/d8b54ac23414bfe56e50e1254066630a6f87eb0e))
343
-
344
-
345
-
346
-
347
-
348
- ## [3.3.4](https://github.com/ionic-team/capacitor/compare/3.3.3...3.3.4) (2022-01-05)
349
-
350
- **Note:** Version bump only for package @capacitor/ios
351
-
352
-
353
-
354
-
355
-
356
- ## [3.3.3](https://github.com/ionic-team/capacitor/compare/3.3.2...3.3.3) (2021-12-08)
357
-
358
-
359
- ### Bug Fixes
360
-
361
- * **ios:** Present js alert on top of the presented VC ([#5282](https://github.com/ionic-team/capacitor/issues/5282)) ([a53d236](https://github.com/ionic-team/capacitor/commit/a53d236452e99d1e6151e19e313b3d1545957419))
362
-
363
-
364
-
365
-
366
-
367
- ## [3.3.2](https://github.com/ionic-team/capacitor/compare/3.3.1...3.3.2) (2021-11-17)
368
-
369
- **Note:** Version bump only for package @capacitor/ios
370
-
371
-
372
-
373
-
374
-
375
- ## [3.3.1](https://github.com/ionic-team/capacitor/compare/3.3.0...3.3.1) (2021-11-05)
376
-
377
- **Note:** Version bump only for package @capacitor/ios
378
-
379
-
380
-
381
-
382
-
383
- # [3.3.0](https://github.com/ionic-team/capacitor/compare/3.2.5...3.3.0) (2021-11-03)
384
-
385
-
386
- ### Bug Fixes
387
-
388
- * **core:** avoid crash on logging circular objects ([#5186](https://github.com/ionic-team/capacitor/issues/5186)) ([1451ec8](https://github.com/ionic-team/capacitor/commit/1451ec850a9ef73267a032638e73f1fc440647b9))
389
- * **ios:** Avoid CDVScreenOrientationDelegate umbrella header warning ([#5156](https://github.com/ionic-team/capacitor/issues/5156)) ([31ec30d](https://github.com/ionic-team/capacitor/commit/31ec30de193aa3117dbb7eda928ef3a365d5667c))
390
-
391
-
392
-
393
-
394
-
395
- ## [3.2.5](https://github.com/ionic-team/capacitor/compare/3.2.4...3.2.5) (2021-10-13)
396
-
397
-
398
- ### Bug Fixes
399
-
400
- * **ios:** proper handling of allowNavigation with multiple wildcard ([#5096](https://github.com/ionic-team/capacitor/issues/5096)) ([cda17a6](https://github.com/ionic-team/capacitor/commit/cda17a6c1504235c1c1e4826830f1d0e2ef2d35c))
401
-
402
-
403
-
404
-
405
-
406
- ## [3.2.4](https://github.com/ionic-team/capacitor/compare/3.2.3...3.2.4) (2021-09-27)
407
-
408
-
409
- ### Bug Fixes
410
-
411
- * **ios:** Add CDVScreenOrientationDelegate protocol on CAPBridgeViewController ([#5070](https://github.com/ionic-team/capacitor/issues/5070)) ([530477d](https://github.com/ionic-team/capacitor/commit/530477d05e1364931f83a30d61d4f9b5cb687b19))
412
- * **ios:** show correct line number on console logs ([#5073](https://github.com/ionic-team/capacitor/issues/5073)) ([ec41e74](https://github.com/ionic-team/capacitor/commit/ec41e743aa4ba81e791ad446fac461b7f43b46ed))
413
-
414
-
415
-
416
-
417
-
418
- ## [3.2.3](https://github.com/ionic-team/capacitor/compare/3.2.2...3.2.3) (2021-09-15)
419
-
420
- **Note:** Version bump only for package @capacitor/ios
421
-
422
-
423
-
424
-
425
-
426
- ## [3.2.2](https://github.com/ionic-team/capacitor/compare/3.2.1...3.2.2) (2021-09-02)
427
-
428
-
429
- ### Bug Fixes
430
-
431
- * **ios:** fixing podspec source paths ([#5002](https://github.com/ionic-team/capacitor/issues/5002)) ([6004a43](https://github.com/ionic-team/capacitor/commit/6004a43c608a4c967e3444c83954ad2095c3dcfd))
432
-
433
-
434
-
435
-
436
-
437
- ## [3.2.1](https://github.com/ionic-team/capacitor/compare/3.2.0...3.2.1) (2021-09-01)
438
-
439
- **Note:** Version bump only for package @capacitor/ios
440
-
441
-
442
-
443
-
444
-
445
- # [3.2.0](https://github.com/ionic-team/capacitor/compare/3.1.2...3.2.0) (2021-08-18)
446
-
447
- **Note:** Version bump only for package @capacitor/ios
448
-
449
-
450
-
451
-
452
-
453
- ## [3.1.2](https://github.com/ionic-team/capacitor/compare/3.1.1...3.1.2) (2021-07-21)
454
-
455
- **Note:** Version bump only for package @capacitor/ios
456
-
457
-
458
-
459
-
460
-
461
- ## [3.1.1](https://github.com/ionic-team/capacitor/compare/3.1.0...3.1.1) (2021-07-07)
462
-
463
-
464
- ### Bug Fixes
465
-
466
- * fixing peer deps issues in android and ios libs ([310d9f4](https://github.com/ionic-team/capacitor/commit/310d9f486db976cb258fcda5ac893f019667617f))
467
-
468
-
469
-
470
-
471
-
472
- # [3.1.0](https://github.com/ionic-team/capacitor/compare/3.0.2...3.1.0) (2021-07-07)
473
-
474
-
475
- ### Bug Fixes
476
-
477
- * **ios:** isNewBinary is true if defaults have no stored versions ([#4779](https://github.com/ionic-team/capacitor/issues/4779)) ([bd86dbe](https://github.com/ionic-team/capacitor/commit/bd86dbeb74771ed201d0100773babf49e6764818))
478
-
479
-
480
- ### Features
481
-
482
- * **ios:** Add limitsNavigationsToAppBoundDomains configuration option ([#4789](https://github.com/ionic-team/capacitor/issues/4789)) ([2b7016f](https://github.com/ionic-team/capacitor/commit/2b7016f3b4d62fd8c9d03fde2745b3d515bf08b2))
483
-
484
-
485
-
486
-
487
-
488
- ## [3.0.2](https://github.com/ionic-team/capacitor/compare/3.0.1...3.0.2) (2021-06-23)
489
-
490
-
491
- ### Bug Fixes
492
-
493
- * **core:** cordova events not firing ([#4712](https://github.com/ionic-team/capacitor/issues/4712)) ([ca4e3b6](https://github.com/ionic-team/capacitor/commit/ca4e3b62dba6a40e593a1404ba2fe2b416a4ac14))
494
- * **ios:** Use proper native events for cordova events ([#4720](https://github.com/ionic-team/capacitor/issues/4720)) ([99c21dc](https://github.com/ionic-team/capacitor/commit/99c21dcf98f1418d992e845492c730160611783a))
495
-
496
-
497
-
498
-
499
-
500
- ## [3.0.1](https://github.com/ionic-team/capacitor/compare/3.0.0...3.0.1) (2021-06-09)
501
-
502
-
503
- ### Bug Fixes
504
-
505
- * Make isPluginAvailable available on bridge ([#4589](https://github.com/ionic-team/capacitor/issues/4589)) ([151e7a8](https://github.com/ionic-team/capacitor/commit/151e7a899d9646dbd5625a2539fd3f2297349bc5))
506
-
507
-
508
-
509
-
510
-
511
- # [3.0.0](https://github.com/ionic-team/capacitor/compare/3.0.0-rc.4...3.0.0) (2021-05-18)
512
-
513
- **Note:** Version bump only for package @capacitor/ios
514
-
515
-
516
-
517
-
518
-
519
- # [3.0.0-rc.4](https://github.com/ionic-team/capacitor/compare/3.0.0-rc.3...3.0.0-rc.4) (2021-05-18)
520
-
521
- **Note:** Version bump only for package @capacitor/ios
522
-
523
-
524
-
525
-
526
-
527
- # [3.0.0-rc.3](https://github.com/ionic-team/capacitor/compare/3.0.0-rc.2...3.0.0-rc.3) (2021-05-11)
528
-
529
- **Note:** Version bump only for package @capacitor/ios
530
-
531
-
532
-
533
-
534
-
535
- # [3.0.0-rc.2](https://github.com/ionic-team/capacitor/compare/3.0.0-rc.1...3.0.0-rc.2) (2021-05-07)
536
-
537
-
538
- ### Bug Fixes
539
-
540
- * **ios:** Don't auto release saved calls ([#4535](https://github.com/ionic-team/capacitor/issues/4535)) ([4f76933](https://github.com/ionic-team/capacitor/commit/4f76933b98d0461564d3dca9b36d4ea1eba8ed49))
541
-
542
-
543
-
544
-
545
-
546
- # [3.0.0-rc.1](https://github.com/ionic-team/capacitor/compare/3.0.0-rc.0...3.0.0-rc.1) (2021-04-29)
547
-
548
-
549
- ### Bug Fixes
550
-
551
- * generate Capacitor.Plugins object ([#4496](https://github.com/ionic-team/capacitor/issues/4496)) ([1c71b7a](https://github.com/ionic-team/capacitor/commit/1c71b7adb2c325e34d980dbf578dc22afb2c332b))
552
- * **ios:** cordova-plugin-screen-orientation compatibility ([#4367](https://github.com/ionic-team/capacitor/issues/4367)) ([b893a57](https://github.com/ionic-team/capacitor/commit/b893a57aaaf3a16e13db9c33037a12f1a5ac92e0))
553
- * **ios:** fire resume/pause events if no cordova plugins installed ([#4467](https://github.com/ionic-team/capacitor/issues/4467)) ([0105f7a](https://github.com/ionic-team/capacitor/commit/0105f7a2c68f2e7bec16ca23384b6acbb2f3057b))
554
- * **ios:** put cancel button of confirm/prompt on the left ([#4464](https://github.com/ionic-team/capacitor/issues/4464)) ([e5b53aa](https://github.com/ionic-team/capacitor/commit/e5b53aa687a70938994802c7b1367cfcbb1e3811))
555
-
556
-
557
- ### Features
558
-
559
- * Unify logging behavior across environments ([#4416](https://github.com/ionic-team/capacitor/issues/4416)) ([bae0f3d](https://github.com/ionic-team/capacitor/commit/bae0f3d2cee84978636d0f589bc7e2f745671baf))
560
- * **iOS:** Include native-bridge.js as a resource in both Cocoapods and direct build ([#4505](https://github.com/ionic-team/capacitor/issues/4505)) ([c16ccc0](https://github.com/ionic-team/capacitor/commit/c16ccc0118aec57dc23649894bc3bcd83827f89f))
561
-
562
-
563
-
564
-
565
-
566
- # [3.0.0-rc.0](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.6...3.0.0-rc.0) (2021-03-10)
567
-
568
-
569
- ### Features
570
-
571
- * **iOS:** Obj-C convenience accessors on CAPPluginCall ([#4309](https://github.com/ionic-team/capacitor/issues/4309)) ([e3657d7](https://github.com/ionic-team/capacitor/commit/e3657d77647187946ffcd4c4791f4a47c768db7f))
572
- * **iOS:** Unifying saving plugin calls ([#4253](https://github.com/ionic-team/capacitor/issues/4253)) ([de71da5](https://github.com/ionic-team/capacitor/commit/de71da52b80ff52d0234a5301fc6cae675640a33))
573
-
574
-
575
-
576
-
577
-
578
- # [3.0.0-beta.6](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.5...3.0.0-beta.6) (2021-02-27)
579
-
580
- **Note:** Version bump only for package @capacitor/ios
581
-
582
-
583
-
584
-
585
-
586
- # [3.0.0-beta.5](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.4...3.0.0-beta.5) (2021-02-27)
587
-
588
- **Note:** Version bump only for package @capacitor/ios
589
-
590
-
591
-
592
-
593
-
594
- # [3.0.0-beta.4](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.3...3.0.0-beta.4) (2021-02-26)
595
-
596
- **Note:** Version bump only for package @capacitor/ios
597
-
598
-
599
-
600
-
601
-
602
- # [3.0.0-beta.3](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.2...3.0.0-beta.3) (2021-02-18)
603
-
604
-
605
- ### Features
606
-
607
- * **iOS:** Add automatic Date serialization to bridge communication ([#4177](https://github.com/ionic-team/capacitor/issues/4177)) ([3dabc69](https://github.com/ionic-team/capacitor/commit/3dabc69eab1c8ce0b7734acb641b67d349ec3093))
608
-
609
-
610
-
611
-
612
-
613
- # [3.0.0-beta.2](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.1...3.0.0-beta.2) (2021-02-08)
614
-
615
-
616
- ### Bug Fixes
617
-
618
- * address bug in `isPluginAvailable()` for web and native ([#4114](https://github.com/ionic-team/capacitor/issues/4114)) ([2fbd954](https://github.com/ionic-team/capacitor/commit/2fbd95465a321b8f4c50d4daf22a63d8043cee9b))
619
- * **iOS:** preserve null values in bridged types ([#4072](https://github.com/ionic-team/capacitor/issues/4072)) ([6dc691e](https://github.com/ionic-team/capacitor/commit/6dc691e66a07a421d5d4b08028ea05a65b3ddd84))
620
-
621
-
622
-
623
-
624
-
625
- # [3.0.0-beta.1](https://github.com/ionic-team/capacitor/compare/3.0.0-beta.0...3.0.0-beta.1) (2021-01-14)
626
-
627
- **Note:** Version bump only for package @capacitor/ios
628
-
629
-
630
-
631
-
632
-
633
- # [3.0.0-beta.0](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.14...3.0.0-beta.0) (2021-01-13)
634
-
635
- **Note:** Version bump only for package @capacitor/ios
636
-
637
-
638
-
639
-
640
-
641
- # [3.0.0-alpha.14](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.13...3.0.0-alpha.14) (2021-01-13)
642
-
643
- **Note:** Version bump only for package @capacitor/ios
644
-
645
-
646
-
647
-
648
-
649
- # [3.0.0-alpha.13](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.12...3.0.0-alpha.13) (2021-01-13)
650
-
651
-
652
- ### Bug Fixes
653
-
654
- * **iOS:** properly handle date types during JSValue coercion ([#4043](https://github.com/ionic-team/capacitor/issues/4043)) ([1affae7](https://github.com/ionic-team/capacitor/commit/1affae7cf8d2f49681bf25be48633ab985bbd12f))
655
- * **iOS:** skip Swift type coercion on Cordova plugin calls ([#4048](https://github.com/ionic-team/capacitor/issues/4048)) ([7bb9e0f](https://github.com/ionic-team/capacitor/commit/7bb9e0f22fdea369a6522c2d63a5b56baab9f5ca))
656
-
657
-
658
-
659
- # [3.0.0-alpha.12](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.11...3.0.0-alpha.12) (2021-01-08)
660
-
661
- **Note:** Version bump only for package @capacitor/ios
662
-
663
-
664
-
665
-
666
-
667
- # [3.0.0-alpha.11](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.10...3.0.0-alpha.11) (2020-12-26)
668
-
669
-
670
- ### Features
671
-
672
- * **iOS:** Open CAPBridgeViewController for subclassing ([#3973](https://github.com/ionic-team/capacitor/issues/3973)) ([a601705](https://github.com/ionic-team/capacitor/commit/a601705f8116ac10d1a0b5942511952c07cf474e))
673
-
674
-
675
-
676
-
677
-
678
- # [3.0.0-alpha.9](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.8...3.0.0-alpha.9) (2020-12-15)
679
-
680
- **Note:** Version bump only for package @capacitor/ios
681
-
682
-
683
-
684
-
685
-
686
- # [3.0.0-alpha.8](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.7...3.0.0-alpha.8) (2020-12-15)
687
-
688
-
689
- ### Bug Fixes
690
-
691
- * **ios:** expose lastURL getter ([#3898](https://github.com/ionic-team/capacitor/issues/3898)) ([90b7fe3](https://github.com/ionic-team/capacitor/commit/90b7fe39f5a7cb9d584618a6fba66338f2bbf5fe))
692
-
693
-
694
-
695
- # [3.0.0-alpha.7](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.6...3.0.0-alpha.7) (2020-12-02)
696
-
697
-
698
- ### Bug Fixes
699
-
700
- * **ios:** share message handler between webview and bridge ([#3875](https://github.com/ionic-team/capacitor/issues/3875)) ([f7dff2e](https://github.com/ionic-team/capacitor/commit/f7dff2e661a54bee770940ee1ebd9eab6456ba2e))
701
-
702
-
703
- ### Features
704
-
705
- * **ios:** add local and remote notification router ([#3796](https://github.com/ionic-team/capacitor/issues/3796)) ([f3edaf9](https://github.com/ionic-team/capacitor/commit/f3edaf93d4328ea3ee90df573bf14ef0efc7553b))
706
- * **ios:** add path utilities to bridge ([#3842](https://github.com/ionic-team/capacitor/issues/3842)) ([c31eb35](https://github.com/ionic-team/capacitor/commit/c31eb35f83a33626a9d88731c0fff18966c71b0b))
707
- * **iOS:** Add base implementation of permissions calls ([#3856](https://github.com/ionic-team/capacitor/issues/3856)) ([d733236](https://github.com/ionic-team/capacitor/commit/d7332364212794a5005229defd05c129921d9c5d))
708
- * **iOS:** Refactoring configuration ([#3759](https://github.com/ionic-team/capacitor/issues/3759)) ([e2e64c2](https://github.com/ionic-team/capacitor/commit/e2e64c23b88d93a1c594df51dddd0c55d5f37770))
709
-
710
-
711
-
712
- # [3.0.0-alpha.6](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.5...3.0.0-alpha.6) (2020-10-30)
713
-
714
-
715
- ### Features
716
-
717
- * unified errors and error codes ([#3673](https://github.com/ionic-team/capacitor/issues/3673)) ([f9e0803](https://github.com/ionic-team/capacitor/commit/f9e08038aa88f7453e8235f380d2767a12a7a073))
718
-
719
-
720
-
721
-
722
-
723
- # [3.0.0-alpha.5](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.4...3.0.0-alpha.5) (2020-10-06)
724
-
725
- **Note:** Version bump only for package @capacitor/ios
726
-
727
-
728
-
729
- # [3.0.0-alpha.4](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.3...3.0.0-alpha.4) (2020-09-23)
730
-
731
- **Note:** Version bump only for package @capacitor/ios
732
-
733
-
734
-
735
- # [3.0.0-alpha.3](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.2...3.0.0-alpha.3) (2020-09-15)
736
-
737
-
738
- **Note:** Version bump only for package @capacitor/ios
739
-
740
-
741
-
742
- # [3.0.0-alpha.2](https://github.com/ionic-team/capacitor/compare/3.0.0-alpha.1...3.0.0-alpha.2) (2020-08-31)
743
-
744
-
745
- ### Features
746
-
747
- * Add extension for creating data from data url ([#3474](https://github.com/ionic-team/capacitor/issues/3474)) ([2909fd0](https://github.com/ionic-team/capacitor/commit/2909fd0ac0d9fdb2cdb7fd25e38742451aa05fb1))
748
-
749
-
750
-
751
- # [3.0.0-alpha.1](https://github.com/ionic-team/capacitor/compare/2.4.0...3.0.0-alpha.1) (2020-08-21)
752
-
753
-
754
- ### Bug Fixes
755
-
756
- * **ios:** config bug from swiftlint refactor ([ace879f](https://github.com/ionic-team/capacitor/commit/ace879f42b19aa064efa80142c3783f736745344))
757
-
758
-
759
-
760
- # [3.0.0-alpha.0](https://github.com/ionic-team/capacitor/compare/2.3.0...3.0.0-alpha.0) (2020-07-23)