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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      4

    • Постов

      2 124


  2. xenon54

    xenon54

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


    • Баллы

      2

    • Постов

      385


  3. ruslan

    ruslan

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


    • Баллы

      1

    • Постов

      160


  4. DirtyBorov

    DirtyBorov

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


    • Баллы

      1

    • Постов

      71


Популярный контент

Показан контент с высокой репутацией 07.02.2015 во всех областях

  1. Hot Fix исправляющий проблему запуска приложений на Android 5.0 (Lollipop)
    2 балла
  2. Beta hotfix for FireMonkey apps on Android 5.0 (Lollipop) Available to registered users of RAD Studio XE7, Delphi XE7 and C++Builder XE7 (except non-mobile editions) and Embarcadero All-Access XE Скачать: http://cc.embarcadero.com/item/30110
    1 балл
  3. ruslan

    [Android] Как узнать мой IP адрес?

    http://lfgonzalez.visiblogs.com/2014/11/radstudio-xe6xe7-remote-push-notifications-gcm-y-apns/
    1 балл
  4. У вас какая то надуманная проблема. На самом деле "руками" все делается намного проще чем кажется. При этом код будет минимизировать ошибки, потому что он будет типовой, шаблонный. Вот я приведу кусочек код из одной моей программы: unit Rest.API; interface uses CodeSiteLogging, System.JSON, REST.JsonReflect, Rest.Classes, System.SysUtils, System.Classes, IPPeerClient, REST.Client, REST.Types, Data.Bind.Components, Data.Bind.ObjectScope; type TApiObject = class abstract end; TApiLogin = class(TApiObject) public Login: string; Password: string; end; TRestAPI = class(TDataModule) RESTClient: TRESTClient; RESTRequest: TRESTRequest; RESTResponse: TRESTResponse; private const BaseURL = 'http://bla-bla.com/index.php'; private // Выполняет запрос function Request(ABody: TApiObject): TJSONValue; function SendLogin(ABody: TApiLogin): TJSONValue; function SendRegistry(ABody: TApiUser): TJSONValue; function GetUserInfo(ABody: TApiInfo): TJSONValue; function SetBalance(ABody: TApiBalance): TJSONValue; public function SendRequest(AObject: TApiObject; AOwn: Boolean = true): TJSONValue; end; var RestAPI: TRestAPI; implementation {%CLASSGROUP 'FMX.Controls.TControl'} {$R *.dfm} { TDataHTTP } /// Основная функция отправки json-объекта. она принимает обычный объект и сериализует его в json function TRestAPI.Request(ABody: TApiObject): TJSONValue; var i: integer; begin RESTRequest.ClearBody; RESTRequest.AddBody(ABody); RESTRequest.Execute; /// проверяем ответ сервера if (RESTResponse.StatusCode <> 200) then raise Exception.CreateFmt('Оштбка сервера %d "%s"',[RESTResponse.StatusCode, RESTResponse.StatusText]); /// проверяем, содержит ли ответ json if not Assigned(RESTResponse.JSONValue) then raise Exception.Create('Ответ сервера не содержит подходящих данных'); /// Проверяем, не содержится ли в ответе ошибок Result := RESTResponse.JSONValue.GetValue<TJSONValue>('content'); if not RESTResponse.JSONValue.GetValue<string>('status').Equals('success') then raise Exception.Create(RESTResponse.JSONValue.GetValue<string>('error')); end; /// Так делаем отправку на конкретный URL /// Запрос логина (проверка существования пользователя) function TRestAPI.SendLogin(ABody: TApiLogin): TJSONValue; begin RESTClient.BaseURL := BaseURL + '?act=users&area=login&response=js'; Result := Request(ABody); end; /// регистрация нового пользователя function TRestAPI.SendRegistry(ABody: TApiUser): TJSONValue; begin RESTClient.BaseURL := BaseURL + '?act=terminal&area=create&registerType=2&response=js'; Result := Request(ABody); end; /// Информация о пользователе function TRestAPI.GetUserInfo(ABody: TApiInfo): TJSONValue; begin RESTClient.BaseURL := BaseURL + '?act=terminal&area=info&infoType=2&response=js'; Result := Request(ABody); end; /// Изменить баланс пользователя function TRestAPI.SetBalance(ABody: TApiBalance): TJSONValue; begin RESTClient.BaseURL := BaseURL + '?act=terminal&area=cash&response=js'; Result := Request(ABody); end; /// Это не обязательная функция, она просто упрощает работу. По сути просто вызывает нужную функцию, /// в зависимости от переданного объекта. после отправки запроса, удаляет объект из памяти. function TRestAPI.SendRequest(AObject: TApiObject; AOwn: Boolean): TJSONValue; begin try if (AObject is TApiLogin) then Result := SendLogin(AObject as TApiLogin) else if (AObject is TApiUser) then Result := SendRegistry(AObject as TApiUser) else if (AObject is TApiInfo) then Result := GetUserInfo(AObject as TApiInfo) else if (AObject is TApiBalance) then Result := SetBalance(AObject as TApiBalance) finally if AOwn and Assigned(AObject) then FreeAndNil(AObject); end; end; end. А работать с этим так: procedure DoLogin(const AUser, APassw: string); var Usr: TApiLogin; Jsn: TJsonObject; begin Usr := TApiLogin.Create; Usr.Login := AUser; Usr.Password := APassw; Jsn := RestAPI.SendRequest(Usr, True); end; Следует заметить, что все запросы возвращают json. Просто потому что мне так было нужно. Однако можно немного изменить функцию Request, что бы возвращался объект конкретного типа.
    1 балл
  5. xenon54

    [Android] Как узнать мой IP адрес?

    Notification server это "прокладка" между вашим сервером и устройством. Этот сервер сам знает как послать сообщение на устройство, вам не нужно заботиться об IP и всем вытекающем отсюда. Вы наверняка видели как всякие Viber и Whatsup присылают сообщения когда приложение свернуто. Появляются всплывающие сообщения. Так вот эти сообщения приходят с Notification Server'a. Почитайте тут и тут. Ну и вообще просто погуглите "Remote Push Notification Android Delphi".
    1 балл
  6. xenon54

    [Android] Как узнать мой IP адрес?

    Это плохое взаимодействие. 1. Если приложение выгружено, связи не будет. 2. Оператор сотовой связи может вам 100 раз IP поменять пока вы будете слать что-то друг другу. В своем проекте под IOS я использую Apple push notification, для андроида тоже есть Notification. Суть в том, что ваше приложение на девайсе загружается и тутже отправляет запрос на notification сервер на регистрацию. Тот выдает обратно в ответ Device Token (некий уникальный идентификатор устройства). Вы этот Device Token посылаете на сервер и запоминаете его, чтобы потом знать кому отправлять сообщение. Все. С этого момента ваше обращение к устройству происходит через Notification server. Вы посылаете запрос с сервера на Notification server с Device Token устройства. А сервер доставляет это сообщение на устройство. Это сообщение может иметь текст, может не иметь, может быть со звуком и без, может быть вообще невидимым для пользователя, но при получении такого сообщение, устройство запускает в фоновом режиме приложение и выполняет то что вы там пропишете в обработчике. А если запущено приложение, то тут же выполняет то что вам нужно. Возможно под андроид есть свои нюансы, но принцип думаю такойже.
    1 балл
  7. Добрый день, Стандартный эмулятор поддерживает указание гео координат. Но для этого нужно подключиться к симулятору через telnet и прописать ему ручками местоположение. 1. Включаем поддержку клиента Telnet для Windows 7-8 Пуск - Панель управления - Программы и компоненты - Включение или отключение компонентов windows - Клиент Telnet (ставим галочку) 2. Подключаем к эмулятору через telnet Запускаем командную строку cmd: 3. Задаем координаты эмулятора задаем координаты и смотрим, как в сенсоре срабатывает событие смены геопозиции: Подробности тут: Using the Emulator Console Geo Location Provider Emulation
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...