PhoneGap Firebase Push-уведомления - PullRequest
       21

PhoneGap Firebase Push-уведомления

0 голосов
/ 26 сентября 2018

У меня есть приложение для Android / ios, и я использую свой браузер с php для вставки статей в базу данных, а затем приложение выталкивает данные из базы данных с помощью ajax.

Что мне нужно, так этокогда я публикую статью на php (на стороне сервера), и он получает вставку, он отправляет уведомление на телефоны.

У меня есть это в моем приложении js:

const push = PushNotification.init({
            android: {
                vibrate: "true",
                alert: "true",
                badge: "true",
                sound: "true"
            },
            browser: {
            },
            ios: {
                vibrate: "true",
                alert: "true",
                badge: "true",
                sound: "true"
            },
            windows: {}
        });
            push.on('registration', function(data) {
            //alert(data.registrationId);
            var registrationId=data.registrationId;
            var dataString ="id_usuario="+registrationId;
            if($.trim(registrationId).length>0){
                $.ajax({
                    type: "POST",
                    url: "https://pizzarte.com/app/registarid.php",
                    data: dataString,
                    crossDomain: true,
                    cache: false,
                })
            }
        });

            push.on('notification', function(data) {
            //alert(data.title+" Message: grgregregerg" +data.message);
            });

            push.on('error', function(e) {
            alert(e);
            });

Таккогда пользователь запускает приложение, оно сохраняет регистрационный идентификатор этого устройства и хранится в базе данных.Это работает просто отлично.Теперь на стороне сервера я извлекаю все зарегистрированные ID и пытаюсь отправить уведомление:

<?php

// API access key from Google API's Console - server key here https://console.developers.google.com/apis/credentials?authuser=2&project=project_name
define( 'API_ACCESS_KEY', 'this is my api access key, im using the server key');
$registrationIds = array("device_ids");

var_dump ($registrationIds);

// prep the bundle
$msg = array
(
    'message'   => 'here is a message. message',
    'title'     => 'This is a title. title',
    'subtitle'  => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'          => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

var_dump ($headers);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
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 );
curl_close( $ch );

echo $result;

Но я всегда получаю сообщение об ошибке «Несанкционированная ошибка 401»

В моем config.xmlу меня это тоже:

<plugin name="phonegap-plugin-push" spec="2.0.0" />
<variable name="SENDER_ID" value="xxxxxxxxxxxxx" />
</plugin>

<platform name="android">
    <preference name="android-minSdkVersion" value="14" />
    <allow-intent href="market:*" />
    <resource-file src="google-services.json" target="google-services.json" />
</platform>

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 30 мая 2019

измените это в config.xml

<plugin name="phonegap-plugin-push" spec="~2.1.2" >
        <variable name="FCM_VERSION" value="11.0.1" />
  </plugin>

и измените следующее

<platform name="android">
    <preference name="android-minSdkVersion" value="14" />
    <allow-intent href="market:*" />
    <resource-file src="google-services.json" target="google-services.json" />
</platform>

на

<platform name="android">
    <preference name="android-minSdkVersion" value="16" />
    <allow-intent href="market:*" />
    <resource-file src="google-services.json" target="app/google-services.json" />
</platform>

значение = "14" на значение = "16"

target =" google-services.json "должен быть target =" app / google-services.json "

Надеюсь, это поможет вам.

...