未使用角度7触发服务人员可用事件

时间:2019-12-20 10:39:22

标签: javascript angular angular7 service-worker progressive-web-apps

我已经在支持PWA的angular 7中创建了应用程序。在其中,我使用swUpdate创建了新的更新弹出窗口。在我将新版本上传到服务器上后,它可以更早地正常工作并向我显示新的更新弹出窗口。但是,它不起作用。

在我的代码中。

<?php
/*
Plugin Name: Template Maker
Version: 0.0.1
Author: Addweb Solution

*/

class PageTemplater {

  /**
   * A reference to an instance of this class.
   */
  private static $instance;

  /**
   * The array of templates that this plugin tracks.
   */
  protected $templates;

  /**
   * Returns an instance of this class. 
   */
  public static function get_instance() {

    if ( null == self::$instance ) {
      self::$instance = new PageTemplater();
    } 

    return self::$instance;

  } 

  /**
   * Initializes the plugin by setting filters and administration functions.
   */
  private function __construct() {

    $this->templates = array();


    // Add a filter to the attributes metabox to inject template into the cache.
    if ( version_compare( floatval( get_bloginfo( 'version' ) ), '4.7', '<' ) ) {

      // 4.6 and older
      add_filter(
        'page_attributes_dropdown_pages_args',
        array( $this, 'register_project_templates' )
      );

    } else {

      // Add a filter to the wp 4.7 version attributes metabox
      add_filter(
        'theme_page_templates', array( $this, 'add_new_template' )
      );

    }

    // Add a filter to the save post to inject out template into the page cache
    add_filter(
      'wp_insert_post_data', 
      array( $this, 'register_project_templates' ) 
    );


    // Add a filter to the template include to determine if the page has our 
    // template assigned and return it's path
    add_filter(
      'template_include', 
      array( $this, 'view_project_template') 
    );


    // Add your templates to this array.
    $this->templates = array(
      'goodtobebad-template.php' => 'Plugin-template',
    );

  } 

  /**
   * Adds our template to the page dropdown for v4.7+
   *
   */
  public function add_new_template( $posts_templates ) {
    $posts_templates = array_merge( $posts_templates, $this->templates );
    return $posts_templates;
  }

  /**
   * Adds our template to the pages cache in order to trick WordPress
   * into thinking the template file exists where it doens't really exist.
   */
  public function register_project_templates( $atts ) {

    // Create the key used for the themes cache
    $cache_key = 'page_templates-' . md5( get_theme_root() . '/' . get_stylesheet() );

    // Retrieve the cache list. 
    // If it doesn't exist, or it's empty prepare an array
    $templates = wp_get_theme()->get_page_templates();
    if ( empty( $templates ) ) {
      $templates = array();
    } 

    // New cache, therefore remove the old one
    wp_cache_delete( $cache_key , 'themes');

    // Now add our template to the list of templates by merging our templates
    // with the existing templates array from the cache.
    $templates = array_merge( $templates, $this->templates );

    // Add the modified cache to allow WordPress to pick it up for listing
    // available templates
    wp_cache_add( $cache_key, $templates, 'themes', 1800 );

    return $atts;

  } 

  /**
   * Checks if the template is assigned to the page
   */
  public function view_project_template( $template ) {

    // Get global post
    global $post;

    // Return template if post is empty
    if ( ! $post ) {
      return $template;
    }

    // Return default template if we don't have a custom one defined
    if ( ! isset( $this->templates[get_post_meta( 
      $post->ID, '_wp_page_template', true 
    )] ) ) {
      return $template;
    } 

    $file = plugin_dir_path( __FILE__ ). get_post_meta( 
      $post->ID, '_wp_page_template', true
    );

    // Just to be safe, we check if the file exist first
    if ( file_exists( $file ) ) {
      return $file;
    } else {
      echo $file;
    }

    // Return template
    return $template;

  }

} 
add_action( 'plugins_loaded', array( 'PageTemplater', 'get_instance' ) );

这是我的package.json文件

constructor() {
    this.swUpdate.available.subscribe(event => {
      console.log(event);
      this.promptUser();
    });

    if (this.swUpdate.isEnabled) {
      interval(2 * 60 * 60).subscribe(() => this.swUpdate.checkForUpdate()
        .then(() => console.log('checking for updates')));
    }
}

promptUser() {
    this.swUpdate.activateUpdate().then(() => {
       location.reload();
    });
}

如果有任何建议,请告诉我。它的真正需求。

0 个答案:

没有答案