Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将HealthKit删除传播到后端_Ios_Xamarin_Healthkit_Hkobserverquery - Fatal编程技术网

Ios 将HealthKit删除传播到后端

Ios 将HealthKit删除传播到后端,ios,xamarin,healthkit,hkobserverquery,Ios,Xamarin,Healthkit,Hkobserverquery,希望这个问题听起来不要太傻,但我还没有找到解决办法。我目前正在使用Xamarin编写一个与HealthKit集成的应用程序。存储在香港的数据会定期同步到服务器。这是通过HKAnchoredObjectQuery完成的,该查询提取食物相关性 由于数据是周期性提取的,因此在两次同步之间,用户可能会删除HealthKit中的值。该删除需要在下次同步时传播回服务器 我最初的想法是通过观察者查询来实现这一点 我的问题是:使用HealthKit的观察者查询,是否有方法确定触发查询的操作是否为删除操作 pub

希望这个问题听起来不要太傻,但我还没有找到解决办法。我目前正在使用Xamarin编写一个与HealthKit集成的应用程序。存储在香港的数据会定期同步到服务器。这是通过HKAnchoredObjectQuery完成的,该查询提取食物相关性

由于数据是周期性提取的,因此在两次同步之间,用户可能会删除HealthKit中的值。该删除需要在下次同步时传播回服务器

我最初的想法是通过观察者查询来实现这一点

我的问题是:使用HealthKit的观察者查询,是否有方法确定触发查询的操作是否为删除操作

public void CheckForDelete (Subject subject)
    {
        var sampleType = HKObjectType.GetCorrelationType (HKCorrelationTypeKey.IdentifierFood);
        var predicate = HKQuery.GetPredicateForSamples (NSDate.DistantPast, NSDate.Now, HKQueryOptions.None);
        var observerQuery = new HKObserverQuery (sampleType, predicate, (query, completion, error ) => {
            //...Determine if action was a Delete
            //Code to delete on backend

            completion();
        });

        HealthKitStore.ExecuteQuery (observerQuery);
    }

在iOS 9中,
HKAnchoredObjectQuery
已被修改以报告已删除的对象

你找到解决办法了吗?我面临着同样的问题,我认为没有简单的方法来跟踪删除的样本。我想我需要检查这些样本是否仍然存在于HealthApp中,并手动删除它们。不幸的是,现在还没有。我尝试为每个元素创建一个单独的观察者查询来侦听删除,然后在调用该观察者查询时触发数据库删除,但这并没有像我所想的那样。它还为每个元素(可能有数百个)创建了一个后台查询线程。据我所知,确实没有办法检测healthkit数据是否从单独的应用程序中删除。希望有人能想出办法!我的方法是将条目保存到我自己的数据库中,当
observer查询
点击时,我调用
sampleQuery
来获取实际的样本。完成后,我对样本进行迭代,检查添加了什么和删除了什么。我在我的数据库中创建了一列
healthUUID
,以保存
Health
样本的标识,这样就很容易跟踪我的数据库和
Health app
之间的差异。如果你想做类似的事情,请告诉我,我可以共享代码。嘿,伙计们,你们发现了如何解决问题吗?