/// <summary>
        /// Observe a file transfer, hold the observation.
        /// </summary>
        public void Observe(WCSessionFileTransfer fileTransfer, Action <NSProgress> handler)
        {
            var observation = fileTransfer.Progress.AddObserver("fractionCompleted", NSKeyValueObservingOptions.New, (_) =>
            {
                handler(fileTransfer.Progress);
            });

            this.observations.Add(observation);
            this.fileTransfers.Add(fileTransfer);
        }
        /// <summary>
        /// Unobserve a file transfer, invalidate the observation.
        /// </summary>
        public void Unobserve(WCSessionFileTransfer fileTransfer)
        {
            var index = this.fileTransfers.IndexOf(fileTransfer);

            if (index != -1)
            {
                var observation = this.observations[index];
                observation.Dispose();

                this.observations.RemoveAt(index);
                this.fileTransfers.RemoveAt(index);
            }
        }
示例#3
0
        /// <summary>
        /// Log the file transfer progress.
        /// </summary>
        private void LogProgress(WCSessionFileTransfer fileTransfer)
        {
            DispatchQueue.MainQueue.DispatchAsync(() =>
            {
                var dateFormatter = new NSDateFormatter {
                    TimeStyle = NSDateFormatterStyle.Medium
                };
                var timeString = dateFormatter.StringFor(new NSDate());
                var fileName   = fileTransfer.File.FileUrl.LastPathComponent;

                var progress = fileTransfer.Progress.LocalizedDescription ?? "No progress";
                this.Log($"- {fileName}: {progress} at {timeString}");
            });
        }