Kitty

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

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

  • Посещение

  • Days Won

    16

Все публикации пользователя Kitty

  1. Я использую TMediaPlayer для воспроизведения видео по кругу и плюс в таймере необходим запуск разных видео файлов по расписанию. Выяснилось следующее - если использовать для запуска нового файла такой код, то периодически программа вываливается из памяти: //в таймере запуск видео с другим именем MediaPlayer1->Stop(); MediaPlayer1->FileName = name; //другой файл MediaPlayer1->Play(); А если запускать новый файл в TMediaPlayer так, то вроде работает и программа не вываливается: //в таймере запуск видео с другим именем MediaPlayer1->Stop(); MediaPlayer1->Clear();//вроде помогло, но надежно ли? MediaPlayer1->FileName = name; MediaPlayer1->Play(); Достаточно ли строки MediaPlayer1->Clear(); чтобы предотвратить возможное вываливание программы из памяти в будущем?
  2. Я за ветку форума здесь с названием Флудильня (или еще как) помимо телеграмма. Конкретно на этом форуме отдельный раздел... Очень его не хватает... Пусть туда флуд сыпется... Опыт показывает, что в таком разделе самородки (или вкрапления золота ) маленькие всегда находятся... и решают вопросы... Изначально Ярослав очень строго организовал форум и это правильно, но мы все скатываемся рано или поздно во флудильню, устроен так человек... Такой раздел нужен на форуме для таких как мы..., а нас не опытных большинство. Ну это модераторам решать.
  3. Вообще то Инга моя сестра, а что есть ответы на вопросы которые поднимались 500 раз? Нет, ответов нет.
  4. Пуш приходит и в андроид 4.4 и в андроид 6. Если же приложение полностью выгрузить из памяти, то пуш приходит только в андроид 4.4. Почему при таких условиях пуш не приходит в андроид 6?
  5. Спасибо. Не до конца понятно... Несколько разных мнений и рекомендаций... Можно показать на паскале единственно правильное решение для службы андроида, где делаеться отсечка времени в 60 минут для сработки события. Спасибо.
  6. Появилась статья рассказывающая как подключить сервис для Андроида созданного на паскале к приложению созданному в С++ 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 и вообще правильный ли мой подход? Если нет, то как правильно для Андроид сервиса? Спасибо.
  7. Вспомнила, что об этом уже говорил master webs: http://fire-monkey.ru/topic/2734-вызов-приложения-из-нофитикейшена/?do=findComment&comment=17497 Просьба проголосовать ибо это касается дельфи, а телефонов с андроид 4.4 много у пользователей: https://quality.embarcadero.com/browse/RSP-18117 Возможно не работает и версии Андроид 5, но такого устройства под рукой нет, чтобы проверить...
  8. Есть маячок бикон 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 его определяют без проблем. Подскажите, пожалуйста, в чем может быть проблема и куда копать?
  9. push

    Теперь вроде понятно про разбиение строк, помогло наблюдение... Переноса строк нет если в шторке присутствуют уведомления от других приложений. Если уведомление в штока одно, то есть перенос строк. Это на моём устройстве.
  10. Нажимаю кнопку для открытия формы с 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"Загрузка..."; }
  11. Может на этом форуме найдется специалист по 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); }
  12. push

    Это какая-то не стабильность... Сейчас пришло как положено с разбиением строк и правильным заголовком. Никаких изменений в коде не делалось...
  13. push

    С чем может быть связано, что не с того ни с сего перестал работать перенос строк в пуше в андроиде? ***method=sendPush&title=Микрос&text=Текст текст текст текст текст текст текст Причем вчера работало как надо. Также периодически игнорируется заголовок и пишется вместо него название приложения. На что обратить внимание? Спасибо.
  14. Просьба проголосовать: https://quality.embarcadero.com/browse/RSP-17939 Спасибо.
  15. В iOS проекте Project > Options > Entitlement List нет Receive Push Notification. Может нужен какой-то доп. ключ добавить в Version info проекта? Спасибо.
  16. Вроде все верно. Наверное что-то еще упустила...
  17. Вроде все сделал как надо. Тестирую на стенде где было собрано давно нормальное приложение. Теперь добавляю приложение с пушами... и не работает... Теперь или баг С++ Builder или моя тупость при работе с ios...
  18. А зачем? Все работает и на С++. Был баг. Его решили. Равиль помог определить и суппорт быстро решил. А что в делфи багов нет? Из-за бага менять язык? Нет.
  19. И снова наш любимый ios для домохозяек...:) Нормально запустить дебаг не получается так как все время: Session ended Однако с помощью лейбл имеем такое: FDeviceToken = FPushService->DeviceTokenValue[TPushService_TDeviceTokenNames_DeviceToken]; //добавлено для теста Label1->Text = L"Что тут? " + FDeviceToken; и видим что FDeviceToken пустой. Куда копать? Спасибо.
  20. В общем все нормально и заголовок и перенос текста работает. Видимо один раз был сбой, но это совсем не проблема. Спасибо за статью! Все работает и пуши живут теперь и в билдере. P.S. На будущее по возможности напишите понятную статью, а как обойти ограничение на 1000 пользователей. А так все работает. Только отменила ShowMessage(aText) на посылку Notification, а то два подряд ShowMessage не очень.
  21. А сейчас заголовок нормально пришел...
  22. Удалось разбить перенос строк в уведомлении. Однако теперь заголовок игнорируется и выводиться всегда название приложения. Так и должно быть? Спасибо.
  23. А как правильно сформировать ссылку? {"status":"ERROR","text":"Параметр `title` не передан"}
  24. Что-то не получается перенос строк в пуш уведомлении. Сделала как в последнем посте темы: перенос строк А строки в этом проекте не переносятся. А еще вопрос, можно послать пуш без заголовка? Спасибо.
  25. Если при открытом приложение срабатывает два раза OnReceiveNotificationEvent, может заменить ShowMessage тоже на сообщение в шторку? Вторая сработка чистит первую и со стороны вроде работает для пользователя: void __fastcall TForm1::OnReceiveNotificationEvent(TObject *Sender, TPushServiceNotification* const ANotification) { ClearAllNotification(); const String FCMSignature = L"gcm.notification.body"; const String GCMSignature = L"message"; const String APNsSignature = L"alert"; String aText = ""; TJSONValue * aObj; #if defined(__ANDROID__) aObj = ANotification->DataObject->GetValue(GCMSignature); if(aObj != NULL) { aText = aObj->Value(); } else { aText = ANotification->DataObject->GetValue(FCMSignature)->Value(); } #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) aObj = ANotification->DataObject->GetValue(APNsSignature); if (aObj != NULL) { aText = aObj->Value(); } #endif //ShowMessage(aText); //шлем Notification if (NotificationCenter1->Supported() && aText != "") { TNotification * myNotification = NotificationCenter1->CreateNotification(); __try { NotificationCenter1->CancelAll(); myNotification->AlertBody = aText; NotificationCenter1->PresentNotification(myNotification); } __finally { myNotification->DisposeOf(); } } }