Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何向所有已注册的朋友发送消息_Delphi - Fatal编程技术网

Delphi 如何向所有已注册的朋友发送消息

Delphi 如何向所有已注册的朋友发送消息,delphi,Delphi,我在向列表中的所有朋友发送消息时遇到了一个问题,当我按下“发送”按钮时,只有列表中的第一个人收到两条通知消息!!!,列表中有2个ID,使用GCM服务,为什么消息不发送给所有人? 这是代码,plz帮助 const YOUR_GCM_SENDERID = '123201xxx95'; YOUR_API_ID = 'AIzaSyBzvpTa-e0OnkaxxxxXfH6XroXN8QE'; procedure TForm1.Button5Click(Sender: TObject); con

我在向列表中的所有朋友发送消息时遇到了一个问题,当我按下“发送”按钮时,只有列表中的第一个人收到两条通知消息!!!,列表中有2个ID,使用GCM服务,为什么消息不发送给所有人? 这是代码,plz帮助

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是完全错误的。