@capacitor/ios 3.4.3 → 3.6.0
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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,41 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.6.0](https://github.com/ionic-team/capacitor/compare/3.5.1...3.6.0) (2022-06-17)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **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))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* **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))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.5.1](https://github.com/ionic-team/capacitor/compare/3.5.0...3.5.1) (2022-05-04)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @capacitor/ios
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# [3.5.0](https://github.com/ionic-team/capacitor/compare/3.4.3...3.5.0) (2022-04-22)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
* **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))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
6
41
|
## [3.4.3](https://github.com/ionic-team/capacitor/compare/3.4.2...3.4.3) (2022-03-04)
|
|
7
42
|
|
|
8
43
|
**Note:** Version bump only for package @capacitor/ios
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import CommonCrypto
|
|
2
|
+
import Foundation
|
|
3
|
+
|
|
4
|
+
private func hexString(_ iterator: Array<UInt8>.Iterator) -> String {
|
|
5
|
+
return iterator.map { String(format: "%02x", $0) }.joined()
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
extension Data {
|
|
9
|
+
public var sha256: String {
|
|
10
|
+
var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
|
|
11
|
+
self.withUnsafeBytes { bytes in
|
|
12
|
+
_ = CC_SHA256(bytes.baseAddress, CC_LONG(self.count), &digest)
|
|
13
|
+
}
|
|
14
|
+
return hexString(digest.makeIterator())
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public class AppUUID {
|
|
19
|
+
private static let key: String = "CapacitorAppUUID"
|
|
20
|
+
|
|
21
|
+
public static func getAppUUID() -> String {
|
|
22
|
+
assertAppUUID()
|
|
23
|
+
return readUUID()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public static func regenerateAppUUID() {
|
|
27
|
+
let uuid = generateUUID()
|
|
28
|
+
writeUUID(uuid)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private static func assertAppUUID() {
|
|
32
|
+
let uuid = readUUID()
|
|
33
|
+
if uuid == "" {
|
|
34
|
+
regenerateAppUUID()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private static func generateUUID() -> String {
|
|
39
|
+
let uuid: String = UUID.init().uuidString
|
|
40
|
+
return uuid.data(using: .utf8)!.sha256
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private static func readUUID() -> String {
|
|
44
|
+
let defaults = UserDefaults.standard
|
|
45
|
+
return defaults.string(forKey: key) ?? ""
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private static func writeUUID(_ uuid: String) {
|
|
49
|
+
let defaults = UserDefaults.standard
|
|
50
|
+
defaults.set(uuid, forKey: key)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
}
|
|
@@ -42,7 +42,7 @@ import Cordova
|
|
|
42
42
|
setScreenOrientationDefaults()
|
|
43
43
|
|
|
44
44
|
// get the web view
|
|
45
|
-
let assetHandler = WebViewAssetHandler()
|
|
45
|
+
let assetHandler = WebViewAssetHandler(router: router())
|
|
46
46
|
assetHandler.setAssetPath(configuration.appLocation.path)
|
|
47
47
|
let delegationHandler = WebViewDelegationHandler()
|
|
48
48
|
prepareWebView(with: configuration, assetHandler: assetHandler, delegationHandler: delegationHandler)
|
|
@@ -89,7 +89,11 @@ import Cordova
|
|
|
89
89
|
}
|
|
90
90
|
return descriptor
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
|
|
93
|
+
open func router() -> Router {
|
|
94
|
+
return _Router()
|
|
95
|
+
}
|
|
96
|
+
|
|
93
97
|
/**
|
|
94
98
|
The WKWebViewConfiguration to use for the webview.
|
|
95
99
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Router.swift
|
|
3
|
+
// Capacitor
|
|
4
|
+
//
|
|
5
|
+
// Created by Steven Sherry on 3/29/22.
|
|
6
|
+
// Copyright © 2022 Drifty Co. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
|
|
11
|
+
public protocol Router {
|
|
12
|
+
func route(for path: String) -> String
|
|
13
|
+
var basePath: String { get set }
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// swiftlint:disable:next type_name
|
|
17
|
+
internal struct _Router: Router {
|
|
18
|
+
var basePath: String = ""
|
|
19
|
+
func route(for path: String) -> String {
|
|
20
|
+
let pathUrl = URL(fileURLWithPath: path)
|
|
21
|
+
|
|
22
|
+
// If there's no path extension it also means the path is empty or a SPA route
|
|
23
|
+
if pathUrl.pathExtension.isEmpty {
|
|
24
|
+
return basePath + "/index.html"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return basePath + path
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -3,25 +3,28 @@ import MobileCoreServices
|
|
|
3
3
|
|
|
4
4
|
@objc(CAPWebViewAssetHandler)
|
|
5
5
|
internal class WebViewAssetHandler: NSObject, WKURLSchemeHandler {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
private var router: Router
|
|
7
|
+
|
|
8
|
+
init(router: Router) {
|
|
9
|
+
self.router = router
|
|
10
|
+
super.init()
|
|
11
|
+
}
|
|
8
12
|
|
|
9
13
|
func setAssetPath(_ assetPath: String) {
|
|
10
|
-
|
|
14
|
+
router.basePath = assetPath
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
|
|
14
|
-
|
|
18
|
+
let startPath: String
|
|
15
19
|
let url = urlSchemeTask.request.url!
|
|
16
20
|
let stringToLoad = url.path
|
|
17
|
-
|
|
21
|
+
|
|
18
22
|
if stringToLoad.starts(with: CapacitorBridge.fileStartIdentifier) {
|
|
19
23
|
startPath = stringToLoad.replacingOccurrences(of: CapacitorBridge.fileStartIdentifier, with: "")
|
|
20
|
-
} else if stringToLoad.isEmpty || url.pathExtension.isEmpty {
|
|
21
|
-
startPath.append("/index.html")
|
|
22
24
|
} else {
|
|
23
|
-
startPath.
|
|
25
|
+
startPath = router.route(for: stringToLoad)
|
|
24
26
|
}
|
|
27
|
+
|
|
25
28
|
let localUrl = URL.init(string: url.absoluteString)!
|
|
26
29
|
let fileUrl = URL.init(fileURLWithPath: startPath)
|
|
27
30
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capacitor/ios",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
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)",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"xc:build:CapacitorCordova": "cd CapacitorCordova && xcodebuild && cd .."
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@capacitor/core": "^3.
|
|
27
|
+
"@capacitor/core": "^3.6.0"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "1e06a199a44bb5321f0fb48b5fbca961cc1dbb50"
|
|
33
33
|
}
|