Push уведомление
21.08.2017, 13:04. Показов 2919. Ответов 3
Всем доброе время суток делаю уведомление на сайте но я что то делаю не во первых по клику на уведомление не переходить по ссылке во вторых не отправляеться именно тому человеку кому указана в токене
Javascript | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
| // firebase_subscribe.js
firebase.initializeApp({
messagingSenderId: '710303527572'
});
// браузер поддерживает уведомления
// вообще, эту проверку должна делать библиотека Firebase, но она этого не делает
if ('Notification' in window) {
var messaging = firebase.messaging();
// пользователь уже разрешил получение уведомлений
// подписываем на уведомления если ещё не подписали
if (Notification.permission === 'granted') {
subscribe();
}
// по клику, запрашиваем у пользователя разрешение на уведомления
// и подписываем его
$('#subscribe').click(function () {
subscribe();
spawnNotification("title test");
});
}
function spawnNotification(theTitle) {
var options = {
to:"fP5wu7SpUqs:APA91bHbHi5QKfjIDzvOGefq5-eea0DASDgR2wgSlxYxCJ182qAIGaLvoi4HAj6a39fcL1eOrf7Ylr6ObD-Ts3owrP6FXF6qpaxUmQFUxwXLCjqAF9DmgERub04OJ1fs1oOcIHD1xtDm",
body: "test",
icon: "http://smmis.ru/wp-content/uploads/2015/03/uvedomleniya.png",
click_action:"https://test.startnext.kz/"
};
var n = new Notification(theTitle,options);
}
function subscribe() {
// запрашиваем разрешение на получение уведомлений
messaging.requestPermission()
.then(function () {
// получаем ID устройства
messaging.getToken()
.then(function (currentToken) {
console.log(currentToken);
if (currentToken) {
sendTokenToServer(currentToken);
} else {
console.warn('Не удалось получить токен.');
setTokenSentToServer(false);
}
})
.catch(function (err) {
console.warn('При получении токена произошла ошибка.', err);
setTokenSentToServer(false);
});
})
.catch(function (err) {
console.warn('Не удалось получить разрешение на показ уведомлений.', err);
});
}
// отправка ID на сервер
function sendTokenToServer(currentToken) {
if (!isTokenSentToServer(currentToken)) {
console.log('Отправка токена на сервер...');
var url = 'firebaseid.php'; // адрес скрипта на сервере который сохраняет ID устройства
$.ajax({// включаем функцию
url: "firebaseid.php", // указываем оброботчик
type: "POST",// метод передачи дааных
data: ({
token: currentToken
}),// передача перемных
dataType: "html",// тип передачи
success: function (data) {
alert(data);
}
});
setTokenSentToServer(currentToken);
} else {
console.log('Токен уже отправлен на сервер.');
}
}
// используем localStorage для отметки того,
// что пользователь уже подписался на уведомления
function isTokenSentToServer(currentToken) {
return window.localStorage.getItem('sentFirebaseMessagingToken') == currentToken;
}
function setTokenSentToServer(currentToken) {
window.localStorage.setItem(
'sentFirebaseMessagingToken',
currentToken ? currentToken : ''
);
} |
|
Добавлено через 2 часа 5 минут
Ну что не кто мне поможет ?
Добавлено через 2 часа 15 минут
еще вариант попробовал но тут тоже не приходят уведомление
файл firebase-messaging-sw.js
Javascript | 1
2
3
4
5
6
7
| importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-messaging.js');
firebase.initializeApp({
messagingSenderId: '710303527572'
});
const messaging = firebase.messaging(); |
|
файл firebase_subscribe.js
Javascript | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
| // firebase_subscribe.js
firebase.initializeApp({
messagingSenderId: '710303527572'
});
// браузер поддерживает уведомления
// вообще, эту проверку должна делать библиотека Firebase, но она этого не делает
if ('Notification' in window) {
var messaging = firebase.messaging();
// пользователь уже разрешил получение уведомлений
// подписываем на уведомления если ещё не подписали
if (Notification.permission === 'granted') {
subscribe();
}
// по клику, запрашиваем у пользователя разрешение на уведомления
// и подписываем его
$('#subscribe').click(function () {
subscribe();
// spawnNotification("title test");
});
}
/*
function spawnNotification(theTitle) {
var options = {
to:"cLte_ly9JRk:APA91bE0flEZGrurZNXb4NnhkQ1lI7Ee1cjzbftTuk0Rr8PWc23_ki5dbrL68iDvOi40kL2nliqHTwHQzyuJkgJwSddY50TSPuKvqFQetOvfHRkjUE8X7inYGcNgjb49hrSGJHno9OBl",
body: "test",
icon: "http://smmis.ru/wp-content/uploads/2015/03/uvedomleniya.png",
action:"https://test.startnext.kz/"
};
var n = new Notification(theTitle,options);
}
*/
function subscribe() {
// запрашиваем разрешение на получение уведомлений
messaging.requestPermission()
.then(function () {
// получаем ID устройства
messaging.getToken()
.then(function (currentToken) {
console.log(currentToken);
if (currentToken) {
sendTokenToServer(currentToken);
} else {
console.warn('Не удалось получить токен.');
setTokenSentToServer(false);
}
})
.catch(function (err) {
console.warn('При получении токена произошла ошибка.', err);
setTokenSentToServer(false);
});
})
.catch(function (err) {
console.warn('Не удалось получить разрешение на показ уведомлений.', err);
});
}
// отправка ID на сервер
function sendTokenToServer(currentToken) {
if (!isTokenSentToServer(currentToken)) {
console.log('Отправка токена на сервер...');
var url = 'firebaseid.php'; // адрес скрипта на сервере который сохраняет ID устройства
$.ajax({// включаем функцию
url: "firebaseid.php", // указываем оброботчик
type: "POST",// метод передачи дааных
data: ({
token: currentToken
}),// передача перемных
dataType: "html",// тип передачи
success: function (data) {
alert(data);
}
});
setTokenSentToServer(currentToken);
} else {
console.log('Токен уже отправлен на сервер.');
}
}
// используем localStorage для отметки того,
// что пользователь уже подписался на уведомления
function isTokenSentToServer(currentToken) {
return window.localStorage.getItem('sentFirebaseMessagingToken') == currentToken;
}
function setTokenSentToServer(currentToken) {
window.localStorage.setItem(
'sentFirebaseMessagingToken',
currentToken ? currentToken : ''
);
} |
|
файл firebaseid.php
PHP | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?php
require "php/db.php";
session_start();
if (isset($_SESSION["session_username"])){
$token = $_POST["token"];
$id_user=$_SESSION["session_username"];
$db->query("INSERT INTO `tokenid`(`id_usertoken`,`id_user`) VALUES('$token','$id_user')");
echo $token;
$db->close();
}else {
echo "Сесии нет";
}
?> |
|
Добавлено через 3 минуты
файл send_yev.php
PHP | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| <?php
require "php/db.php";
session_start();
$id_user = $_SESSION["session_username"];
$query = $db->query("SELECT * FROM tokenid WHERE id_user = $id_user");
$row = $query->fetch_array();
$url = 'https://fcm.googleapis.com/fcm/send';
$YOUR_API_KEY = 'AAAApWFjspQ:APA91bGdhzErUllzDGRzOUd8IHLsRzgUhGq6ZVLb2r8QjoQnD2tJzl38gieCXZCzBuO1XNfMuK8zQwi_P8w12fZvp46bkpaz_GjxK73NuWDE4WXOHjZBKda-3nxiX4Re3AqFxhmF9qGJ'; // Server key
$YOUR_TOKEN_ID = $row["id_usertoken"]; // Client token id
$request_body = [
'to' => $YOUR_TOKEN_ID,
'notification' => [
'title' => 'Ералаш',
'body' => sprintf('Начало в %s.', date('H:i')),
'icon' => 'https://eralash.ru.rsz.io/sites/all/themes/eralash_v5/logo.png?width=192&height=192',
'click_action' => 'https://test.startnext.kz/',
],
];
$fields = json_encode($request_body);
$request_headers = [
'Content-Type: application/json',
'Authorization: key=' . $YOUR_API_KEY,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
$db->close();
?> |
|
файл index.php
Javascript | 1
2
3
4
5
6
7
8
9
10
11
| $(document).ready(function () {
$.ajax({
url: "send_yev.php", // указываем оброботчик
type: "POST",// метод передачи дааных
dataType: "json",// тип передачи
success: function (data) {
console.log(data);
}
})
}) |
|
в чем конкретно моя ошибка почему не получаю уведомление инфу брал харбе
0
|