【问题标题】:.Net Maui app completion handlers and iOS HealthKit not working with HttpClient.Net Maui 应用程序完成处理程序和 iOS HealthKit 不适用于 HttpClient
【发布时间】:2022-10-18 00:27:24
【问题描述】:

这在 Android 中完美运行。

public async Task<double> UploadData()
    {
        double steps = 0.0;

        await _healthData.GetSteps((totalSteps) =>
        {
            SentrySdk.CaptureMessage("totalSteps = " + totalSteps);

            MainThread.BeginInvokeOnMainThread(() =>
            {
                steps = totalSteps;
                //Task.Delay(1000);
            });

        });

        SentrySdk.CaptureMessage("UploadData steps = " + steps);

        var fitness = new Fitness();
        fitness.Steps = steps;

        await _restService.SaveItemAsync(fitness, true);

        return steps;
    }

在 iOS 中,totalSteps 是正确的,但是在 Fitness.Steps = steps 运行时,steps 仍然为 0。最重要的是,我无法从 _healthData.GetSteps((totalSteps) 操作中获取 totalSteps 值。Android Google Fit 和 iOS HealthKit API 调用使用完成处理程序运行。

在这个阶段,我只是想弄清楚如何将数据(步数、卡路里、活动分钟数、距离)上传到我的服务器。

有谁知道如何使这项工作?我可以使用 ObservableCollection 在视图中显示所有数据(步数、卡路里、活动分钟数、距离)。

【问题讨论】:

    标签: dotnet-httpclient healthkit completionhandler .net-maui


    【解决方案1】:

    在 iOS 中,由于健康数据可能包含敏感的个人信息,应用程序必须receive permission from the user 才能从 HealthKit 存储读取数据或向其写入数据。

    【讨论】:

    • 我可以使用 ObservableCollection 读取数据并将其显示在视图中。你是在告诉我我需要权限才能将它实际插入到对象中???
    • 请问您是否可以使用 HttpClient 获取其他数据?
    【解决方案2】:

    我通过嵌入这样的调用来实现这一点。

    _healthData.GetHealthPermissionAsync((result) =>
            {
                if (result)
                {
                    _healthData.FetchSteps((totalSteps) =>
                    {                        
    
                        _healthData.FetchMetersWalked((metersWalked) =>
                        {
                            
                            _healthData.FetchActiveMinutes((activeMinutes) =>
                            {
                                               
                            
                           _healthData.FetchActiveEnergyBurned((caloriesBurned) =>
                                {
                                   
                                    var fitness = new Fitness();
                                    fitness.Steps = totalSteps;
                                    fitness.Calories = caloriesBurned;
                                    fitness.Distance = metersWalked;
                                    fitness.Minutes = activeMinutes;
    
                                    _restService.SaveItemAsync(fitness, true);
    
                                });
    
                            });
    
                        });
    
                    });
                }
            });
    

    【讨论】:

      猜你喜欢
      • 2022-12-22
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2023-01-12
      相关资源
      最近更新 更多