What are best practices for a Mac app to show notifications without unnecessarily interrupting the user?

We have a deluge of apps that bombard us with notifications. Recently, there has been talk about making apps more respectful and helping the user spend time better.

In light of this, what are some best practices for notifications generated by a Mac app to not interrupt the user when they're doing something more important?

I can think of a few:

  • Implement notifications only if I get consistent feedback from users asking for it.
  • Show notifications without sound, to not interrupt the user if they are in a meeting, asleep, etc.
  • Don't badge the app icon.
  • Before showing the first notification, tell the user that the app will show notifications and that they should turn it off in System Preferences if they don't want it.

Are these good ideas? Are there other best practices you have in mind to make notifications less intrusive, while still serving their purpose of informing the user that something they care about has happened?