@capgo/native-market 1.0.9 → 1.0.10

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.
@@ -1,6 +1,24 @@
1
1
  import Foundation
2
2
  import Capacitor
3
3
 
4
+ struct APIResult: Codable {
5
+ struct App: Codable {
6
+ let trackId: Int
7
+
8
+ enum CodingKeys : String, CodingKey {
9
+ case trackId
10
+ }
11
+ }
12
+
13
+ let resultCount: Int
14
+ let apps: [App]
15
+
16
+ enum CodingKeys : String, CodingKey {
17
+ case resultCount
18
+ case apps = "results"
19
+ }
20
+ }
21
+
4
22
  /**
5
23
  * Please read the Capacitor iOS Plugin Development Guide
6
24
  * here: https://capacitor.ionicframework.com/docs/plugins/ios
@@ -12,20 +30,29 @@ public class NativeMarket: CAPPlugin {
12
30
  if call.hasOption("appId") {
13
31
  let appId = call.getString("appId")
14
32
 
15
- let url = "itms-apps://itunes.apple.com/app/" + appId!
16
- let appUrl = URL(string: url)
17
-
18
- DispatchQueue.main.async {
19
- if UIApplication.shared.canOpenURL(appUrl!) {
20
- if #available(iOS 10.0, *) {
21
- UIApplication.shared.open(appUrl!, options: [:]) { (success) in
33
+ do {
34
+ let url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appId)")
35
+ let data = try Data(contentsOf: url!)
36
+ let decoder = JSONDecoder()
37
+ let apps = try! decoder.decode(APIResult.self, from: data).apps
38
+ let urlStore = "itms-apps://itunes.apple.com/app/id\(apps[0].trackId)"
39
+ let appUrl = URL(string: urlStore)
40
+
41
+ DispatchQueue.main.async {
42
+ if UIApplication.shared.canOpenURL(appUrl!) {
43
+ if #available(iOS 10.0, *) {
44
+ UIApplication.shared.open(appUrl!, options: [:]) { (success) in
45
+ call.resolve()
46
+ }
47
+ } else {
48
+ UIApplication.shared.openURL(appUrl!)
22
49
  call.resolve()
23
50
  }
24
- } else {
25
- UIApplication.shared.openURL(appUrl!)
26
- call.resolve()
27
51
  }
28
52
  }
53
+ } catch {
54
+ print("trackId cannot be found from appId")
55
+ call.reject("trackId cannot be found from appId")
29
56
  }
30
57
  } else {
31
58
  call.reject("appId is missing")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/native-market",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "A native market plugin for linking to google play or app store.",
5
5
  "module": "dist/esm/index.js",
6
6
  "main": "dist/esm/index.js",