gpt4 book ai didi

php - c2dm : how to receive the message in the device?(使用 PHP)

转载 作者:太空狗 更新时间:2023-10-29 16:24:15 27 4
gpt4 key购买 nike

我有 c2dm 的注册 ID 和授权 token 。然后我将这些值存储在数据库中。并使用 php,我可以向 c2dm 服务器发送一条消息。但我的问题是我不知道如何在应用程序中接收消息。我不确定我获取消息的方式是否正确。无论如何,我会在下面给出。

我有一个使用注册 Intent 注册到 c2dm 的 Activity 。和一个接收器来接收 reg_id 和通知消息。它正在向 c2dm 注册并且不接收消息。

list

    <intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"></action>
<category android:name="my.android.c2dm"></category>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"></action>
<category android:name="my.android.c2dm"></category>
</intent-filter>
</receiver>

</application>

C2dmRegistration.class( Activity )

    Intent objRegIntnet=new Intent("com.google.android.c2dm.intent.REGISTER");
objRegIntnet.putExtra("app",PendingIntent.getBroadcast(this,0,new Intent(),0));
objRegIntnet.putExtra("sender","mymail@gmail.com");
startService(objRegIntnet);

c2dm接收器

public class c2dmReceiver extends BroadcastReceiver 
{
private static String KEY = "c2dmPref";
private static String REGISTRATION_KEY = "registrationKey";


private Context context;



@Override
public void onReceive(Context context, Intent intent)
{
this.context = context;
if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION"))
{
handleRegistration(context, intent);
}
else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE"))
{
handleMessage(context, intent);
}
}

private void handleRegistration(Context context, Intent intent)
{
//handles registeration
}
private void handleMessage(Context context, Intent intent)
{

String title= intent.getStringExtra("title");
String message= intent.getStringExtra("msg");
Toast.makeText(context,"title : "+title+"\n message : "+message,1).show();
//Do whatever you want with the message
}

请告诉我我做错了什么...

更新

大家好,今天我正在使用相同的代码。我犯的错误是 php 代码。 instaed 将值作为 POST 传递,我将其作为 GET 发送。当我将其更改为 POST 时,显示了 toast 消息。但仍然存在一些问题。

此处的标题和消息值为空。我的 PHP 代码是:

function sendMessageToPhone($authCode, $deviceRegistrationId, $msgType, $messageText)
{
//$messageText="have a nice day";
//$msgtype="important";
$headers = array('Authorization: GoogleLogin auth=' . $authCode);
$data = array(
'registration_id' => $deviceRegistrationId,
'collapse_key' => $msgType,
'data.message' => $messageText
);
$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;
}

实际上我不确定应该为 collapse_key 和 data.message 变量使用什么类型的值。

请帮帮我...谢谢...

最佳答案

最后我找到了提供 collapse_key 和数据的方法..collapse_key 应该是一个字符串,它是一组消息或特定类型消息的名称。如果我们发送多条具有相同 collapse_key 的消息,最新消息将从 c2dm 服务器发送到设备。

示例:$collapse_key = "important";

还有数据。是重要的事情。这将包含我们要发送的消息。

例如:如果我们想发送一条消息“祝你有美好的一天”,那么我应该给它一个键名。 data.="祝你有美好的一天";这里“愿望”是关键。在接收器中,我应该使用相同的 key 名称检索消息。

private void handleMessage(Context context, Intent intent) 
{
String mywish= intent.getStringExtra("wishes");
Toast.makeText(context,"my wishes : "+mywish,1).show();
}

对不起大家..

关于php - c2dm : how to receive the message in the device?(使用 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com