Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
rn-apple-healthkit
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Jira
Jira
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ym
rn-apple-healthkit
Commits
c2cb0f2d
Commit
c2cb0f2d
authored
Nov 27, 2017
by
王品堯
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HA-52
調整metadata的判斷, 調整取得血壓、睡眠、步數的回傳值, 增加參數改變步數interval
parent
9175a4f4
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
2 deletions
+113
-2
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h
+1
-0
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m
+36
-0
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.m
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.m
+29
-0
RCTAppleHealthKit/RCTAppleHealthKit+Queries.h
RCTAppleHealthKit/RCTAppleHealthKit+Queries.h
+1
-0
RCTAppleHealthKit/RCTAppleHealthKit+Queries.m
RCTAppleHealthKit/RCTAppleHealthKit+Queries.m
+41
-2
RCTAppleHealthKit/RCTAppleHealthKit.m
RCTAppleHealthKit/RCTAppleHealthKit.m
+5
-0
No files found.
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.h
View file @
c2cb0f2d
...
...
@@ -11,6 +11,7 @@
@interface
RCTAppleHealthKit
(
Methods_Fitness
)
-
(
void
)
fitness_getStepCountOnDay
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
;
-
(
void
)
fitness_geStepSamples
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
;
-
(
void
)
fitness_getDailyStepSamples
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
;
-
(
void
)
fitness_saveSteps
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
;
-
(
void
)
fitness_initializeStepEventObserver
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
;
...
...
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Fitness.m
View file @
c2cb0f2d
...
...
@@ -49,6 +49,40 @@
}
-
(
void
)
fitness_geStepSamples
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
{
HKUnit
*
unit
=
[
RCTAppleHealthKit
hkUnitFromOptions
:
input
key
:
@"unit"
withDefault
:
[
HKUnit
countUnit
]];
NSUInteger
limit
=
[
RCTAppleHealthKit
uintFromOptions
:
input
key
:
@"limit"
withDefault
:
HKObjectQueryNoLimit
];
BOOL
ascending
=
[
RCTAppleHealthKit
boolFromOptions
:
input
key
:
@"ascending"
withDefault
:
false
];
NSDate
*
startDate
=
[
RCTAppleHealthKit
dateFromOptions
:
input
key
:
@"startDate"
withDefault
:
nil
];
NSDate
*
endDate
=
[
RCTAppleHealthKit
dateFromOptions
:
input
key
:
@"endDate"
withDefault
:
[
NSDate
date
]];
if
(
startDate
==
nil
){
callback
(@[
RCTMakeError
(
@"startDate is required in options"
,
nil
,
nil
)]);
return
;
}
HKQuantityType
*
stepCountType
=
[
HKObjectType
quantityTypeForIdentifier
:
HKQuantityTypeIdentifierStepCount
];
NSPredicate
*
predicate
=
[
RCTAppleHealthKit
predicateForSamplesBetweenDates
:
startDate
endDate
:
endDate
];
[
self
fetchQuantitySamplesOfType
:
stepCountType
unit:
unit
predicate:
predicate
ascending:
ascending
limit:
limit
completion:
^
(
NSArray
*
results
,
NSError
*
error
)
{
if
(
results
){
callback
(@[[
NSNull
null
],
results
]);
return
;
}
else
{
NSLog
(
@"error getting heart rate samples: %@"
,
error
);
callback
(@[
RCTMakeError
(
@"error getting heart rate samples"
,
nil
,
nil
)]);
return
;
}
}];
}
-
(
void
)
fitness_getDailyStepSamples
:(
NSDictionary
*
)
input
callback
:(
RCTResponseSenderBlock
)
callback
{
HKUnit
*
unit
=
[
RCTAppleHealthKit
hkUnitFromOptions
:
input
key
:
@"unit"
withDefault
:
[
HKUnit
countUnit
]];
...
...
@@ -56,6 +90,7 @@
BOOL
ascending
=
[
RCTAppleHealthKit
boolFromOptions
:
input
key
:
@"ascending"
withDefault
:
false
];
NSDate
*
startDate
=
[
RCTAppleHealthKit
dateFromOptions
:
input
key
:
@"startDate"
withDefault
:
nil
];
NSDate
*
endDate
=
[
RCTAppleHealthKit
dateFromOptions
:
input
key
:
@"endDate"
withDefault
:
[
NSDate
date
]];
NSString
*
gap
=
[
input
objectForKey
:
@"gap"
];
if
(
startDate
==
nil
){
callback
(@[
RCTMakeError
(
@"startDate is required in options"
,
nil
,
nil
)]);
return
;
...
...
@@ -69,6 +104,7 @@
endDate:
endDate
ascending:
ascending
limit:
limit
gap:
gap
completion:
^
(
NSArray
*
arr
,
NSError
*
err
){
if
(
err
!=
nil
)
{
NSLog
(
@"error with fetchCumulativeSumStatisticsCollection: %@"
,
err
);
...
...
RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.m
View file @
c2cb0f2d
...
...
@@ -106,12 +106,41 @@
HKQuantitySample
*
bloodPressureSystolicValue
=
[
bloodPressureValues
objectsForType
:
systolicType
].
anyObject
;
HKQuantitySample
*
bloodPressureDiastolicValue
=
[
bloodPressureValues
objectsForType
:
diastolicType
].
anyObject
;
NSString
*
deviceName
=
bloodPressureSystolicValue
.
device
.
name
?
bloodPressureSystolicValue
.
device
.
name
:
@""
;
NSString
*
deviceManufacturer
=
bloodPressureSystolicValue
.
device
.
manufacturer
?
bloodPressureSystolicValue
.
device
.
manufacturer
:
@""
;
NSString
*
deviceHardwareVer
=
bloodPressureSystolicValue
.
device
.
hardwareVersion
?
bloodPressureSystolicValue
.
device
.
hardwareVersion
:
@""
;
NSString
*
deviceSoftwareVer
=
bloodPressureSystolicValue
.
device
.
softwareVersion
?
bloodPressureSystolicValue
.
device
.
softwareVersion
:
@""
;
NSString
*
sourceName
=
bloodPressureSystolicValue
.
sourceRevision
.
source
.
name
;
NSString
*
sourceId
=
bloodPressureSystolicValue
.
sourceRevision
.
source
.
bundleIdentifier
;
NSString
*
uuid
=
bloodPressureSystolicValue
.
UUID
.
UUIDString
;
NSError
*
error
;
NSDictionary
*
metaDict
;
if
(
bloodPressureSystolicValue
.
metadata
==
nil
){
metaDict
=
[[
NSDictionary
alloc
]
init
];
}
else
{
metaDict
=
bloodPressureSystolicValue
.
metadata
;
}
NSData
*
jsonData
=
[
NSJSONSerialization
dataWithJSONObject
:
metaDict
options
:
NSJSONWritingPrettyPrinted
error
:&
error
];
NSString
*
metadata
=
[[
NSString
alloc
]
initWithData
:
jsonData
encoding
:
NSUTF8StringEncoding
];
NSDictionary
*
elem
=
@{
@"bloodPressureSystolicValue"
:
@
([
bloodPressureSystolicValue
.
quantity
doubleValueForUnit
:
unit
]),
@"bloodPressureDiastolicValue"
:
@
([
bloodPressureDiastolicValue
.
quantity
doubleValueForUnit
:
unit
]),
@"startDate"
:
[
sample
valueForKey
:
@"startDate"
],
@"endDate"
:
[
sample
valueForKey
:
@"endDate"
],
@"deviceName"
:
deviceName
,
@"deviceManufacturer"
:
deviceManufacturer
,
@"deviceHardware"
:
deviceHardwareVer
,
@"deviceSoftware"
:
deviceSoftwareVer
,
@"sourceName"
:
sourceName
,
@"sourceId"
:
sourceId
,
@"unit"
:
unit
.
description
,
@"uuid"
:
uuid
,
@"metadata"
:
metadata
};
[
data
addObject
:
elem
];
...
...
RCTAppleHealthKit/RCTAppleHealthKit+Queries.h
View file @
c2cb0f2d
...
...
@@ -36,6 +36,7 @@
endDate
:(
NSDate
*
)
endDate
ascending
:(
BOOL
)
asc
limit
:(
NSUInteger
)
lim
gap
:(
NSString
*
)
gap
completion
:(
void
(
^
)(
NSArray
*
,
NSError
*
))
completionHandler
;
...
...
RCTAppleHealthKit/RCTAppleHealthKit+Queries.m
View file @
c2cb0f2d
...
...
@@ -93,7 +93,13 @@
NSString
*
uuid
=
sample
.
UUID
.
UUIDString
;
NSError
*
error
;
NSData
*
jsonData
=
[
NSJSONSerialization
dataWithJSONObject
:
sample
.
metadata
options
:
NSJSONWritingPrettyPrinted
error
:&
error
];
NSDictionary
*
metaDict
;
if
(
sample
.
metadata
==
nil
){
metaDict
=
[[
NSDictionary
alloc
]
init
];
}
else
{
metaDict
=
sample
.
metadata
;
}
NSData
*
jsonData
=
[
NSJSONSerialization
dataWithJSONObject
:
metaDict
options
:
NSJSONWritingPrettyPrinted
error
:&
error
];
NSString
*
metadata
=
[[
NSString
alloc
]
initWithData
:
jsonData
encoding
:
NSUTF8StringEncoding
];
NSDictionary
*
elem
=
@{
...
...
@@ -185,11 +191,39 @@
valueString
=
@"UNKNOWN"
;
break
;
}
NSString
*
deviceName
=
sample
.
device
.
name
?
sample
.
device
.
name
:
@""
;
NSString
*
deviceManufacturer
=
sample
.
device
.
manufacturer
?
sample
.
device
.
manufacturer
:
@""
;
NSString
*
deviceHardwareVer
=
sample
.
device
.
hardwareVersion
?
sample
.
device
.
hardwareVersion
:
@""
;
NSString
*
deviceSoftwareVer
=
sample
.
device
.
softwareVersion
?
sample
.
device
.
softwareVersion
:
@""
;
NSString
*
sourceName
=
sample
.
sourceRevision
.
source
.
name
;
NSString
*
sourceId
=
sample
.
sourceRevision
.
source
.
bundleIdentifier
;
NSString
*
uuid
=
sample
.
UUID
.
UUIDString
;
NSError
*
error
;
NSDictionary
*
metaDict
;
if
(
sample
.
metadata
==
nil
){
metaDict
=
[[
NSDictionary
alloc
]
init
];
}
else
{
metaDict
=
sample
.
metadata
;
}
NSData
*
jsonData
=
[
NSJSONSerialization
dataWithJSONObject
:
metaDict
options
:
NSJSONWritingPrettyPrinted
error
:&
error
];
NSString
*
metadata
=
[[
NSString
alloc
]
initWithData
:
jsonData
encoding
:
NSUTF8StringEncoding
];
NSDictionary
*
elem
=
@{
@"value"
:
valueString
,
@"startDate"
:
startDateString
,
@"endDate"
:
endDateString
,
@"deviceName"
:
deviceName
,
@"deviceManufacturer"
:
deviceManufacturer
,
@"deviceHardware"
:
deviceHardwareVer
,
@"deviceSoftware"
:
deviceSoftwareVer
,
@"sourceName"
:
sourceName
,
@"sourceId"
:
sourceId
,
@"uuid"
:
uuid
,
@"metadata"
:
metadata
};
[
data
addObject
:
elem
];
...
...
@@ -393,11 +427,16 @@
endDate
:(
NSDate
*
)
endDate
ascending
:(
BOOL
)
asc
limit
:(
NSUInteger
)
lim
gap
:(
NSString
*
)
gap
completion
:(
void
(
^
)(
NSArray
*
,
NSError
*
))
completionHandler
{
NSCalendar
*
calendar
=
[
NSCalendar
currentCalendar
];
NSDateComponents
*
interval
=
[[
NSDateComponents
alloc
]
init
];
interval
.
day
=
1
;
if
([
gap
isEqual
:
@"hour"
]){
interval
.
hour
=
1
;
}
else
{
interval
.
day
=
1
;
}
NSDateComponents
*
anchorComponents
=
[
calendar
components
:
NSCalendarUnitDay
|
NSCalendarUnitMonth
|
NSCalendarUnitYear
fromDate:
[
NSDate
date
]];
...
...
RCTAppleHealthKit/RCTAppleHealthKit.m
View file @
c2cb0f2d
...
...
@@ -105,6 +105,11 @@ RCT_EXPORT_METHOD(getStepCount:(NSDictionary *)input callback:(RCTResponseSender
[
self
fitness_getStepCountOnDay
:
input
callback
:
callback
];
}
RCT_EXPORT_METHOD
(
getStepCountSamples
:
(
NSDictionary
*
)
input
callback
:
(
RCTResponseSenderBlock
)
callback
)
{
[
self
fitness_geStepSamples
:
input
callback
:
callback
];
}
RCT_EXPORT_METHOD
(
getDailyStepCountSamples
:
(
NSDictionary
*
)
input
callback
:
(
RCTResponseSenderBlock
)
callback
)
{
[
self
fitness_getDailyStepSamples
:
input
callback
:
callback
];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment