PHP und Google Cloud Messaging

Mitglied: tomolpi

tomolpi (Level 3)

14.04.2016, aktualisiert 21:44 Uhr, 1578 Aufrufe, 1 Kommentar

Guten Abend Leute,

ich hab hier eine Frage zum Thema GCM (Google Cloud Messaging).

Ich bin habe in meiner App das Push-System nach dieser Anleitung (http://androidsrc.net/android-push-notification-using-google-cloud-mess ...) implementiert, man kann auch senden und am Gerät kommt das an.

Jetzt ist es leider so, dass ich, wenn sich 2 Geräte registriert haben, ich in meiner Index.php jetzt 2 Textfelder habe, die jeweils einem Geräte die Nachricht senden

Also wie im Bild, ich tippe was in die obere Box, sende und das Gerät mit der oberen ID bekommt die Nachricht, aber das andere nicht.

unbenannt - Klicke auf das Bild, um es zu vergrößern

Jetzt meine Frage: kann jemand von euch mir sagen, wie ich

1. es hinbekomme, dass es EIN Feld gibt, was an ALLE Geräte sendet?

2. Die Registration-IDs schön untereinander stehen?

Die index.php sieht so aus:

01.
<!DOCTYPE html>
02.
<html>
03.
    <head>
04.
        <title></title>
05.
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
06.
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
07.
        <script type="text/javascript">
08.
            $(document).ready(function(){
09.
                
10.
            });
11.
            function sendPushNotification(id){
12.
                var data = $('form#'+id).serialize();
13.
                $('form#'+id).unbind('submit');                
14.
                $.ajax({
15.
                    url: "device_sendmsg.php",
16.
                    type: 'GET',
17.
                    data: data,
18.
                    beforeSend: function() {
19.
                         
20.
                    },
21.
                    success: function(data, textStatus, xhr) {
22.
                          $('.txt_message').val("");
23.
                    },
24.
                    error: function(xhr, textStatus, errorThrown) {
25.
                         
26.
                    }
27.
                });
28.
                return false;
29.
            }
30.
        </script>
31.
    </head>
32.
    <body>
33.
        <?php
34.
        include_once 'db_functions.php';
35.
        $db = new DB_Functions();
36.
        $users = $db->getAllUsers();
37.
        if ($users != false)
38.
            $no_of_users = mysql_num_rows($users);
39.
        else
40.
            $no_of_users = 0;
41.
        ?>
42.
        <div >
43.
            <h1>No of Devices Registered: <?php echo $no_of_users; ?></h1>
44.
            <hr/>
45.
            <ul class="devices">
46.
                <?php
47.
                if ($no_of_users > 0) {
48.
                    ?>
49.
                    <?php
50.
                    while ($row = mysql_fetch_array($users)) {
51.
                        ?>
52.
                        <li>
53.
                            <form id="<?php echo $row["id"] ?>" name="" method="post" onsubmit="return sendPushNotification('<?php echo $row["id"] ?>')">
54.
                                <label>RegistrationID: </label> <span><?php echo $row["gcm_regid"] ?></span>
55.
                                <br><br>                              
56.
                                <textarea rows="3" name="message" cols="25" class="txt_message" placeholder="Type message here"></textarea>
57.
                                <input type="hidden" name="regId" value="<?php echo $row["gcm_regid"] ?>"/>
58.
                                <input type="submit" class="send_btn" value="Send" onclick=""/>
59.
                                </div>
60.
                            </form>
61.
                        </li>
62.
                    <?php }
63.
                } else { ?> 
64.
                    <li>
65.
                        No Users Registered Yet!
66.
                    </li>
67.
                <?php } ?>
68.
            </ul>
69.
        </div>
70.
    </body>
71.
</html>

Grüsse, und Danke,

tomolpi
Mitglied: nxclass
25.04.2016 um 10:24 Uhr
Zuerst ich kenne das nicht aber ich versuche das mal:

Die JS Funktion sendPushNotification(id) kümmert sich um das senden und erwartet als Parameter offenbar die Geräte ID.
Das Senden der nachricht triggert man über:
01.
onsubmit="return sendPushNotification('<?php echo $row["id"] ?>')">
Was hier also fehlt ist ein Formular welches bei onsubmit mehrmals die JS Funktion mit den jeweiligen IDs triggert. Das könnte so aussehen:
01.
// Du musst hier mehr umbauen: zB. müssen hier die Daten aus deiner DB Tabelle in ein Array gepackt werden damit du hier einfach mehrmals darüber iterieren kannst; Einmal für die Einzelnen Formulare und dann für das zusätzliche Formular:
02.
$onsubmit = "";
03.
foreach ( $users as $user ) {
04.
    $onsubmit .= 'sendPushNotification(\''. $user['id'] .'\');';
05.
}
06.
<form id="foobar" name="" method="post" onsubmit="<?php echo $onsubmit ?>">
07.
// rest vom Formular
.. das ist jetzt nur als Anhaltspunkt.
Titel: PHP und Google Cloud Messaging
Content-ID: 301855
Art des Inhalts: Frage
Ausgedruckt am: 23.10.2019 um 04:14:23 Uhr
URL: https://administrator.de/contentid/301855