npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cordova-plugin-ios-app-delegate-events

v2.0.1

Published

Broadcasts UIApplicationDelegate events for consumption by other plugins

Downloads

119

Readme

npm version

Cordova App Delegate Events Plugin for iOS

The purpose of this plugin is to broadcast iOS-specific application delegate events, so that 3rd party plugins can listen to them.

The reason is that iOS applications are only allowed to register one instance of each delegate method so if 2 or more plugins declare an instance of the same delegate method, only one of these will be called at run-time, leading to some plugins failing to function correctly.

This plugin solves this problem by implementing its own instances of supported app delegate methods, then rebroadcasts calls to the method as events via the NSNotificationCenter which multiple other plugins can register to listen for and handle simultaneously.

The instances of app delegate methods defined by this plugin use method swizzling in case any other plugins define the same delegate methods in order to avoid overwriting them.

As of right now it's possible to add observers for these events:

Feel free to submit an PR to broadcast additional events.

Usage

To make use of the app delegate events in your plugin, follow these steps:

1. Add and install the plugin as a dependency

Add this plugin as a dependency of your plugin.

<!-- plugin.xml -->

<dependency id="cordova-plugin-ios-app-delegate-events" />

2. Add the protocol to the plugin's interface

Indicate your plugin's interest to receive app events by adding the APPAppEventDelegate protocol.

Objective-C plugin

// MyCordovaPlugin.h

#import "APPAppEventDelegate.h"
#import <Cordova/CDVPlugin.h>

@interface APPLocalNotification : CDVPlugin <APPAppEventDelegate>

@implementation MyCordovaPlugin

...

@end

Swift plugin

// MyCordovaPlugin-Bridging-Header.h

#import "APPAppEventDelegate.h"
#import "AppDelegate+APPAppEvent.h"

...

@end
// MyCordovaPlugin.swift

@objc(MyCordovaPlugin) class MyCordovaPlugin: CDVPlugin, APPAppEventDelegate {
...
}

3. Add observer methods for the delegated events

To add an observer you need to define a method to handle the app delegate event and register it as a listener for that event during plugin initialization.

For example, to receive the continueUserActivity event, you'd register a method to handle UIApplicationContinueUserActivity events:

Objective-C plugin

// MyCordovaPlugin.m

#import "AppDelegate+APPAppEvent.h"

@implementation MyCordovaPlugin

- (void)pluginInitialize {
  [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(myContinueUserActivityHandler:) 
    name:UIApplicationContinueUserActivity object:nil
  ];
}

- (void) myContinueUserActivityHandler:(NSNotification*)notification{
  
     NSUserActivity* userActivity = notification.object;
     
     // Do something with the user activity
}

@end

Swift plugin

// MyCordovaPlugin.swift

@objc(MyCordovaPlugin) class MyCordovaPlugin: CDVPlugin, APPAppEventDelegate {

    override func pluginInitialize() {
        NotificationCenter.default.addObserver(
          self,
          selector: #selector(myContinueUserActivityHandler(_:)),
          name: NSNotification.Name(rawValue: UIApplicationContinueUserActivity),
          object: nil
        )
    }
    
    @objc(myContinueUserActivityHandler:) func myContinueUserActivityHandler(_ notification: NSNotification) {
        let userActivity = notification.object as! NSUserActivity
        
        // Do something with the user activity
    }
}

License

This software is released under the Apache 2.0 License.

© 2024 Working Edge Ltd. All rights reserved © 2013-2017 appPlant GmbH, Inc. All rights reserved