Delphi 如何向所有已注册的朋友发送消息
我在向列表中的所有朋友发送消息时遇到了一个问题,当我按下“发送”按钮时,只有列表中的第一个人收到两条通知消息!!!,列表中有2个ID,使用GCM服务,为什么消息不发送给所有人? 这是代码,plz帮助Delphi 如何向所有已注册的朋友发送消息,delphi,Delphi,我在向列表中的所有朋友发送消息时遇到了一个问题,当我按下“发送”按钮时,只有列表中的第一个人收到两条通知消息!!!,列表中有2个ID,使用GCM服务,为什么消息不发送给所有人? 这是代码,plz帮助 const YOUR_GCM_SENDERID = '123201xxx95'; YOUR_API_ID = 'AIzaSyBzvpTa-e0OnkaxxxxXfH6XroXN8QE'; procedure TForm1.Button5Click(Sender: TObject); con
const
YOUR_GCM_SENDERID = '123201xxx95';
YOUR_API_ID = 'AIzaSyBzvpTa-e0OnkaxxxxXfH6XroXN8QE';
procedure TForm1.Button5Click(Sender: TObject);
const
sendUrl = 'https://android.googleapis.com/gcm/send';
var
Params: TStringList;
AuthHeader: STring;
idHTTP: TIDHTTP;
SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
i : integer;
ItemText: string;
begin
idHTTP := TIDHTTP.Create(nil);
SslIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
idHTTP.IOHandler := SSLIOHandler;
idHTTP.HTTPOptions := [];
Params := TStringList.Create;
for i := 0 to ListView1.Items.Count-1 do
begin
ItemText := ListView1.Items[i].Text;
Params.Add('registration_id='+ ItemText);
Params.Values['data.message'] := Edit1.Text;
idHTTP.Request.Host := sendUrl;
AuthHeader := 'Authorization: key=' + YOUR_API_ID;
idHTTP.Request.CustomHeaders.Add(AuthHeader);
IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded;charset=UTF-8';
idHTTP.Post(sendUrl, Params);
end;
FreeAndNil(idHTTP);
end;
您没有在每个循环迭代中正确管理参数。特别是,您没有覆盖Params中的注册id值,也没有覆盖TIdHTTP.Request.CustomHeaders中的授权值。您正在添加新值并保留以前的值 请尝试类似以下内容:
const
YOUR_GCM_SENDERID = '123201xxx95';
YOUR_API_ID = 'AIzaSyBzvpTa-e0OnkaxxxxXfH6XroXN8QE';
procedure TForm1.Button5Click(Sender: TObject);
const
sendUrl = 'https://android.googleapis.com/gcm/send';
var
Params: TStringList;
idHTTP: TIdHTTP;
SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
i : integer;
ItemText: string;
begin
idHTTP := TIDHTTP.Create(nil);
SslIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(idHTTP);
idHTTP.IOHandler := SSLIOHandler;
idHTTP.HTTPOptions := [];
Params := TStringList.Create;
for i := 0 to ListView1.Items.Count-1 do
begin
ItemText := ListView1.Items[i].Text;
Params.Clear;
Params.Add('registration_id='+ ItemText);
Params.Add('data.message=' + Edit1.Text);
idHTTP.Request.CustomHeaders.Values['Authorization'] := 'key=' + YOUR_API_ID;
IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded;charset=UTF-8';
idHTTP.Post(sendUrl, Params);
end;
end;
@阿里,你有一个问题。创建新帐户以逃避问题禁令是违反网站规则的。请停下来。添加参数。在for循环开始时清除,完成后也不会释放参数。@DavidHeffernan ARC是什么意思?@Wolf尝试delphi ARC的Web搜索say@DavidHeffernan对,是弧线。在这种情况下,使用FreeAndNil是完全错误的。