Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RMET-1205 iOS xcframework update for BackgroundJob update #58

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ The changes documented here do not include those from the original repository.

## [Unreleased]

- Implemented Unit Tests for BackgroundJob operations on iOS (https://outsystemsrd.atlassian.net/browse/RMET-1210)

- Fixed ClickActivity package name on plugin.xml (https://outsystemsrd.atlassian.net/browse/RMET-1268)

- Implemented Unit Tests for UpdateBackgroundJob feature on Android (https://outsystemsrd.atlassian.net/browse/RMET-1235)
Expand Down
92 changes: 92 additions & 0 deletions src/ios/OSHealthFitness.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,69 @@ class OSHealthFitness: CordovaImplementation {
}
}

@objc(updateBackgroundJob:)
func updateBackgroundJob(command: CDVInvokedUrlCommand) {
callbackId = command.callbackId

let queryParameters = command.arguments[0] as? String ?? ""
if let parameters = parseUpdateParameters(parameters: queryParameters) {

plugin?.updateBackgroundJob(id: parameters.id,
notificationFrequency: parameters.notificationFrequency,
notificationFrequencyGrouping: parameters.notificationFrequencyGrouping,
condition: parameters.condition,
value: parameters.value,
notificationHeader: parameters.notificationHeader,
notificationBody: parameters.notificationBody,
isActive: parameters.isActive)
{ success, error in

if error != nil {
self.sendResult(result: "", error: error, callBackID: self.callbackId)
}
else if success {
self.sendResult(result: "", error: nil, callBackID: self.callbackId)
}
}

}
}

private func parseUpdateParameters(parameters: String) -> BackgroundJobParameters? {
let data = parameters.data(using: .utf8)!
if let jsonData = try? JSONSerialization.jsonObject(with: data, options : .allowFragments) as? Dictionary<String,Any> {

// I'm doing this mess because Outsystems
// seams to be sending the parameters as strings.
let id = Int64(jsonData["Id"] as? String ?? "")
let notificationFrequency = jsonData["NotificationFrequency"] as? String
let notificationFrequencyGrouping = jsonData["NotificationFrequencyGrouping"] as? Int
let condition = jsonData["Condition"] as? String
let value = jsonData["Value"] as? Double
let notificationHeader = jsonData["NotificationHeader"] as? String
let notificationBody = jsonData["NotificationBody"] as? String
var isActive: Bool? = nil
let activeString = jsonData["IsActive"] as? String ?? ""
if activeString != "" {
isActive = activeString.lowercased() == "true"
}

return BackgroundJobParameters(id: id,
variable: nil,
timeUnit: nil,
timeUnitGrouping: nil,
notificationFrequency: notificationFrequency,
notificationFrequencyGrouping: notificationFrequencyGrouping,
jobFrequency: nil,
condition: condition,
value: value,
notificationHeader: notificationHeader,
notificationBody: notificationBody,
isActive: isActive)
}
return nil
}

@objc(getLastRecord:)
func getLastRecord(command: CDVInvokedUrlCommand) {
callbackId = command.callbackId
Expand All @@ -81,7 +144,32 @@ class OSHealthFitness: CordovaImplementation {
}

}

@objc(deleteBackgroundJob:)
func deleteBackgroundJob(command: CDVInvokedUrlCommand) {
callbackId = command.callbackId
let id = command.arguments[0] as? String ?? ""
plugin?.deleteBackgroundJobs(id: id) { success, error in
if error != nil {
self.sendResult(result: nil, error: error, callBackID: self.callbackId)
} else if success {
self.sendResult(result: "", error: nil, callBackID: self.callbackId)
}
}
}

@objc(listBackgroundJobs:)
func listBackgroundJobs(command: CDVInvokedUrlCommand) {
callbackId = command.callbackId
plugin?.listBackgroundJobs() { success, result, error in
if error != nil {
self.sendResult(result: nil, error: error, callBackID: self.callbackId)
} else if success {
self.sendResult(result: result, error: nil, callBackID: self.callbackId)
}
}
}

@objc(setBackgroundJob:)
func setBackgroundJob(command: CDVInvokedUrlCommand) {
callbackId = command.callbackId
Expand All @@ -94,13 +182,17 @@ class OSHealthFitness: CordovaImplementation {
let condition = params.condition ?? ""
let timeUnit = params.timeUnit ?? ""
let jobFrequency = params.jobFrequency ?? ""
let notificationFrequency = params.notificationFrequency ?? ""
let notificationFrequencyGrouping = params.notificationFrequencyGrouping ?? 0
let value = params.value ?? 0
let notificationHeader = params.notificationHeader ?? ""
let notificationBody = params.notificationBody ?? ""

plugin?.setBackgroundJob(variable: variable,
timeUnit: timeUnit,
timeUnitGrouping: timeUnitGrouping,
notificationFrequency: notificationFrequency,
notificationFrequencyGrouping: notificationFrequencyGrouping,
jobFrequency: jobFrequency,
condition: condition,
value: value,
Expand Down
10 changes: 5 additions & 5 deletions src/ios/frameworks/OSHealthFitnessLib.xcframework/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,30 @@
<array>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>OSHealthFitnessLib.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>OSHealthFitnessLib.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Generated by Apple Swift version 5.3 (swiftlang-1200.0.29.2 clang-1200.0.30.1)
// Generated by Apple Swift version 5.3.1 (swiftlang-1200.0.41 clang-1200.0.32.8)
#ifndef OSHEALTHFITNESSLIB_SWIFT_H
#define OSHEALTHFITNESSLIB_SWIFT_H
#pragma clang diagnostic push
Expand Down Expand Up @@ -189,6 +189,7 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreData;
@import Foundation;
#endif

#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
Expand Down Expand Up @@ -219,6 +220,10 @@ SWIFT_CLASS("_TtC18OSHealthFitnessLib13BackgroundJob")
@interface BackgroundJob (SWIFT_EXTENSION(OSHealthFitnessLib))
@property (nonatomic, copy) NSString * _Nullable comparision;
@property (nonatomic) int64_t id;
@property (nonatomic) BOOL isActive;
@property (nonatomic, copy) NSDate * _Nullable lastNotificationTimestamp;
@property (nonatomic, copy) NSString * _Nullable notificationFrequency;
@property (nonatomic) int64_t notificationFrequencyGrouping;
@property (nonatomic, copy) NSString * _Nullable operation;
@property (nonatomic, copy) NSString * _Nullable timeUnit;
@property (nonatomic) int64_t timeUnitGrouping;
Expand All @@ -239,6 +244,7 @@ SWIFT_CLASS("_TtC18OSHealthFitnessLib12Notification")
@property (nonatomic, copy) NSString * _Nullable body;
@property (nonatomic) int64_t id;
@property (nonatomic, copy) NSString * _Nullable title;
@property (nonatomic, strong) BackgroundJob * _Nullable relationship;
@end

#if __has_attribute(external_source_symbol)
Expand Down
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.3 (swiftlang-1200.0.29.2 clang-1200.0.30.1)
// swift-compiler-version: Apple Swift version 5.3.1 (swiftlang-1200.0.41 clang-1200.0.32.8)
// swift-module-flags: -target arm64-apple-ios12.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name OSHealthFitnessLib
import BackgroundTasks
import CloudKit
import CoreData
import Foundation
import HealthKit
Expand All @@ -25,6 +26,9 @@ public enum HealthKitErrors : Swift.Int, Foundation.CustomNSError, Foundation.Lo
case featureNotAvailableiOS13
case backgroundJobAlreadyExists
case featureNotAvailableiOS14
case invalidBackgroundJobID
case backgroundJobNotFound
case unsubscribeError
public var errorDescription: Swift.String? {
get
}
Expand All @@ -42,22 +46,34 @@ extension Encodable {
}
open class HealthFitnessPlugin {
public init()
public func deleteBackgroundJobs(id: Swift.String?, completion: @escaping (Swift.Bool, Foundation.NSError?) -> Swift.Void)
public func countBackgroundJobsFor(variable: Swift.String) -> Swift.Int
public func listBackgroundJobs(completion: @escaping (Swift.Bool, Swift.String?, Foundation.NSError?) -> Swift.Void)
public func writeData(variable: Swift.String, value: Swift.Double, completion: @escaping (Swift.Bool, Foundation.NSError?) -> Swift.Void)
public func getLastRecord(variable: Swift.String, mostRecent: Swift.Bool, timeUnitLength: Swift.Int, completion: @escaping (Swift.Bool, Swift.String?, Foundation.NSError?) -> Swift.Void)
public func requestPermissions(customPermissions: Swift.String, allVariables: Swift.String, fitnessVariables: Swift.String, healthVariables: Swift.String, profileVariables: Swift.String, summaryVariables: Swift.String, completion: @escaping (Swift.Bool, Foundation.NSError?) -> Swift.Void)
public func setBackgroundJob(variable: Swift.String, timeUnit: Swift.String, timeUnitGrouping: Swift.Int, jobFrequency: Swift.String, condition: Swift.String, value: Swift.Double, notificationHeader: Swift.String, notificationBody: Swift.String, completion: @escaping (Swift.Bool, Swift.String?, Foundation.NSError?) -> Swift.Void)
public func setBackgroundJob(variable: Swift.String, timeUnit: Swift.String, timeUnitGrouping: Swift.Int, notificationFrequency: Swift.String, notificationFrequencyGrouping: Swift.Int, jobFrequency: Swift.String, condition: Swift.String, value: Swift.Double, notificationHeader: Swift.String, notificationBody: Swift.String, completion: @escaping (Swift.Bool, Swift.String?, Foundation.NSError?) -> Swift.Void)
public func updateBackgroundJob(id: Swift.Int64?, notificationFrequency: Swift.String?, notificationFrequencyGrouping: Swift.Int?, condition: Swift.String?, value: Swift.Double?, notificationHeader: Swift.String?, notificationBody: Swift.String?, isActive: Swift.Bool?, completion: @escaping (Swift.Bool, Foundation.NSError?) -> Swift.Void)
public func advancedQuery(variable: Swift.String, startDate: Foundation.Date, endDate: Foundation.Date, timeUnit: Swift.String, operationType: Swift.String, mostRecent: Swift.Bool, timeUnitLength: Swift.Int, completion: @escaping (Swift.Bool, Swift.String?, Foundation.NSError?) -> Swift.Void)
@objc deinit
}
@_hasMissingDesignatedInitializers public class BackgroundJobParameters : Swift.Codable {
extension Date {
public init(_ dateString: Swift.String)
}
public class BackgroundJobParameters : Swift.Codable {
final public let id: Swift.Int64?
final public let variable: Swift.String?
final public let timeUnit: Swift.String?
final public let timeUnitGrouping: Swift.Int?
final public let notificationFrequency: Swift.String?
final public let notificationFrequencyGrouping: Swift.Int?
final public let jobFrequency: Swift.String?
final public let condition: Swift.String?
final public let value: Swift.Double?
final public let notificationHeader: Swift.String?
final public let notificationBody: Swift.String?
final public let isActive: Swift.Bool?
public init(id: Swift.Int64?, variable: Swift.String?, timeUnit: Swift.String?, timeUnitGrouping: Swift.Int?, notificationFrequency: Swift.String?, notificationFrequencyGrouping: Swift.Int?, jobFrequency: Swift.String?, condition: Swift.String?, value: Swift.Double?, notificationHeader: Swift.String?, notificationBody: Swift.String?, isActive: Swift.Bool?)
@objc deinit
required public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
Expand All @@ -71,9 +87,6 @@ open class HealthFitnessPlugin {
required public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
extension Date {
public init(_ dateString: Swift.String)
}
@objc @_inheritsConvenienceInitializers public class BackgroundJob : CoreData.NSManagedObject {
@objc override dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?)
@objc deinit
Expand All @@ -88,6 +101,22 @@ extension BackgroundJob {
@objc get
@objc set
}
@objc @NSManaged dynamic public var isActive: Swift.Bool {
@objc get
@objc set
}
@objc @NSManaged dynamic public var lastNotificationTimestamp: Foundation.Date? {
@objc get
@objc set
}
@objc @NSManaged dynamic public var notificationFrequency: Swift.String? {
@objc get
@objc set
}
@objc @NSManaged dynamic public var notificationFrequencyGrouping: Swift.Int64 {
@objc get
@objc set
}
@objc @NSManaged dynamic public var operation: Swift.String? {
@objc get
@objc set
Expand Down Expand Up @@ -131,6 +160,10 @@ extension Notification {
@objc get
@objc set
}
@objc @NSManaged dynamic public var relationship: OSHealthFitnessLib.BackgroundJob? {
@objc get
@objc set
}
}
extension OSHealthFitnessLib.HealthKitErrors : Swift.Equatable {}
extension OSHealthFitnessLib.HealthKitErrors : Swift.Hashable {}
Expand Down
Binary file not shown.
Loading