Magento 2 Set and Get Cookie

Use following code to set and get custom cookie in Magento 2

<?php
namespace Vish\Demo\Model;

use \Magento\Framework\Stdlib\CookieManagerInterface;
use \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;

class ManageCookie
{
    /** @var CookieManagerInterface CookieManagerInterface */
    protected $cookieManager;

    /** @var CookieMetadataFactory CookieMetadataFactory */
    protected $cookieMetadataFactory;

	/**
	 * @param CookieManagerInterface $cookieManager,
	 * @param CookieMetadataFactory $cookieMetadataFactory
	 **/
    public function __construct(
        CookieManagerInterface $cookieManager,
        CookieMetadataFactory $cookieMetadataFactory
    ) {
        $this->cookieManager = $cookieManager;
        $this->cookieMetadataFactory = $cookieMetadataFactory;
    }
	
	/**
	 * Set Custom Cookie
	 **/
    public function setCustomCookie($cookieName, $cookieValue, $duration = 86400)
    {
        $metadata = $this->cookieMetadataFactory
			->createPublicCookieMetadata()
			->setDuration();
		// NOTE: Duration in second

        return $this->cookieManager->setPublicCookie(
            $cookieName,
            $cookieValue,
            $metadata
        );
    }

    /**
	 * Get Custom Cookie
	 **/
    public function getCustomCookie($cookieName)
    {
        return $this->cookieManager->getCookie($cookieName);
    }
}

NOTE: Custom cookies code may not work properly on the Magento Commerce Cloud website due to the Fastly cache.