Andrew Volodin Andrew Volodin - 11 months ago 49
iOS Question

ios - Dynamically edit 3d touch shortcut list

I want to add a "Continue" shortcut to my game. But when user will finish my game completely I want this to be either removed or replaced by another shortcut. Is this possible? I know 3d touch is handled by ios system, but maybe there are still some options


There are two ways to create shortcuts - dynamic and static.

  • Static are added to the plist and never change.
  • Dynamic can be added and removed in code.

It sounds like you want a dynamic shortcut, so here's roughly how you would do that:

To add:

if #available(iOS 9.0, *) {
    if (UIApplication.sharedApplication().shortcutItems?.filter({ $0.type == "" }).first == nil) {
        UIApplication.sharedApplication().shortcutItems?.append(UIMutableApplicationShortcutItem(type: "", localizedTitle: "Shortcut Title"))

To remove:

if #available(iOS 9.0, *) {
    if let shortcutItem = UIApplication.sharedApplication().shortcutItems?.filter({ $0.type == "" }).first {
        let index = UIApplication.sharedApplication().shortcutItems?.indexOf(shortcutItem)


You can then handle the shortcut by checking for it in the app delegate method:

@available(iOS 9.0, *)
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
    if shortcutItem.type == "" {
        // Do something

Don't forget to check for iOS9 and 3d Touch compatibility.

You can find Apple developer 3d touch pages here:

And specifically dynamic shortcuts here: