Kitty

Пользователи
  • Публикаций

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

  • Посещение

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

    16

Сообщения, опубликованные Kitty


  1. В 13.11.2017 в 14:52, Anatoliy сказал:

    Что посоветуете из своего опыта?

    krapotkin, рассказал:

    Цитата

    реально, столкнувшись с проблемами, я перешел к использованию собственных окон. просто пустая форма, в которой ректангл и все остальное. тогда не надо ждать когда пофиксят (никогда)

    Да, можно заменить ShowMessage... Однако, для этой темы это в проекте FMX не поможет. Выяснилось, что если в проекте вызвать другую форму и при этом у обеих форм FullScreen=true все равно вылезит статус бар. :(

    Form1->Show();

    Возможно в более высоких версиях Андроида, поведение другое, на моем планшете с Андроид 4.4 сделать так, чтобы статус бар не всплывал, мне не удалось...

     


  2. Не понимаю работу ShowMessage в FMX. Была надежда, что в новом году не буду связываться с FMX, но просят разобраться со старыми проектами.
    На картинке как выглядят ShowMessage в разных версиях RAD. Причем, что интересно и необъяснимо - один раз в проекте под Берлин ShowMessage выглядел как RAD XE6, но это было единожды, затем ShowMessage снова изменился сам по себе. Чудеса.
    Как воздействовать на внешний вид ShowMessage? В RAD XE6 он выглядит привлекательнее, зато в Берлине гораздо лучше выглядит кнопка ОК вместо английского Yes.
    Вторая проблема, что ShowMessage калечит FullScreen=true для формы и этому вообще нет объяснения, судя по ответам на этом форуме в другой теме. И у меня эта проблема: http://fire-monkey.ru/topic/4499-android-статус-бар-всплывает/

    Как побороть эти две проблемы, или хотя бы одну из них?
    Спасибо.

     

    ShowMessage.jpg


  3. #include <System.IniFiles.hpp>
    #include <System.IOUtils.hpp>
    #include <memory>
    
    //****
    
       #ifdef __ANDROID__
       String path = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), L"options.ini");
       #elif _Windows
       String path = System::Ioutils::TPath::Combine(ExtractFilePath(ParamStr(0)), L"options.ini");
       #endif
    
       if(FileExists(path))
        {
          std::unique_ptr<TIniFile> FileINI(new TIniFile(path));
          String ip = FileINI->ReadString(L"HOST", L"ip", L"127.0.0.1");
    //****

    1. std::unique_ptr используется чтобы избавиться от delete. std::unique_ptr все делает сам.
    2. Файл ini для Андроида надо сохранить в UTF-8.


  4. Цитата

    "Обо всем что касается программирования" или "Флудильня"?

    Я за ветку форума здесь с названием Флудильня (или еще как) помимо телеграмма. Конкретно на этом форуме отдельный раздел... Очень его не хватает...

    Пусть туда флуд сыпется... Опыт показывает, что в таком разделе самородки (или вкрапления золота :) ) маленькие всегда находятся... и решают вопросы...

    Изначально Ярослав очень строго организовал форум и это правильно, но мы все скатываемся рано или поздно во флудильню, устроен так человек... Такой раздел нужен на форуме для таких как мы..., а нас не опытных большинство. :)

    Ну это модераторам решать.


  5. Цитата

    Одни и теже темы и вопросы поднимаются 500 раз (Инга, Анатолий, Лена, такое ощущение что это один человек ;))

    Вообще то Инга моя сестра, а что есть ответы на вопросы которые поднимались 500 раз? Нет, ответов нет.


  6. Спасибо.

    Не до конца понятно... Несколько разных мнений и рекомендаций... Можно показать на паскале единственно правильное решение для службы андроида, где делаеться отсечка времени в 60 минут для сработки события.

    Спасибо.


  7. Появилась статья рассказывающая как подключить сервис для Андроида созданного на паскале к приложению созданному в С++ Builder.  Сервис естественно на паскале, хотелось бы сразу правильно начать его модернизировать, а то много времени приходиться тратить на понимание синтаксиса. Опыта создания сервисов для Андроида нет, поэтому возник вопрос... Есть стандартный пример нужного сервиса, который я подключаю к своему приложению:
    C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo
    В сервисе есть процедура, которая срабатывает когда устройство входит в зону действия маячка beacon:
    procedure TBeaconServiceDM.Beacon1BeaconEnter(const Sender: TObject; const ABeacon: IBeacon; const CurrentBeaconList: TBeaconList);
    Я хочу, чтобы эта процедура если сработала, то следующее ее срабатывание стало бы возможно только через 60 минут. Для этой цели планирую завести, в этом сервисе на паскале, глобальную переменную bool и менять ее в таймере. Вопрос такой – правильно ли использовать в сервисе для Андроид компонент TTimer и вообще правильный ли мой подход? Если нет, то как правильно для Андроид сервиса? Спасибо.

     


  8. Вспомнила, что об этом уже говорил master webs:

    http://fire-monkey.ru/topic/2734-вызов-приложения-из-нофитикейшена/?do=findComment&comment=17497

    Просьба проголосовать ибо это касается дельфи, а телефонов с андроид 4.4 много у пользователей:

    https://quality.embarcadero.com/browse/RSP-18117

    Возможно не работает и  версии Андроид 5, но такого устройства под рукой нет, чтобы проверить...

     


  9. Есть маячок бикон iBKS 105. Любое приложение скаченное с Google Play по определению маячков прекрасно его определяет.

    Пытаюсь использовать стандартный пример с сервисом, и открываю его в Дельфи:

    C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo

    Успешная компиляция в Дельфи и запуск на планшете Андроид 4.4, однако это приложение не определяет мой бикон. Приложения с Google Play его определяют без проблем.

    Подскажите, пожалуйста, в чем может быть проблема и куда копать?

     

     


  10. Теперь вроде понятно про разбиение строк, помогло наблюдение... Переноса строк нет если в шторке присутствуют уведомления от других приложений. Если уведомление в штока одно, то есть перенос строк. Это на моём устройстве.


  11. Нажимаю кнопку для открытия формы с  TWebBrowser:
    FormWEB = new TFormWEB(this);                        
    FormWEB->WebBrowser1->Navigate(L"http://моя ссылка");
    FormWEB->Show();
    Вижу в метке слово Загрузка, а когда страница загружена метка становиться пустой. Все нормально.
    Если уже в открытой странице в окне TWebBrowser есть гиперссылка и нажать на нее, то в метке уже не наблюдается слово Загрузка.
    Как при нажатии ссылки в самом TWebBrowser, показать в метке процесс загрузки?

    void __fastcall TFormWEB::WebBrowser1DidFinishLoad(TObject *ASender)
    {
     Label1->Text = L"";
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TFormWEB::FormShow(TObject *Sender)
    {
     Label1->Text = L"Загрузка...";
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TFormWEB::WebBrowser1DidStartLoad(TObject *ASender)
    {
     Label1->Text = L"Загрузка...";
    }

     


  12. Может на этом форуме найдется специалист по PHP чтобы снять ограничение на 1000 устройств? Просто тут многие занимались пушами.

    Евгений Корепов, предлагал свой вариант, но как его адаптировать и правильно интегрировать в сервер из блога Равиля?

    function SendGCMMessagesPacket($apiKey, $DevicesTokenArray, $message, $title, $DBLink, $TableName, $MyLog_GCM_file) {
    	if (count($DevicesTokenArray)==0) {
    		MyLog($MyLog_GCM_file, "Count Devices Token Array is 0, skip sending");
    		return(0);
    	}
    	$Count_Success = 0;
    	$DeviceCountMax = 1000;
    	$DeviceCountIndex = 0; 
    	$DevicesTokenPacketArray = array();
    	$gcpm = new GCMPushMessage($apiKey);
    	while ($DeviceCountIndex<=count($DevicesTokenArray)) {
    		$DevicesTokenPacketArray = array_slice($DevicesTokenArray, $DeviceCountIndex, $DeviceCountMax);
    		MyLog($MyLog_GCM_file, "Packet send: start index $DeviceCountIndex,  count ".count($DevicesTokenPacketArray));
    		$gcpm->setDevices($DevicesTokenPacketArray);
    		$ResponceJSON = $gcpm->send($message, array('title' => $title));
    		$Count_Success = $Count_Success + AnalyzeResponse($DevicesTokenPacketArray, $ResponceJSON, $DBLink, $TableName, $MyLog_GCM_file);
    		MyLog($MyLog_GCM_file, $ResponceJSON);
    		$DeviceCountIndex = $DeviceCountIndex + $DeviceCountMax;			
    //		sleep(1);
    	}
    	return($Count_Success);	
    }

     


  13. С чем может быть связано, что не с того ни с сего перестал работать перенос строк в пуше в андроиде?
    ***method=sendPush&title=Микрос&text=Текст текст текст текст текст текст текст
    Причем вчера работало как надо.
    Также периодически игнорируется заголовок и пишется вместо него название приложения. На что обратить внимание? Спасибо.


  14. Вроде все сделал как надо. Тестирую на стенде где было собрано давно нормальное приложение. Теперь добавляю приложение с пушами... и не работает...

    Теперь или баг С++ Builder или моя тупость при работе с ios...

    123.jpg


  15. Цитата

    Китти, сори за off top, но, мне кажется, ты бы обошлась меньшей кровью, если бы уже перешла на дельфи))).

    А зачем? Все работает и на С++. Был баг. Его решили. Равиль помог определить и суппорт быстро решил. А что в делфи багов нет? Из-за бага менять язык? Нет.


  16. И снова наш любимый ios для домохозяек...:)
    Нормально запустить дебаг не получается так как все время: Session ended
    Однако с помощью лейбл имеем такое:

    FDeviceToken = FPushService->DeviceTokenValue[TPushService_TDeviceTokenNames_DeviceToken];
    //добавлено для теста
    Label1->Text = L"Что тут? " + FDeviceToken;
    и видим что FDeviceToken пустой.

    Куда копать? Спасибо.

     

     

     


  17. В общем все нормально и заголовок и перенос текста работает. Видимо один раз был сбой, но это совсем не проблема.

    Спасибо за статью! Все работает и пуши живут теперь и в билдере. :D

    P.S.

    На будущее по возможности напишите понятную статью, а как обойти ограничение на 1000 пользователей. :)

    А так все работает. Только отменила ShowMessage(aText) на посылку Notification, а то два подряд ShowMessage не очень. :)