|
|
@@ -20,16 +20,6 @@ public class ClassifyPhotoPlugin: NSObject, FlutterPlugin {
|
|
|
self.getPhoto(flutterResult: result)
|
|
|
case "getStorageInfo":
|
|
|
getStorageInfo(result: result)
|
|
|
-// case "checkTrialEligibility":
|
|
|
-// if #available(iOS 15.0, *) {
|
|
|
-// Task {
|
|
|
-// let handler = SubscriptionHandler()
|
|
|
-// let isEligible = await handler.checkTrialEligibility()
|
|
|
-// DispatchQueue.main.async {
|
|
|
-// result(isEligible)
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
case "getExifInfo":
|
|
|
guard let args = call.arguments as? [String: Any],
|
|
|
let filePath = args["filePath"] as? String else {
|
|
|
@@ -41,6 +31,17 @@ public class ClassifyPhotoPlugin: NSObject, FlutterPlugin {
|
|
|
return
|
|
|
}
|
|
|
getExifInfo(filePath: filePath, completion: result)
|
|
|
+ case "getPhotosSize":
|
|
|
+ guard let args = call.arguments as? [String: Any],
|
|
|
+ let assetIds = args["assetIds"] as? [String] else {
|
|
|
+ result(FlutterError(
|
|
|
+ code: "INVALID_ARGUMENTS",
|
|
|
+ message: "Missing filePath parameter",
|
|
|
+ details: nil
|
|
|
+ ))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ calculatePhotosSize(assetIds: assetIds, completion: result)
|
|
|
case "getPlatformVersion":
|
|
|
result("iOS " + UIDevice.current.systemVersion)
|
|
|
default:
|
|
|
@@ -307,6 +308,32 @@ public class ClassifyPhotoPlugin: NSObject, FlutterPlugin {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 计算选择的图片大小
|
|
|
+extension ClassifyPhotoPlugin {
|
|
|
+
|
|
|
+ private func calculatePhotosSize(assetIds: [String], completion: @escaping FlutterResult) {
|
|
|
+ let assets = PHAsset.fetchAssets(withLocalIdentifiers: assetIds, options: nil)
|
|
|
+ var phAssets: [PHAsset] = []
|
|
|
+ var sizes: Int64 = 0 // 用于存储文件大小
|
|
|
+
|
|
|
+ assets.enumerateObjects { (phAsset, _, _) in
|
|
|
+ phAssets.append(phAsset)
|
|
|
+
|
|
|
+ // 获取 PHAsset 的资源
|
|
|
+ let resources = PHAssetResource.assetResources(for: phAsset)
|
|
|
+ if let resource = resources.first {
|
|
|
+ // 获取文件大小
|
|
|
+ if let unsignedInt64 = resource.value(forKey: "fileSize") as? CLong {
|
|
|
+ sizes += Int64(unsignedInt64)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 返回文件大小到 Flutter
|
|
|
+ completion(sizes)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
class SubscriptionHandler: NSObject {
|
|
|
|