I have created custom metafields like the following and it was working fine. I want to show the metafield only when an particular page template is used. but it was not working.

    class contactdetailsMetabox {
    	private $screen = array(
    		'page',
    	);
    	private $meta_fields = array(
    		array(
    			'label' => 'Business Title',
    			'id' => 'business-title',
    			'default' => 'Business Title',
    			'type' => 'text',
    		),
    		array(
    			'label' => 'Business Logo',
    			'id' => 'business-logo',
    			'type' => 'media',
    		),
    		array(
    			'label' => 'Street Address',
    			'id' => 'street-address',
    			'type' => 'wysiwyg',
    		),
    		array(
    			'label' => 'Postal code',
    			'id' => 'postal-code',
    			'type' => 'text',
    		),
    		array(
    			'label' => 'Address Locality',
    			'id' => 'address-locality',
    			'type' => 'text',
    		),
    		array(
    			'label' => 'Business Phone No',
    			'id' => 'business-phone',
    			'type' => 'text',
    		),
    		array(
    			'label' => 'Business Mobile',
    			'id' => 'business-mobile',
    			'type' => 'tel',
    		),
    		array(
    			'label' => 'Business Email',
    			'id' => 'business-email',
    			'type' => 'email',
    		),
    		array(
    			'label' => 'Business Website',
    			'id' => 'business-website',
    			'type' => 'url',
    		),
    		array(
    			'label' => 'Latitude',
    			'id' => 'map-latitude',
    			'type' => 'text',
    		),
    		array(
    			'label' => 'Longitude',
    			'id' => 'map-longitude',
    			'type' => 'text',
    		),
    		array(
    			'label' => 'Zoom Level',
    			'id' => 'zoom-level',
    			'type' => 'text',
    		),
    	);
    	
    	
    	public function __construct() {
    		add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
    		add_action( 'admin_footer', array( $this, 'media_fields' ) );
    		add_action( 'save_post', array( $this, 'save_fields' ) );
    	}
    	public function add_meta_boxes() {
    		foreach ( $this->screen as $single_screen ) {
    			add_meta_box(
    				'contactdetails',
    				__( 'Contact details', 'rjslwp' ),
    				array( $this, 'meta_box_callback' ),
    				$single_screen,
    				'advanced',
    				'high'
    			);
    		}
    	}
    	public function meta_box_callback( $post ) {
    		wp_nonce_field( 'contactdetails_data', 'contactdetails_nonce' );
    		echo 'Here you can add your business contact details.';
    		$this->field_generator( $post );
    	}
    	public function media_fields() {
    		?><script>
    			jQuery(document).ready(function($){
    				if ( typeof wp.media !== 'undefined' ) {
    					var _custom_media = true,
    					_orig_send_attachment = wp.media.editor.send.attachment;
    					$('.contactdetails-media').click(function(e) {
    						var send_attachment_bkp = wp.media.editor.send.attachment;
    						var button = $(this);
    						var id = button.attr('id').replace('_button', '');
    						_custom_media = true;
    							wp.media.editor.send.attachment = function(props, attachment){
    							if ( _custom_media ) {
    								$('input#'+id).val(attachment.url);
    							} else {
    								return _orig_send_attachment.apply( this, [props, attachment] );
    							};
    						}
    						wp.media.editor.open(button);
    						return false;
    					});
    					$('.add_media').on('click', function(){
    						_custom_media = false;
    					});
    				}
    			});
    		</script><?php
    	}
    	public function field_generator( $post ) {
    		$output = '';
    		foreach ( $this->meta_fields as $meta_field ) {
    			$label = '<label for="' . $meta_field['id'] . '">' . $meta_field['label'] . '</label>';
    			$meta_value = get_post_meta( $post->ID, $meta_field['id'], true );
    			if ( empty( $meta_value ) ) {
    				$meta_value = $meta_field['default']; }
    			switch ( $meta_field['type'] ) {
    				case 'media':
    					$input = sprintf(
    						'<input style="width: 80%%" id="%s" name="%s" type="text" value="%s"> <input style="width: 19%%" class="button contactdetails-media" id="%s_button" name="%s_button" type="button" value="Upload" />',
    						$meta_field['id'],
    						$meta_field['id'],
    						$meta_value,
    						$meta_field['id'],
    						$meta_field['id']
    					);
    					break;
    				case 'wysiwyg':
    					ob_start();
    					wp_editor($meta_value, $meta_field['id']);
    					$input = ob_get_contents();
    					ob_end_clean();
    					break;
    				default:
    					$input = sprintf(
    						'<input %s id="%s" name="%s" type="%s" value="%s">',
    						$meta_field['type'] !== 'color' ? 'style="width: 100%"' : '',
    						$meta_field['id'],
    						$meta_field['id'],
    						$meta_field['type'],
    						$meta_value
    					);
    			}
    			$output .= $this->format_rows( $label, $input );
    		}
    		echo '<table class="form-table"><tbody>' . $output . '</tbody></table>';
    	}
    	public function format_rows( $label, $input ) {
    		return '<tr><th>'.$label.'</th><td>'.$input.'</td></tr>';
    	}
    	public function save_fields( $post_id ) {
    		if ( ! isset( $_POST['contactdetails_nonce'] ) )
    			return $post_id;
    		$nonce = $_POST['contactdetails_nonce'];
    		if ( !wp_verify_nonce( $nonce, 'contactdetails_data' ) )
    			return $post_id;
    		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
    			return $post_id;
    		foreach ( $this->meta_fields as $meta_field ) {
    			if ( isset( $_POST[ $meta_field['id'] ] ) ) {
    				switch ( $meta_field['type'] ) {
    					case 'email':
    						$_POST[ $meta_field['id'] ] = sanitize_email( $_POST[ $meta_field['id'] ] );
    						break;
    					case 'text':
    						$_POST[ $meta_field['id'] ] = sanitize_text_field( $_POST[ $meta_field['id'] ] );
    						break;
    				}
    				update_post_meta( $post_id, $meta_field['id'], $_POST[ $meta_field['id'] ] );
    			} else if ( $meta_field['type'] === 'checkbox' ) {
    				update_post_meta( $post_id, $meta_field['id'], '0' );
    			}
    		}
    	}
    }
    if (class_exists('contactdetailsMetabox')) {
    	new contactdetailsMetabox;
    };

The above code is for adding custom fields

What i have tried is

    function remove_custom_meta_box() {
        global $post;
    
        if(!empty($post))
        {
            $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
    
            if($pageTemplate == 'templates/contact-us.php' )
            {
    	remove_meta_box( 'contactdetails' , 'page' , 'advanced' );
    }
    }
    }
    }
    add_action( 'admin_menu', 'remove_custom_meta_box' );


For testing my code i tried to remove it from all page its also not working

    function remove_custom_meta_box() {
    	remove_meta_box( 'contactdetails' , 'page' , 'advanced' );
    }
    add_action( 'admin_menu', 'remove_custom_meta_box' );