def METHOD_NAME(self, token, push_magic, priority=10, expiration_seconds=3600):
    if isinstance(token, (bytes, memoryview)):
        token = token.hex()
    log_tmpl = "Notify topic %s, device %s, priority %d, expiration %ds"
    logger.debug(log_tmpl, self.topic, token, priority, expiration_seconds)
    url = f"/3/device/{token}"
    payload = {"mdm": push_magic}
    headers = {"apns-push-type": "mdm",
               "apns-expiration": str(int(time.time()) + expiration_seconds),
               "apns-priority": str(priority),
               "apns-topic": self.topic}
    success = False
    for retry_num in range(self.max_retries + 1):
        try:
            r = self.client.post(url, json=payload, headers=headers)
        except Exception:
            logger.exception(f"{log_tmpl}: error", self.topic, token, priority, expiration_seconds)
        else:
            if r.status_code == httpx.codes.OK:
                logger.debug(f"{log_tmpl}: OK", self.topic, token, priority, expiration_seconds)
                success = True
                break
            logger.error(f"{log_tmpl}: status %d", self.topic, token, priority, expiration_seconds, r.status_code)
            if r.status_code < 500:
                # only retry 500s
                break
        sleep_time = random.random() * 2 ** retry_num
        logger.warning(f"{log_tmpl}: sleep %.2f seconds before retry %s of %s.",
                       self.topic, token, priority, expiration_seconds,
                       sleep_time, retry_num, self.max_retries)
        time.sleep(sleep_time)
    return success