Experimenting with Reside Actions – Ole Begemann

on

|

views

and

comments

[ad_1]

iOS 16 beta 4 is the primary SDK launch that helps Reside Actions. A Reside Exercise is a widget-like view an app can place in your lock display and replace in actual time. Examples the place this may be helpful embody reside sports activities scores or practice departure occasions.

These are my notes on taking part in with the API and implementing my first Reside Exercise.

A motorcycle laptop in your lock display

My Reside Exercise is a show for a motorbike laptop that I’ve been creating with a gaggle a mates. Right here’s a video of it in motion:

And right here with simulated knowledge:

I haven’t talked a lot about our bike laptop mission publicly but; that may hopefully change sometime. Briefly, a gaggle of mates and I designed a bit of field that connects to your bike’s hub dynamo, measures pace and distance, and sends the info by way of Bluetooth to an iOS app. The app information all of your rides and can even act as a reside speedometer when mounted in your bike’s handlebar. It’s this final function that I wished to duplicate within the Reside Exercise.

Comply with Apple’s information

Including a Reside Exercise to the app wasn’t onerous. I discovered Apple’s information Displaying reside knowledge on the Lock Display with Reside Actions simple to observe and fairly complete.

No express consumer approval

iOS doesn’t ask the consumer for approval when an app desires to point out a Reside Exercise. I discovered this odd because it appears to ask builders to abuse the function, however possibly it’s OK due to the foreground requirement (see under). Plus, customers can disallow Reside Actions on a per-app foundation in Settings.

Customers can dismiss an lively Reside Exercise from the lock display by swiping (like a notification).

Most apps will in all probability must ask the consumer for notification permissions to replace their Reside Actions.

The app have to be within the foreground to begin an exercise

To begin a Reside Exercise, an app have to be open within the foreground. This isn’t splendid for the bike laptop as a result of the speedometer can’t seem magically on the lock display when the consumer begins driving (regardless that iOS wakes up the app within the background at this level to ship the Bluetooth occasions from the bike). The consumer has to open the app manually at the least as soon as.

Alternatively, this limitation will not be a problem for many use instances and can in all probability minimize down on spamming/abuse considerably.

The app should preserve operating within the background to replace the exercise (or use push notifications)

So long as the app retains operating (within the foreground or background), it may possibly replace the Reside Exercise as usually because it desires (I feel). That is splendid for the bike laptop because the app retains operating within the background processing Bluetooth occasions whereas the bike is in movement. I assume the identical applies to different apps that may stay alive within the background, akin to audio gamers or navigation apps doing steady location monitoring.

Updating the Reside Exercise as soon as per second was no drawback in my testing, and I didn’t expertise any charge limiting.

Most apps get suspended within the background, nevertheless. They need to use push notifications to replace their Reside Exercise (or background duties or another mechanism to have the system wake you up). Apple launched a brand new type of push notification that’s delivered on to the Reside Exercise, bypassing the app altogether. I haven’t performed with push notification updates, so I don’t know the advantages of utilizing this technique over sending a silent push notification to wake the app and updating the Reside Exercise from there. In all probability much less aggressive charge limiting?

Lock display shade matching

I haven’t discovered a great way to match my Reside Exercise’s colours to the present system colours on the lock display. By default, textual content in a Reside Exercise is black in mild mode, whereas the built-in lock display themes appear to favor white or different mild textual content colours. If there may be an API or atmosphere worth that permits apps to match the colour fashion of the present lock display, I haven’t discovered it. I experimented with numerous foreground kinds, akin to supplies, with out success.

I ended up hardcoding the foreground shade, however I’m not glad with the end result. Relying on the consumer’s lock display theme, the Reside Exercise can look misplaced.


The lock screen of an iPhone running iOS 16. The system text (clock, date) is in a light, whitish color. The Live Activity at the bottom of the screen has black text.
The default textual content shade of a Reside Exercise in mild mode is black. This doesn’t match most lock display themes.

Animations can’t be disabled

Apple’s information clearly states that builders have little management over animations in a Reside Exercise:

Animate content material updates

Once you outline the consumer interface of your Reside Exercise, the system ignores any animation modifiers — for instance, withAnimation(_:_:) and animation(_:worth:) — and makes use of the system’s animation timing as a substitute. Nevertheless, the system performs some animation when the dynamic content material of the Reside Exercise modifications. Textual content views animate content material modifications with blurred content material transitions, and the system animates content material transitions for photos and SF Symbols. When you add or take away views from the consumer interface primarily based on content material or state modifications, views fade out and in. Use the next view transitions to configure these built-in transitions: opacity, transfer(edge:), slide, push(from:), or mixtures of them. Moreover, request animations for timer textual content with numericText(countsDown:).

It makes whole sense to me that Apple doesn’t need builders to go loopy with animations on the lock display, and maybe having full management over animations additionally makes it simpler for Apple to combine Reside Actions into the always-on show that’s in all probability approaching the following iPhone.

What stunned me is that I couldn’t discover a technique to disable the textual content change animations altogether. I discover the blurred textual content transitions for the big pace worth fairly distracting and I feel this label would look higher with none animations. However no mixture of .animation(nil), .contentTransition(.identification), and .transition(.identification) would do that.

A Reside Exercise could be very very like a widget: the UI should reside in your app’s widget extension. You begin the Reside Exercise with code that runs in your app, although. Each targets (the app and the widget extension) want entry to a standard knowledge kind that represents the info the widget shows. You must have a 3rd goal (a framework or SwiftPM package deal) that incorporates such shared sorts and APIs and that the downstream targets import.

Availability annotations

WidgetBundle apparently doesn’t assist widgets with completely different minimal deployment targets. In case your widget extension has a deployment goal of iOS 14 or 15 for an current widget and also you now wish to add a Reside Exercise, I’d anticipate your widget bundle to seem like this:

@primary
struct MyWidgets: WidgetBundle {
  var physique: some Widget {
    MyNormalWidget()
    // Error: Closure containing management move assertion can't
    // be used with end result builder 'WidgetBundleBuilder'
    if #obtainable(iOSApplicationExtension 16.0, *) {
      MyLiveActivityWidget()
    }
  }
}

However this doesn’t compile as a result of the end result builder kind utilized by WidgetBundle doesn’t assist availability circumstances. I hope Apple fixes this.

This wasn’t an issue for me as a result of our app didn’t have any widgets till now, so I simply set the deployment goal of the widget extension to iOS 16.0. When you have current widgets and may’t require iOS 16 but, a workaround is so as to add a second widget extension goal only for the Reside Exercise. I haven’t tried this, however WidgetKit explicitly helps having a number of widget extensions, so it ought to work:

Usually, you embody all of your widgets in a single widget extension, though your app can comprise a number of extensions.

[ad_2]

Share this
Tags

Must-read

Top 42 Como Insertar Una Imagen En Html Bloc De Notas Update

Estás buscando información, artículos, conocimientos sobre el tema. como insertar una imagen en html bloc de notas en Google

Top 8 Como Insertar Una Imagen En Excel Desde El Celular Update

Estás buscando información, artículos, conocimientos sobre el tema. como insertar una imagen en excel desde el celular en Google

Top 7 Como Insertar Una Imagen En Excel Como Marca De Agua Update

Estás buscando información, artículos, conocimientos sobre el tema. como insertar una imagen en excel como marca de agua en Google

Recent articles

More like this