Если вы используете OneSignal. Вы можете отправить на это отдельное устройство с помощью Playerid, однако вы должны сохранить серверную часть playerid, чтобы вы знали, на какое устройство отправлять. Я лично делаю это в состоянии инициализации и делаю http.post для моего API, чтобы сохранить playerid в моей базе данных для этого конкретного пользователя.
Конечно, вы можете достичь того же, используя теги OneSignal (полезно, если у одного человека несколько учетных записей на одном устройстве).
Чтобы отправить уведомление, используйте curl в php.
<?php
function sendMessage(){
$content = array(
"en" => 'English Message'
);
$fields = array(
'app_id' => "your-app-id",
'include_player_ids' => array("playerid-you-want-to-send-to"),
'data' => array("foo" => "bar"),
'contents' => $content
);
$fields = json_encode($fields);
print("\nJSON sent:\n");
print($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendMessage();
$return["allresponses"] = $response;
$return = json_encode( $return);
print("\n\nJSON received:\n");
print($return);
print("\n");
?>
В Flutter получите пакет, импортируйте его и:
void oneSignal() {
OneSignal.shared.init("app-id");
OneSignal.shared.setNotificationReceivedHandler((OSNotification notification)
{
//do what you need to do with upcoming notification, get title for example
print(notification.payload.title);
}
}