I figured out how to do it. I was writing the di.xml file on the wrong directory.
To get your module's custom notification class to run, you need to create the file VendorName/ModuleName/etc/adminhtml/di.xml
with the following code:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Notification\MessageList">
<arguments>
<argument name="messages" xsi:type="array">
<item name="yourClassName" xsi:type="string">VendorName\ModuleName\Model\System\Message\YourClassName</item>
</argument>
</arguments>
</type>
</config>
Then you have to create the VendorName\ModuleName\Model\System\Message\YourClassName.php
class file with the following code:
<?php
namespace VendorName\ModuleName\Model\System\Message;
class YourClassName implements \Magento\Framework\Notification\MessageInterface
{
public function getIdentity()
{
// Retrieve unique message identity
return 'identity';
}
public function isDisplayed()
{
// Return true to show your message, false to hide it
return true;
}
public function getText()
{
// Retrieve message text
return 'Notification message text goes here';
}
public function getSeverity()
{
// Possible values: SEVERITY_CRITICAL, SEVERITY_MAJOR, SEVERITY_MINOR, SEVERITY_NOTICE
return self::SEVERITY_MAJOR;
}
}
<item name="className" xsi:type="string">VendorName\ModuleName\Model\ClassName</item>
to module-admin-notification's di.xml will get the notification to show up. But i want the code to be self contained in my module directory since i want my module to be distributed to other people.