Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 3
Регистрация: 17.04.2015
Сообщений: 187
1

Push уведомление

21.08.2017, 13:04. Просмотров 2277. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2017, 13:04
Ответы с готовыми решениями:

Push уведомления
доброе время суток есть задача сделать push уведомления на сайте при получение нового сообщение...

Push денаническая ассоциативный
Задача создать массив из базы Как правильно реализовать названия ячейки из базы данных в...

Проверить был ли push в массив
Здравствуйте, есть массив: var arr = При этом в него может пушиться через функцию push разная...

Создание адекватного PUSH уведомления в Chrome
Ребят, я уже отчаялся. Помогите, пожалуйста, ссылками, кодами - чем угодно. Суть проблемы такова....

3
60 / 60 / 36
Регистрация: 16.09.2015
Сообщений: 296
22.08.2017, 17:13 2
Цитата Сообщение от Ksinov Посмотреть сообщение
success: function (data) {
* * * * * * * * * console.log(data);
}
что Вы в консоль пытаетесь записать, если ничего не передали в запрос?

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.ajax({
            url: 'send_yev.php',
            type: 'POST',
            dataType: "json",
            data: {
                'token':"..."
            },
            success: function (data) {
                //console.log(data);
            },
            error: function () {
                console.log('Внутренняя ошибка сервера');
            }
        });
1
2 / 2 / 3
Регистрация: 17.04.2015
Сообщений: 187
23.08.2017, 08:45  [ТС] 3
tisha_, спасибо большое но с этим я уже разобрался
0
2 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 126
10.01.2021, 15:14 4
А в чём было дело?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2021, 15:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Уведомление
В общем когда моему боту приходит трейд, на сайте высвечивается уведомление, &quot;if offers &gt;1&quot; вроде...

Закрыть уведомление в FF
Есть уведомление в Аддоне ФФ. Оно закрывается только через 20 сек, как поставить другой интервал? ...

Уведомление alert
Есть поле ввода отправки сообщения. Сделано все в основном на php, но я хочу чтобы при отправке...

Уведомление о новом заказе
Всем доброго дня! Подскажите, пожалуйста, как можно решить вот такую задачу. Есть страничка,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.