2016-05-30 16 views
0

私はcordovaを使用してAndroidアプリケーションを開発しています。私は、アプリケーションに1つのシグナル通知を含めるようにしました。OneSignalはアプリケーション間で通知を送信できますか?

私は2つのアプリがあります。最初は顧客用で2番目は売り手用です。私のアプリはどちらも差分パッケージ名(com.myapp.customerとcom.myapp.seller)を使用しています

私はonesignalを登録し、通知を押してテストします。それはうまくいく。

私はアプリをモバイルにインストールして、カスタマーアプリからセラーアプリに通知を送信しようとします(両方のアプリが同じデバイスにインストールされます)が動作しません。

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

ありがとうございます。

答えて

1

私は信号REST APIを1つ使用し、お客様のアプリケーションからサーバーにリクエストを送信する必要があると思います。ここでmore info

は、プッシュ通知を送信するために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と認証キーを交換してください!

+0

ありがとうございます!ところで、あなたはPHPの例がありますか?私はcodeigniterを使用します。 – Giffary

+0

はい、私は答えを編集しました! –

関連する問題