0

Cordova を使用して Android アプリケーションを開発しています。アプリの機能として 1 つのシグナル通知を含めています。

最初は顧客用、2 つ目は販売者用の 2 つのアプリがあります。私のアプリは両方とも異なるパッケージ名 (com.myapp.customer と com.myapp.seller) を使用しています

onesignal を登録し、プッシュ通知をテストします。よく効きます。

アプリをモバイルにインストールし、顧客アプリから販売者アプリに通知を送信しようとしました (両方のアプリが同じデバイスにインストールされます) が、機能しません。

私の質問は、顧客アプリから販売者アプリに通知を送信することは可能ですか? もしそうなら、それを行う方法。

ありがとうございました。

4

1 に答える 1

1

1 つのシグナル REST API を使用し、顧客アプリからサーバーにリクエストを送信する必要があると思います。より詳しい情報

プッシュ通知を送信する Java コードは次のとおりです。

    try {
   String jsonResponse;

   URL url = new URL("https://onesignal.com/api/v1/notifications");
   HttpURLConnection con = (HttpURLConnection)url.openConnection();
   con.setUseCaches(false);
   con.setDoOutput(true);
   con.setDoInput(true);

   con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
   con.setRequestProperty("Authorization", "Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj");
   con.setRequestMethod("POST");

   String strJsonBody = "{"
                      +   "\"app_id\": \"5eb5a37e-b458-11e3-ac11-000c2940e62c\","
                      +   "\"included_segments\": [\"All\"],"
                      +   "\"data\": {\"foo\": \"bar\"},"
                      +   "\"contents\": {\"en\": \"English Message\"}"
                      + "}";


   System.out.println("strJsonBody:\n" + strJsonBody);

   byte[] sendBytes = strJsonBody.getBytes("UTF-8");
   con.setFixedLengthStreamingMode(sendBytes.length);

   OutputStream outputStream = con.getOutputStream();
   outputStream.write(sendBytes);

   int httpResponse = con.getResponseCode();
   System.out.println("httpResponse: " + httpResponse);

   if (  httpResponse >= HttpURLConnection.HTTP_OK
      && httpResponse < HttpURLConnection.HTTP_BAD_REQUEST) {
      Scanner scanner = new Scanner(con.getInputStream(), "UTF-8");
      jsonResponse = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
      scanner.close();
   }
   else {
      Scanner scanner = new Scanner(con.getErrorStream(), "UTF-8");
      jsonResponse = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
      scanner.close();
   }
   System.out.println("jsonResponse:\n" + jsonResponse);

} catch(Throwable t) {
   t.printStackTrace();
}

phpコード:

<?PHP
  function sendMessage(){
    $content = array(
      "en" => 'English Message'
      );

    $fields = array(
      'app_id' => "5eb5a37e-b458-11e3-ac11-000c2940e62c",
      'included_segments' => array('All'),
      'data' => array("foo" => "bar"),
      'contents' => $content
    );

    $fields = json_encode($fields);
    print("\nJSON sent:\n");
    print($fields);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
                           'Authorization: Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
  }

  $response = sendMessage();
  $return["allresponses"] = $response;
  $return = json_encode( $return);

  print("\n\nJSON received:\n");
  print($return);
  print("\n");
?>

注:上記のコードの販売者アプリ ID と認証キーを置き換えてください。

于 2016-05-30T08:22:46.303 に答える