Instance Method インスタンスメソッド

onBackgroundURLSessionEvents(matching:_:)

Adds an action to perform when events related to a URL session with a matching identifier are waiting to be processed.

Declaration 宣言

func onBackgroundURLSessionEvents(matching matchingString: String, _ urlSessionEvent: @escaping ((String, @escaping () -> Void) -> Void)) -> some WidgetConfiguration

Return Value 戻り値

A widget that triggers urlSessionEvent when events are generated for a URLSession with the specified identifier.

Parameters パラメータ

matchingString

The identifier of a URL session to monitor for events.

urlSessionEvent

A closure that takes a string parameter called identifier and a closure called completion.

Discussion 議論

When a widget initiates a background network request, the system delivers events related to the request directly to the widget extension instead of the containing app. To process the events, do the following:

  1. Use the identifier parameter to determine if a corresponding URLSession object exists. If the system has not terminated your widget extension, maintain a reference to the same URLSession object you used for the original background network request. If the system has terminated your widget extension, use the identifier to create a new URLSession object so it can receive the events. You might consider lazily initializing, and caching, the URLSession objects in a central location so that your code works regardless of whether your extension remains active, is suspended, or is terminated.

  2. Store a reference to the completion handler to invoke after all events have been delivered.

  3. After the system calls the URLSession delegate’s urlSessionDidFinishEvents(forBackgroundURLSession:) method, invoke the completion handler.