私はiPhoneとAndroid用の単一のアプリケーションを持っています。私はasp.net webserviceを使用して私のアプリケーションでカスタムプッシュ通知を実装したいと思います。asp.net webserviceを使用してカスタムプッシュ通知を作成する方法は?
どうすればいいですか?
webserviceでデータを管理するサンプルコードはありますか?私にはどうすればこのためのWebサービスを管理できますか?
ありがとうございました。
私はiPhoneとAndroid用の単一のアプリケーションを持っています。私はasp.net webserviceを使用して私のアプリケーションでカスタムプッシュ通知を実装したいと思います。asp.net webserviceを使用してカスタムプッシュ通知を作成する方法は?
どうすればいいですか?
webserviceでデータを管理するサンプルコードはありますか?私にはどうすればこのためのWebサービスを管理できますか?
ありがとうございました。
以下はPHP用のコードです。
すぐに入手できるコードはありません。あなたは、iOSデバイスの場合は1、アンドロイドデバイスの場合は2のようにデータベーステーブルの1つのタグフィールドを維持するようにすることができます。私は同じ機能を実装しており、以下はそれに応じてプッシュ通知を送信するためのコードです。
//This function determines which is the device and send notification accordingly.
function sendPushNotificaitonToAllUser($NotificationMsg)
{
$sql = "select ID,DeviceToken,DeviceType from TblDeviceToken";
$rs = mysql_query($sql);
$num = mysql_num_rows($rs);
if($num >= 1)
{
while($row = mysql_fetch_array($rs))
{
$deviceToken = $row['DeviceToken'];
if($deviceToken!='' || $deviceToken!='NULL')
{
if($row['DeviceType']==1)
deliverApplePushNotification($deviceToken,$NotificationMsg);
else if($row['DeviceType']==2)
sendAndroidPushNotification($deviceToken,$NotificationMsg);
}
}
}
}
//APPLE PUSH NOTIFICATION DELIVERY
function deliverApplePushNotification($deviceToken,$message)
{
//Create context
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', PEM_FILE_NAME);
stream_context_set_option($ctx, 'ssl', 'passphrase', APPLE_PEM_PASSPHRASE);
//Establish connection
$fp = stream_socket_client(APPLE_URL, $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
/*
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
*/
$body['aps'] = array('alert' => $message, 'sound' => 'default'); // Create the payload body
$payload = json_encode($body); // Encode the payload as JSON
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;// Build the binary notification
$result = fwrite($fp, $msg, strlen($msg));// Send it to the server
//If want to keep track of delivery can be done from here.
/*if (!$result)
echo '<br/>Message not delivered-->$deviceToken' . PHP_EOL;
else
echo '<br/>Message successfully delivered-->$deviceToken' . PHP_EOL;
*/
fclose($fp); // Close the connection to the server
}
function sendAndroidPushNotification($deviceRegistrationId,$messageText)
{
$authenticationID=googleAuthenticate(ANDROID_USERNAME,ANDROID_PASSWORD,ANDROID_SOURCE,ANDROID_SERVICE);
$result= sendMessageToPhone($authenticationID,$deviceRegistrationId,ANDROID_MSGTYPE,$messageText);
}
function googleAuthenticate($username, $password, $source="Company-AppName-Version", $service="ac2dm")
{
session_start();
if(isset($_SESSION['google_auth_id']) && $_SESSION['google_auth_id'] != null)
return $_SESSION['google_auth_id'];
// get an authorization token
$ch = curl_init();
if(!ch){
return false;
}
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
$post_fields = "accountType=" . urlencode('HOSTED_OR_GOOGLE')
. "&Email=" . urlencode($username)
. "&Passwd=" . urlencode($password)
. "&source=" . urlencode($source)
. "&service=" . urlencode($service);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// for debugging the request
//curl_setopt($ch, CURLINFO_HEADER_OUT, true); // for debugging the request
$response = curl_exec($ch);
//var_dump(curl_getinfo($ch)); //for debugging the request
//var_dump($response);
curl_close($ch);
if (strpos($response, '200 OK') === false) {
return false;
}
// find the auth code
preg_match("/(Auth=)([\w|-]+)/", $response, $matches);
if (!$matches[2]) {
return false;
}
$_SESSION['google_auth_id'] = $matches[2];
return $matches[2];
}
function sendMessageToPhone($authCode, $deviceRegistrationId, $msgType, $messageText)
{
$headers = array('Authorization: GoogleLogin auth=' . $authCode);
$data = array(
'registration_id' => $deviceRegistrationId,
'collapse_key' => $msgType,
'data.message' => $messageText //TODO Add more params with just simple data instead
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://android.apis.google.com/c2dm/send");
if ($headers)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
注:疑問/質問の場合には連絡して自由に感じます。コメントを残す
.Netプッシュ通知に利用可能な以下のcode from githubを使用してください。 .p12ファイルを提供する必要があり、要件に応じて開発者/運用モードを設定する必要があります。
そうですか?私はコミュニティのどこにでも言及されているようなルールは見つけられません。 –
あなたはこれをチェックすることに興味がありますhttp://meta.stackexchange.com/questions/25209/what-is-the-official-etiquette-on-answering-a-question-twice –
Jeff Atwood'sを参照してください司会者)ランス・ロバートの答えの下にコメントし、ジェフの答え自体がそれを説明します。 –
返信ありがとうございます。私はこれを初めて使っているのでいくつかの質問があります。実装に必要なフレームワークがありますか?自分のWebサービスにコードを直接使用することができますか? – Developer
コードを直接追加することはできますが、選択クエリで変更を行う必要があります。設定ファイルには定数を宣言する必要があります。私はappologizeが、このコードはPHP用です。 iOSのプッシュ通知のための.netの解決策もあなたに与えてくれるでしょう。 –
プッシュ通知のための.NETベースのコードのための私の他の答えをチェックしてください。 –