Skip to content

Commit 72d1f80

Browse files
committed
feat(in-app-review): use AppStore.requestReview on supported newer iOS versions
1 parent 9970834 commit 72d1f80

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

packages/nativescript-in-app-review/index.ios.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
import { Application, Device } from '@nativescript/core';
1+
import { Application, Device, Utils } from '@nativescript/core';
22
import { InAppReviewCommon } from './common';
33

4+
let nscAppStore: NSCAppStore;
5+
46
export class InAppReview extends InAppReviewCommon {
57
static requestReviewPopup() {
6-
if (+Device.sdkVersion < 14.0) {
8+
if (Utils.SDK_VERSION >= 17) {
9+
if (!nscAppStore) {
10+
nscAppStore = NSCAppStore.new();
11+
}
12+
nscAppStore.requestReview();
13+
} else if (Utils.SDK_VERSION < 14) {
714
SKStoreReviewController.requestReview();
815
} else {
916
SKStoreReviewController.requestReviewInScene((Application.ios.window as UIWindow).windowScene);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import StoreKit
2+
3+
@objc public class NSCAppStore: NSObject {
4+
@MainActor
5+
@objc public func requestReview() {
6+
if #available(iOS 16.0, *) {
7+
let windowScene = UIApplication.shared.windows.first?.windowScene
8+
if (windowScene == nil) {
9+
guard let scene = UIApplication.shared.connectedScenes.first,
10+
let windowSceneDelegate = scene.delegate as? UIWindowSceneDelegate,
11+
let window = windowSceneDelegate.window else {
12+
return
13+
}
14+
AppStore.requestReview(in: window!.windowScene!)
15+
return
16+
}
17+
18+
AppStore.requestReview(in: windowScene!)
19+
}
20+
}
21+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
11
/// <reference path="../../references.d.ts" />
22
/// <reference path="./types/play-review.d.ts" />
33
/// <reference path="./types/play-services-tasks.d.ts" />
4+
5+
declare class NSCAppStore extends NSObject {
6+
7+
static alloc(): NSCAppStore; // inherited from NSObject
8+
9+
static new(): NSCAppStore; // inherited from NSObject
10+
11+
requestReview(): void;
12+
}

0 commit comments

Comments
 (0)