Уведомления от пользователя к пользователю с Laravel / Android

#php #android #mysql #laravel

#php #Android #mysql #laravel

Вопрос:

Я использую Laravel в качестве своего бэкэнда, а Android — в качестве интерфейса. В моем мобильном приложении мне нужно отправлять уведомления при нажатии на вид карты, чтобы предупредить другого пользователя. Эти пользователи будут связаны друг с другом в таблицах базы данных. Так должен ли я работать с laravel или Android для этой части? PS: Я использую MySQL, любая помощь будет оценена.

Комментарии:

1. Во-первых, вы должны иметь базовые знания о том, как работает уведомление. вы должны знать основной поток. вы можете проверить здесь: github.com/laravel-notification-channels/… . Также опубликуйте свой код, что вы реализовали

2. Я еще не запускал, но позволяет ли мне этот толкатель отправлять уведомления от пользователя к пользователю? и вызывать это как API в моем приложении для Android?

3. да, вы можете отправлять уведомления через pusher web / ios / Android, вы можете проверить здесь для устройства pusher.com/beams

Ответ №1:

вы можете использовать отличный пакет https://github.com/davibennun/laravel-push-notification;

или с помощью php для Android

 
<?php
public static

function send_notification_android($device_id, $android_ids, $message, $title)
    {
    $result = array();
    $payload = array();
    $url = 'https://fcm.googleapis.com/fcm/send';
    $api_key = 'AAAA3KgUuXA:APA91bEfEs8UHGIzxVPPAxnNAAwaOIfHw82LTJ2PzNjh4P-kDJGUx5KAtqHmcNixyslW087G3dWfNVwMrfmvj9tHKmEoC5OB3NW6CZT_H4oGFv_QvTZWN9aEr2IfZ3QOixfTaF0VTac9';
    $result['title'] = $title;
    $result['body'] = $message;
    $fields = array(
        'to' => $android_ids,
        'data' => $result
    );
    $headers = array(
        'Authorization: key=' . $api_key,
        'Authorization: key=' . $api_key,
        'Content-Type: application/json'
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    $result = curl_exec($ch);
    if ($result === FALSE)
        {
        die('Curl failed: ' . curl_error($ch));
        }

    curl_close($ch);
    if (!empty($result))
        {
        return false;
        }
      else
        {
        return true;
        }
    }



IOS



<?php
public

function send_push_notification($deviceToken, $badges, $msg, $data)
    {
    $key = public_path() . '/pushcert12.pem';
    $url = "ssl://gateway.push.apple.com:2195";

    // $url = 'ssl://gateway.sandbox.push.apple.com:2195'; // for development

    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', $key);
    stream_context_set_option($ctx, 'ssl', 'passphrase', 'ThreatAlert');
    $fp = stream_socket_client($url, $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
    $message = $msg;
    $body['aps'] = array(
        'alert' => $message,
        'badge' => intval($badges) ,
        'sound' => 'default',
        'data' => ''
    );
    $payload = json_encode($body);
    $deviceToken = str_replace(' ', '', $deviceToken);
    try
        {
        $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload . chr(3) . pack('n', 4) . pack('N', $deviceToken) . chr(4) . pack('n', 4) . pack('N', time()   86400) . chr(5) . pack('n', 1) . chr(10);
        $result = fwrite($fp, $msg, strlen($msg));
        if (!$result)
            {
            $res = 0;
            }
          else
            {
            $res = 1;
            }

        $retmsg = $res;
        }

    catch(Exception $eee)
        {
        $this->log('Message Push - ' . $eee);
        }

    fclose($fp);
    $retmsg = '<br />' . date("Y-m-d H:i:s") . ' Connection closed to APNS' . PHP_EOL;
    }