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

rustam_d

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

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

  • Посещение

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

    2

Весь контент rustam_d

  1. спс Алекс, тоже запустил публикацию, жду. ща у нас тут конференция ембаркадера...был в первой половине дня, ОЧЕНЬ полезная сессия...не ожидал... Много чего узнал про Seattle. Всплывающее слева панель теперь не требует велосипеда и т.п. Пуши в вин10 знатная штука. Сервисы со связями, вообщем приятно когда все на пальцах и в примерах. Эх не успел попытать вопросами: интел атом когда, удалить один пуш, получить в шторке пуши в виде группы, а возможно и нет ответов...
  2. тоже столкнулся с проблемой публикации в app store. недавно купил б/у ipad air за сущие копейки и лафа компилю на 64бит сразу ). конфигурация: Yosemite 10.10.5 (VMware12), XCode 7.0.1, Ipad air 9.0.1, XE8upd1 в Tools\Options\Sdk manager слева iPhoneOS 9.0, но внимание - справа 8.4 sdk. подтверждаю, что в топике ссылка помогла, сарина рулит, скопировал файл к себе поправил Аллок и ...все заработало без зависонов на заставке. респект топикстартеру !
  3. Прошу помочь разобраться бывалых с компиляцией, окончательно запутался в понятиях версий и совместимостей. Андроид, делаю следующее для сборки: В AVD - Менеджер SDK качаю: Tools: Android SDK Tools - актуальная Android SDK PLatform Tools - актуальная Android SDK Build Tools - актуальная Extras: Android Support Library - актуальная Google USB Driver - он один Android 4.0 (api 14) SDK platform ARM EABI v7a Google API NDK выбираю все - актуальное Вопрос: - Какие еще галочки надо чтобы на всех версиях начиная с 4.0 работала?? (думки к этому вопросу: Может надо все версии выделить? Но тогда зачем в делфях выбор API ? или надо в магазин устанавливать несколько версий программы для разных API ?) - Если выделяю Intel x86 Atom - значит ли это что программа сразу заработает там где эти процессоры на андроид?? или надо еще какието действия делать? IOS , выбираю в Делфи что дает среда например 9.0 версию, xcode последний 7.0.1. вопрос: значит ли это, что программа будет обратно совместима со старыми IOS ?? если нет, то что сделать чтобы программа поддерживала старые версии?
  4. я так понял вы не знаете что такое пуш... какой провизинг? какой для андроида SSL ? вы лучше по подробнее ознакомьтесь, тем более здесь на форуме я все про пуши разжевал... ну поясню чуток токен клиента это уникальный ОДИН код чтобы идентифицировать "Гаджет+программу", из-за отсутств. этого понимания на сайте этом будет еще полно вопросов типа "как отправить сообщение конкретному клиенту"...))
  5. ваш вопрос относиться чисто к Делфи...это не совсем по адресу... такие вещи писали с 90-х...во времена королевства делфи ) вот если то что работает в делфи не работает в фмх тогда другое дело я пишу программу на Delphi XE8 да хоть на Delphi 6...никакой разницы...почитайте лучше разницу между VCL и FMX (этот сайт для последнего)...
  6. ваш вопрос относиться чисто к Делфи...это не совсем по адресу... такие вещи писали с 90-х...во времена королевства делфи ) вот если то что работает в делфи не работает в фмх тогда другое дело
  7. да не температурте...а то можно и опозориться не взначай, но этого из вежливости вам никто не сообщит... 3-звенка с 90-х еще, как, зачем, и для чего это то и есть элементарно, многие професс проекты так и реализованы вам то про топик писали...что вполне живуч. 3-х звенка пишите 2 программы вместо 1-й и радуетесь... время то походу вагоны для проектов странно но об этом и писал вроде...а вы про миграцию пакетов, процедур...структура БД это только 15% бизнес логики, остальное в хранимках не стоит бросаться словами в области в которой ноль...а то тешите деварт...нечего их смешить... а как вы настраиваете БД на виртуальных хостах? через http ? )) мсье знает толк в изв...
  8. ок, но мало ли че рекомендуешь...тут экстаз когда вообще эта канитель заработает )). Edit1 или конкретный юзер, это все уникальный токен(ID) приложения для каждого клиента. Правильно выразиться тебе можно было так "как получить токен", лови упрощенный тест...должен работать (правда там есть ненавистное тобой сохранение токена в файл )) ): uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.PushNotification.Android, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, System.PushNotification, FMX.StdCtrls, System.IOUtils, IPPeerClient, REST.Backend.PushTypes, System.JSON, Data.Bind.Components, Data.Bind.ObjectScope, REST.Backend.BindSource, REST.Backend.PushDevice, FMX.Notification; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure PushEvents1PushReceived(Sender: TObject; const AData: TPushData); private { Private declarations } public { Public declarations } procedure OnChange(Sender: TObject; AChange: TPushService.TChanges); procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); procedure getAllNotfications; end; var Form1: TForm1; APushService: TPushService; AServiceConnection: TPushServiceConnection; NotificationCenter: TNotificationCenter; implementation {$R *.fmx} procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Lines.Clear; end; procedure TForm1.OnChange(Sender: TObject; AChange: TPushService.TChanges); begin Memo1.Lines.Add('OnChange'); end; procedure TForm1.OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); begin Memo1.Lines.Add('DataKey=' + ANotification.DataKey); Memo1.Lines.Add('JSon=' + ANotification.Json.ToString); Memo1.Lines.Add('DataObject=' + ANotification.DataObject.ToString); end; procedure TForm1.PushEvents1PushReceived(Sender: TObject; const AData: TPushData); begin Memo1.Lines.Add('PushReceived = ' + AData.GCM.Message); end; procedure TForm1.Button1Click(Sender: TObject); var ADeviceID, ADeviceToken: string; begin APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); APushService.AppProps[TPushService.TAppPropNames.GCMAppID] := '1234567890'; //ваш GCM ID короткий AServiceConnection := TPushServiceConnection.Create(APushService); AServiceConnection.Active := true; AServiceConnection.OnChange := OnChange; AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; Memo1.Lines.Add('ADeviceID=' + ADeviceID); Memo1.Lines.Add('ADeviceToken=' + ADeviceToken); Memo1.Lines.SaveToFile(TPath.GetDownloadsPath + '/token.txt'); Memo1.Lines.Add(TPath.GetDownloadsPath + '/token.txt'); //getAllNotfications; end; //this procedure is called in the OnActivate event of app the main form. procedure TForm1.getAllNotfications; var LNotification: TPushServiceNotification; begin for LNotification in AServiceConnection.Service.StartupNotifications do begin if Assigned(LNotification) and (LNotification.Json.ToString<>'') then begin Memo1.Lines.Add('Enter by Notification Click: ' + LNotification.Json.ToString); end; end; end; есть пара нюансов которые ты ощутишь когда пуши заработают, когда открыта прога, то пуши не отражаются в шторке, вот для их отлова и OnReceiveNotificationEvent. Также когда прога закрыта и не запущена, юзер входит в прогу по шторке и тогда их ловишь через Form1.OnActivate - getAllNotfications. Прога в штроке не очищается сама...персонально каждую иконку не очистишь(никто в этом мире не знает как из фмх!), но все иконки своей проги можно стереть, в этой же активате процедуре подчищаешь за собой типа так with TNotificationCenter.Create(Self) do CancelAll; манифест андроида клиента править ВСЯКО надо. пост тут http://fire-monkey.ru/topic/1745-rad-x-push-uvedomleniia/ UPD: забыл сказать, тебе ADeviceID нафиг не нужен, есть и другие пути его определения, да и нужно ли, если на чайна планшетах он всегда 012345678... все я тебе закрыл вопрос по пушам полностью, удачи. Когда начнешь юзать ИОС (точнее ощутишь разницу между "windows-это комфорт андроид" и "unix-вешалка с идио..ми из мак") обращайся...
  9. "Не должен, должен..." существенные аргументы...норм стиль. Миграция бизнеса? )) чувствуется стиль java или asp прогеров, кто пишет app servera на голом sql )). Обычно такие программеры используют MSSQL и ORACLE в качестве FoxPro видал массу примеров... Порой диву даешься или шок, когда видишь, что дорогущий сервер БД используется на 0.0001%, а остальное делает "свой" сервер... Конечно 3 уровневая схема тож норм подход, но по времени и простоте разработки в проигрыше клиент-серверу, от задачи же все зависит... а пушки для воробьев у нас за здрасьте...
  10. от задачи зависит конечно, но толстого клиента убил Devart.com еще в 90-х..., а если не умеете писать хранимые процедуры...то вам точно не пойдет "толстый" клиент ) теоретически в реализации и задумке, андроид и иос не отличаются от виндовс приложений, а в них ВСЕ толстые )), толстые чтоб вы знали, это "не зависимый интерфейс", веб дефакто тонкий... а вот дроид и иос увольте ), можно тонкий и на них...но не для этого они ) есть магаз же, сбегал обновился, а винде его не было ранее...да и щас мало кто юзает Именно сервер должен заниматься не только хранением, но и иметь бОльшую часть функционала по обработке данных. у меня в MSSQL именно так, весь функционал по обработке данных в хранимых процедурах, которые правлю в БД, а вот отображение на клиенте в интерфейсе...
  11. вопрос к делфи? зачем вы меня спрашиваете если работает...)) а в других случаях да использую...
  12. Отправка на VCL и FMX (но без разницы, т.е. вообще откуда без разницы, php, mssql, c# да даже с батника кажись мона...) procedure TForm1.Button1Click(Sender: TObject); var vIn, vOut: TStringStream; begin Memo1.Clear; try vIn := TStringStream.Create( '{"registration_ids":["' + Edit1.Text + '"],"data":{"id":"'+ edID.Value.ToString +'","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; CKey это ключ GCM, 40 знаков, он у вас есть думаю, Edit1 токен, Edit2 сообщение (обратите внимание SSL и т.п. здесь не нужен) По серверу я закрыл вам вопрос, по клиенту если че пишите. Upd: Забыл сказать, ID любая цифра (на ваше усмотрение, например 1 можно обозначить обновление, 2 реклама, 3 и т.п. это для вашего клиента).
  13. от задачи зависит конечно, но толстого клиента убил Devart.com еще в 90-х..., а если не умеете писать хранимые процедуры...то вам точно не пойдет "толстый" клиент ) теоретически в реализации и задумке, андроид и иос не отличаются от виндовс приложений, а в них ВСЕ толстые )), толстые чтоб вы знали, это "не зависимый интерфейс", веб дефакто тонкий... а вот дроид и иос увольте ), можно тонкий и на них...но не для этого они ) есть магаз же, сбегал обновился, а винде его не было ранее...да и щас мало кто юзает
  14. мда странный подход у вас крапоткин...обычно сначала пишут в поисковике PUSH ну у меня все без посредников и дроид и иос давай начнем с дроида я на форуме писал что манифест править обязон правил?
  15. че-то технологию попутали как топикстартер так и остальные... ваши "TCP.." это все 3 уровневая технология, причем в разы сложнее реализации самой "клиент-сервер" возьмите любую базу MySql или Sqllite да и вперед, куда проще...никаких собственных серверов(велосипедов)
  16. Не важно Kinvey, Baas и т.п., получилось ли у кого отправить пуши чтобы на клиенте они высветились одной иконкой? Неужели не актуально?
  17. а я что про винду? )) да ладно хорош сарказма...устройство то не в калифорнии же? не вижу проблем...ради дела можно и потерпеть )) вон у меня регистрация пуш-токенов, по началу в файл...а потом в бд, норм, терпимо.
  18. )) по вашему тут на форуме везде примеры из реальных программ? вообще все стараются по проще, доходчивее...а динамика то ваш удел... и в моем примере можно )
  19. )))) вам же master webs писал про NotificationCenter. может вы путаете Push и то что он сказал? Локальные сообщения и есть думаю не плохое решение...ничего перебильдить или собирать не надо. Также вам точно не нужны Push. Вы получили в сервисе сигнал, создавайте локальное сообщение и будет там все и вибро и звук все как у Push. Затем по клику сообщения и откроется ваша программа...хз ну я думаю именно как то так пашут ватсапы и виберы. Кстати в демках делфи у вас как раз про локальные есть пример.
  20. Нет, кнопки не должны растягиваться. Вот если необходимо чтобы кнопки были, например, справа и расстояние между ними 20, то я делаю у всех кнопок Align = Right, Margin->Left = 20. В результате они все аккуратненько стоят друг за другом в правой части родителя (TLayout). Если же сделать Align = Center, то все кнопки располагаются в центре друг на друге. При выравнивании справа, слева, сверху и снизу такого нет: они располагаются друг за другом. Почему выравнивание в центре располагает компоненты друг на друге? Хоть и на делфи, но как-то так Я так понял вы не в курсе зачем у контролов Margins ) У каждой кнопки Align - Client. А размеры сами подгоняйте, только не спрашивайте меня почему по бокам не ровно 50% )).
  21. Видимо ранее я потестил получение токена на тестовой программе. Затем код перенес в финальную. Какого было удивление, когда стали пуши приходить с названием тестовой программы, а открывается нормальная финальная...
  22. тогда извращаться через сохранение в файл или БД...
  23. в нете полно вроде инфы...даже кто то налобал вьювер... https://svn.code.sf.net/p/radstudiodemos/code/branches/RadStudio_XE/Delphi/DataSnap/JSONViewer/apps/ а вообще надо весь текст чтобы поковырять...
  24. Плохо разбираюсь в структуре JSON. А SYSTEM.JSON ? или DBXJSON? что-то другое? или одно и тоже? Просто там TJSONObject.ToString же есть... P.S.: последний метод ToString или ToInteger ветераны все еще не знают, что даже в VCL они есть уже давно )) пипл привык извращаться через StrToInt и т.п.... а ведь давно можно 355.ToString
  25. я бы использовал ListView, грид совершенно не оправдан, т.к. нет более 6 полей, также интрефесно подход тоже сделал бы по другому полей больше 6 есть скрытые поля для сравнения к скрытым полям у вас доступ остается если вы используете bindsource
×
×
  • Создать...