Перейти к содержанию
Fire Monkey от А до Я

rustam_d

Пользователи
  • Постов

    200
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Ответы сообщества

  1. Пост rustam_d - сообщение в Notification был отмечен как ответ   
    у вас на компе...
    Delphi\Samples\Object Pascal\Mobile Snippets\Notifications\SendCancelNotification
  2. Пост rustam_d - сообщение в Push сообщения и Indy Tcp был отмечен как ответ   
    Эх давно это было, я не использовал SSL...не нужен он.
    Код не глючил вроде.
    procedure TForm1.Button1Click(Sender: TObject); var   vIn, vOut: TStringStream; begin   Memo1.Clear;   try     vIn := TStringStream.Create(       '{"registration_ids":["' + Edit1.Text +       '"],"data":{"title":"'+ 'Тест234' +'","message":"' + Edit2.Text + '"}}', TEncoding.UTF8     );     vOut := TStringStream.Create('',TEncoding.UTF8);     pIdHTTP.Post('https://android.googleapis.com/gcm/send', vIn, vOut);     Memo1.Lines.Add(vOut.DataString);     Memo1.Lines.Add(vIn.DataString);     if Pos('"success":1',vOut.DataString) > 0 then ShowMessage('Сообщение отправлено успешно!');   finally     vIn.Free;     vOut.Free;   end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin   pIdHTTP.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin   ID := 1;   pIdHTTP := TIdHttp.Create(Self);   pIdHTTP.Request.ContentType := 'application/json';   pIdHTTP.Request.CustomHeaders.AddValue('Authorization',CKey); end; еще можно и заголовок писать так http://fire-monkey.ru/topic/1659-gcm-push-soobscheniia-android-kak-dobavit-zagolovok/
  3. Пост rustam_d - сообщение в GCM Push сообщения Андроид - как добавить Заголовок? был отмечен как ответ   
    Спасибо Евгению Корепову.
     
    ‘{"registration_ids":["' + Edit1.Text + '],"data":{"title":"Заголовок","message":"‘ + Edit2.Text + ‘"}}’
  4. Пост rustam_d - сообщение в IOS Push сообщения на русском как? был отмечен как ответ   
    Я сделал это !!! И это бесплатно! )) Отправка ИОС пушей на русском из делфи больше не секрет!!! Полный исходник, максимально упрощенный. Можно указывать циферку на иконке(badge). Про войну с сертификатом SSL pem писал тут http://fire-monkey.ru/topic/1751-push-soobscheniia-ios-ne-mogu-soedinitsia-s-serverom-dlia-o/   procedure TForm1.Button2Click(Sender: TObject); var   i: integer;   s,c,t,m: string;   vStr: TStringStream; begin   m := EscapeString('Удачи друзья в FMX!'); //ready for unicode   if not tcpclient.connected then tcpclient.connect;   c := 'qwerqwerqwerqwerqwerqwerqwerqwerqwer'; //your token   t := '';   for i := 0 to (length© div 2) - 1 do t := t + AnsiChar(Byte(('$'+copy(c,i*2+1,2)).ToInteger)); //token as hex   s := '{"aps":{"alert":"'+ m +'","sound":"default","badge":0}}';   //payload   s := #0#0#32 + t + #0 + AnsiChar(length(s)) + s;     //push message   vStr := TStringStream.Create(s);   try     SSLHandler.write(vStr);   finally     vStr.Free;   end; end   function TForm1.EscapeString(const AValue: string): string; const   ESCAPE = '\';   REVERSE_SOLIDUS = '\';   SOLIDUS = '/';   BACKSPACE = #8;   FORM_FEED = #12;   NEW_LINE = #10;   CARRIAGE_RETURN = #13;   HORIZONTAL_TAB = #9; var   AChar: Char; begin   Result := '';   for AChar in AValue do   begin     case AChar of       REVERSE_SOLIDUS: Result := Result + ESCAPE + REVERSE_SOLIDUS;       SOLIDUS: Result := Result + ESCAPE + SOLIDUS;       BACKSPACE: Result := Result + ESCAPE + 'b';       FORM_FEED: Result := Result + ESCAPE + 'f';       NEW_LINE: Result := Result + ESCAPE + 'n';       CARRIAGE_RETURN: Result := Result + ESCAPE + 'r';       HORIZONTAL_TAB: Result := Result + ESCAPE + 't';       else       begin         if (Integer(AChar) < 32) or (Integer(AChar) > 126) then           Result := Result + ESCAPE + 'u' + IntToHex(Integer(AChar), 4)         else           Result := Result + AChar;       end;     end;   end; end;     object TCPClient: TIdTCPClient     OnStatus = TCPClientStatus     IOHandler = SSLHandler     ConnectTimeout = 0     Host = 'gateway.sandbox.push.apple.com'     IPVersion = Id_IPv4     Port = 2195     ReadTimeout = -1     Left = 328     Top = 48   end   object SSLHandler: TIdSSLIOHandlerSocketOpenSSL     OnStatus = SSLHandlerStatus     Destination = 'gateway.sandbox.push.apple.com:2195'     Host = 'gateway.sandbox.push.apple.com'     MaxLineAction = maException     Port = 2195     DefaultPort = 0     SSLOptions.CertFile = 'MyAPN.pem'     SSLOptions.KeyFile = 'MyAPN.pem'     SSLOptions.Method = sslvSSLv23     SSLOptions.SSLVersions = [sslvSSLv2, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]     SSLOptions.Mode = sslmClient     SSLOptions.VerifyMode = []     SSLOptions.VerifyDepth = 0     Left = 328     Top = 108   end
  5. Пост rustam_d - сообщение в Push сообщения IOS не могу соединиться с сервером для отправки был отмечен как ответ   
    Разобрался такая ошибка возникает из-за путаницы сертификатов!
     
    APN сертификат на сайте конечно надо заводить от девелопера, но это у меня и так было.
    А вот в чем траблы были.
    В связке ключей валялись сертификаты пушей моих экспериментов, но только по дате их отличишь.
    Поэтому на всякий случай удалил ВСЕ сертификаты PUSH, тут же все еще на маке зашел в сафари
    и скачал APN сертификат *.cer с сайта developer.apple.
    Кликаем мышкой на этом сертификате и он отображается в связке ключей.
    Затем находим ветку PUSH, открываем ее, ОБЕ строчки выделяем и сохраняем в MyPush.p12, пароль не нужен.
    Далее уже на винде, утилитой ссл генерим pem файл
    openssl pkcs12 -in MyPush.p12 -out MyPush.pem -nodes
    жмем энтер и никаких паролей.
    Далее в проекте делфи в SSLHandler заполняем что и гонсалес показал и cer и key указываем MyPush.pem.
     
    Я потратил много времени на файлы и версии опенссл libeay32.dll и ssleay32.dll...но это НЕ ТО !!!
    По прежнему все просто ложите в папку проекта эти файлы и не выносите мозг никому Wow64 или System32...или 0.9.8m,d,k? и т.п. бредом.
  6. Пост rustam_d - сообщение в Push сообщения IOS - как получить токен ? был отмечен как ответ   
    xenon54 заработало, спс!
     
    отсутствовал FMX.PushNotification.iOS в разделе uses
    Why do I love you FMX!!!??? сколько крови он выпьет еще...я п'лачу...потерять неделю из-за такой ошибки...жесть
    ведь компилиться без него...ком-пи-ли-ться!!!...
  7. Пост rustam_d - сообщение в Что быстрее, эмулятор или телефон? был отмечен как ответ   
    Эмулятор да тормозит, жесть против ИОС эмулятора.
    Лучше Андроид устройство какое нить по юсб или вафле (последнее сложнее в реализации).
    Компиляция я бы сказал - невыносимая, даже по юсб.
    Сделайте следующее:
    - установите делфи и проекты ваши на SSD диск скажем 250гб (у меня самс ево 500 и операционка на нем)
    - поставьте процессор core i7
     
    после всего этого у вас компиляция будет всего на 95% отставать от VCL, против текущих 550%.
  8. Пост rustam_d - сообщение в Как программно добраться до свойств стиля FixedHeight и FixedWidth? был отмечен как ответ   
    Как то с vcl еще привычка была наследоваться от базовых форм.
    Тут она и пригодилась, в базовой форме можно все перегрузки и кидать, а в наследованной 
    все автоматом цепляется...проверенно, работает!
     
    верхняя ссылка глючит, там про перегрузку контрола:
    type   TSpeedButton = class(FMX.StdCtrls.TSpeedButton)   protected     procedure AdjustFixedSize(const Ref: TControl); override;   end; type   TForm1 = class(TForm)   private     { Private declarations }   public     { Public declarations }   end; implementation {$R *.fmx} { TSpeedButton } procedure TSpeedButton.AdjustFixedSize(const Ref: TControl); begin   SetAdjustType(TAdjustType.None); end; ну а далее мое предложение про наследование, зато код без мусора...он в предках...:
    type   TForm2 = class(TForm1)
×
×
  • Создать...