alexbirukov
-
Постов
65 -
Зарегистрирован
-
Посещение
-
Победитель дней
4
Сообщения, опубликованные alexbirukov
-
-
Провайдер тебе не нужен, посмотри в статье которую я сегодня выложил, там есть этот момент. Когда приходит Push, вызывается отдельная функция, которая выводит Notification, вне зависимости от состояния программы (в фоне или запущена). На форме никакие провайдеры не нужны. Я там привёл полный рабочий код из проекта для Delphi.
-
- Ссылка на статью.
- Автор: Александр Бирюков
В статья я максимально подробно попытался описать работу с PHP скриптом для рассылки Push сообщений из любой программы вне зависимости от платформы. Затрагивается вопроса от экспорта скриптов до кода программы: отправка и получение Push, регистрация устройств.
Надеюсь кому-нибудь пригодится. Буду рад комментариям, обоснованной критике и доработкам.
-
Для информации. Приложения собранные с исправлением от Сарины в xCode 6.4 + XE8.1 без проблем проходят в AppStore и публикуются.
Ключ
41<key>NSAppTransportSecurity</key>
42<dict>
43
44 <key>NSAllowsArbitraryLoads</key>
45 <true/>
46</dict>
Не использовал при публикации, хотя приложение и обращается к удалённому xml файлу. Публикация прошла успешно.
-
Переустановил XCode 7.0, обновил iOS до 9.0.1 вообще работать с XE8 перестало, создал тему.
p.s. как скачать старые версии Xcode?
В разделе загрузок в кабинете разработчика, там можно скачать старые версии xCode. Бывает приложение не запускается из Delphi студии, у меня начинает нормально работать, когда запущен PAServer и xCode, тогда и отладка запускается, и запуск приложения на устройстве срабатывает.
-
а как быть например с безопасностью данных ? если например вожу чужой домен и получаю данные не от своего сайта ? или например сотрудник уволился и ему нужно доступ закрыть ?
Не совсем понятна схема взаимодействия приложения, сайта и магазинов. Для отправки пуша можно использовать приложение или форму с жёстко указанным API. Т.е. части магазинов будут настроены жёстко на указанные API ключи или пользователей. При каждой отправке можно проверять API ключи для доступа к рассылке и на основании значения ключа скрипт будет выбирать, кому делать рассылку.
-
Доброго времени суток прошу консультации так как ситуация не совсем стандартная
есть приложение работает с заказами в онлайн магазинах но вся проблема в том что у каждого пользователя будет свой магазин или возможно несколько тоисть и скрипт отправки Push на каждом сайте свой как быть ? ))
пока в голове только один вариант организовать свой сервер и перенаправлять Push по ключу я так думаю возможно будет регистрировать устройство с параметром домен например
может есть другие идеи или есть возможность отправлять с сервера клиента без особых заморочек (на ведре в принципе приложение может работать в фоне и проверять заказы самостоятельно по таймеру но нет стабильности, IOS в обще так понимаю такой возможности нет правда в целях эксперимента делал работу с gps и таймер проверял заказы на сервере но кому такое приложение нужно которое без надобности отслеживает место положение и садит батарею)
Тоже думал над подобной реализацией. В общем т.к. базу приходится заполнять токенами устройств. Т.е. получается для приложения, есть единая база, в которой собираются все данные из приложения (собираем токены, DeviceID) так же можно при регистрации устройства использовать логин пользователя, в дальнейшем для поиска токена, использовать логин. Таким образом получаем таргетированную доставку push сообщения.
Если доставка нужна сразу все пользователям конкретного магазина, можно записывать в базу домен магазина, и из скрипта просто делать рассылку в соответствии с доменом. Т.е. есть база устройств, в которой есть записи с доменами example1.com, example2.com и т.д.
При отправке сообщение просто выбираем нужных пользователей. При этом все могут использовать 1 скрипт, подавая ему разные параметры, например API своей фирмы и текст сообщения. А скриптом уже выстраивать логику работы.
-
не пытайтесь "подвести" под ведро...) мак это дело тонкое... если не пробовали то лучше промолчать...). обратили внимание на нолики? там ведь в байтах передача... не как в ведре... если решу проблему сообщу, и тогда весь мир стекется к моему посту, т. к. не нашёл в инете решений на делфи... ну может есть на провайдерах... но хочу простоты.Мне в свое время помогло:
vStr := TStringStream.Create(s, TEncoding.UTF8);
Как вариант, если не выйдет, то разместить php скрипт где нибудь на хостинге и отправлять через него, проблем с русским нет.
-
Хммм.
В общем сделал сборку XE10 + xCode 6 + SDK 8.4.
Приложения собираются, запускаются всё ОК.
так в чем косяк то был?
Да он и остался. Первый пост про связку XE10 + xCode 7 + SDK 9.
Каким чудом вам удалось запустить приложение из XE10 + xCode 7 + SDK 9 на устройстве с iOS8 мне постичь не удалось.
Поэтому понизил до XE10 + xCode 6 + SDK 8.4. Но опять же, не запускаются приложения на iPhone 4S в режиме Release.
В результате сейчас использую XE8.1 + xCode 6 + SDK 8.4 + изменённый FMX.Context.GLES.iOS.pas. Отправил приложение на проверку. Посмотрим, что скажут.
-
Хммм.
В общем сделал сборку XE10 + xCode 6 + SDK 8.4.
Приложения собираются, запускаются всё ОК.
Есть iPhone 4S (8.3) в режиме Debug приложение запускается в любой конфигурации.
Если запустить в режиме Release, после запуска приложение вылетает.
На эмуляторе всё работает ОК.
На планшете iPad Mini 2 (8.2) тоже ОК.
Вопрос, чем может быть связано? И будет ли если опубликовать работать на iPhone 4S если работает на эмуляторе?
-
заходите в Project->Deployment
там ищите в колонке Remote Name info.plist отключаете строку и в замен нужно добавить новую но только со своим файлом с таким же названием info.plist файл нужно скопировать он у вас есть в папке iOSDevice64/Release/project.info.plist
я копировал в корень папки проекта для удобства открываете в любом текстовом редакторе (Notepad++)
и после примерно 39 строки нужно добавить
38 <key>FMLocalNotificationPermission</key>39 <string>true</string>-------Добавить код --------41<key>NSAppTransportSecurity</key>42<dict>4344 <key>NSAllowsArbitraryLoads</key>45 <true/>46</dict>скажу сразу что директива для всех доменов если вы используете только 1 домен то правило будет другоеСпасибо БОЛЬШОЕ! Буду пробовать.
-
А что люди подумают? Подумают сначала, хотят ли они изобретать костыли при переходе или нет
вы пробовали Swift, например, там такие косяки есть, что в RAD так...детский лепет!
к последнему swift надо прилагать толмут faq-ов на все случаи жизни.
это к теме переходить или не переходить... )
Нет ну я конечно понимаю, всё познаётся в сравнении. Но я считаю с последними косяками Apple, с постоянными недоделками которые стали возникать + весь этот цирк с публикацией и пр. Просто я считаю, что коробочные версии продуктов должны быть более вылизанными. А не так, чтобы 5 часов коддинга и 120 часов шаманств с бубном наперевес.
-
Да у меня тоже есть приложение с подгрузкой. Но в свете последних экспериментов столкнулся с кучей проблем во всех этих обновлениях. В результате сейчас пытаюсь проверить работу связки XE8.1 + xCode 6.4 SDK 8.4 + исправления от Сарины. Предыдущую версию без исправлений отклонили.
Спасибо вам большое за подробные ответы.
связка XE8.1 + xCode 6.4 SDK 8.4 у меня не прошла проверку в app store по причине того что приложение не запустилось на ios 9 также была проблема с http в ios 9 они рекомендуют использовать https протокол чтобы включить http параметры надо задавать в ручную в файле info.plist
Хмммм, а вот тут можно поподробнее. Просто у меня приложение при запуске тоже делает запрос именно по http, именно это приложение зависло на заставке. А что конкретно надо изменить в info.plist?
Связки XE10 + xCode 6.4 + SDK 8.4 это тоже касается?
-
нет зависаний не заметил не смотря на то что сразу подгружаю информацию с сайта
Да у меня тоже есть приложение с подгрузкой. Но в свете последних экспериментов столкнулся с кучей проблем во всех этих обновлениях. В результате сейчас пытаюсь проверить работу связки XE8.1 + xCode 6.4 SDK 8.4 + исправления от Сарины. Предыдущую версию без исправлений отклонили.
Спасибо вам большое за подробные ответы.
-
Спасибо за подробные ответы.
Ещё вопрос, XE10 + xCode 6 + iOS9, на заставке приложение не зависало на устройстве?
-
ну так! все правильно!
а Вы "Ошибки", "Косяки"
что люди подумают?
Тогда не совсем понятно:
XE10 + iOS 6 = полёт нормальный
XE10 + iOS 7 = полёт нормальный
XE10 + iOS 8 = полёт нормальный
Речь идёт об эмуляторе или проверке на реальных устройствах? Интересует запуск на реальных устройствах, поведение ПО.
А что люди подумают? Подумают сначала, хотят ли они изобретать костыли при переходе или нет
-
в релизе вроде написано что версия ios 8.4 минимальная
В этом видимо и причина. На устройствах стоит 8.2 и 8.3. Приложения сделанные в XE10 + xCode 7 (SDK9) вылетают на них.
-
Странно.XE10 + iOS 8 = полёт нормальный
XE10 + iOS 9 = полёт нормальный
xCode 7
XE10 + iOS8 (iPhone 4S) - пустое приложение закрывается после заставки.
XE10 + iOS9 (Эмулятор) - запускается без проблем.
xCode 7.
При этом приложение собранное в XE8.1 + xCode 6.4 быль отклонено, зависло на заставке на iOS9.
-
И так, пока русскоязычная и англоязычная части интернета молчат по поводу работы в новой Delphi XE10 Seattle в связке с xCode 7, а компании представители описывают, какое замечательное вышло обновление, пользователи столкнулись с проблемой, что приложения, сделанные на XE10 Seattle, xCode 7 + SDK9, не запускаются на предыдущих платформах.
Не совсем понятно, почему в упомянутых сегментах интернета нет совершенно никакой информации по данному поводу. Опять впереди планеты все Китай.
Пользователь блога подробно описывает конфигурацию, на которой он тестировал запуск приложения и описание проблемы. Несколько реальных устройств на разных прошивках, разные версии ПО и пр.
Коротко о главном. Если вы хотите, как можно скорей перейти на новую Delphi XE10 Seattle с целью писать свежие приложения\обновления для iOS, спешу вас разочаровать. Ваши программы перестанут работать на предыдущих версиях iOS. Статистика испытаний такова, что приложения собранные на XE10 Seattle, xCode 7 + SDK9 будут работать только на устройствах под управлением iOS9.
Вторая проблема, состоит в том, что недавнего времени AppStore при проверке приложений стала проверять их именно на iOS 9, а приложения собранные на XE8.1 такую проверку не проходят, так как зависают на стартовой заставке приложения и как следствие их отклоняют. Вот так то. Прошла уже целая неделя, а интернет по данному поводу ничего сказать нам особо не может.
На днях появилась статья от Сарины Дю Понт, о том, как всё же запустить приложение сделанные в XE8.1 на iOS9.
В результате изысканий Китайских друзей, получаем на данный момент такую картину:
XE8 + iOS 6 = полёт нормальный
XE8 + iOS 7 = полёт нормальный
XE8 + iOS 8 = полёт нормальный
XE8 + iOS 9 = зависание на экране заставки (если не воспользоваться советом Сарины)XE10 + iOS 6 = приложение вылетает
XE10 + iOS 7 = приложение вылетает
XE10 + iOS 8 = приложение вылетает
XE10 + iOS 9 = полёт нормальныйТаким образом в XE10 Seattle и xCode 7 можно получить на данный момент только приложение, работающее на iOS9.
Ждём Delphi XE10 Seattle Update 1.
P.S. А в на Android в Delphi XE10 Seattle приложение с компонентами для отправки Push не запускается в режиме Release — Application Store. Что тоже, очень и очень печально.
-
Не оно случайно?
-
Да в общем-то под 10ку это не единственная проблема. Приложения не запускаются под iOS. В соседней ветке описал. Если использовать Delphi 10 + xCode 7 + SDK 9. То на выходе получаем приложение, которое не запускается на iOS 8.
-
В 8.1 у меня отлично работает стандартный шаблон без каких либо исправлений.
<?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%"> <%application-meta-data%> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <%activity%> <receiver android:name="com.embarcadero.firemonkey.notifications.FMXNotificationAlarm" /> <%receivers%> </application> </manifest> <!-- END_INCLUDE(manifest) -->
-
Да с данным манифестом всё работало, хотя уже столько копий проекта, что мог запутаться.
-
вы говорите все ок...но походу не так ))Всё делал и как написано, и по всякому.
В проекте нет кода. Тестовый проект, без всякого кода, просто два элемента на форме. Провайдер и ПушЭвент. Запускаем, получаем чёрный экран. Даже если отключить автоактивацию и пр. Что Kinvey, что Parse, не работает ни то, ни другое в режиме Релиза на андройде.
выложите манифест файл андроида...он важен для пушей, точнее туда дописывать надо права отдельно
Я не говорю, что всё ОК. Я говорю, что всё, что вы писали я проверял. Проекты в которых РАБОТАЛИ и РАБОТАЮТ пуши, под Delphi 10 не запускаются, ровно так же, как и новые проекты с компонентом для работы с Push.
<?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="*" android:versionCode="1" android:versionName="1.0.0" android:installLocation="preferExternal"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <permission android:name="*.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="*.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="False" android:restoreAnyVersion="False" android:label="*" android:debuggable="False" android:largeHeap="False" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme" android:hardwareAccelerated="true"> <service android:name="com.embarcadero.gcm.notifications.GCMIntentService" /> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="*" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="*" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" /> <receiver android:exported="true" android:name="com.embarcadero.gcm.notifications.GCMNotification" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="*" /> </intent-filter> </receiver> </application> </manifest> <!-- END_INCLUDE(manifest) -->
-
вы удалили xcode, а потом поставили заново или обновили просто?
надо снести и установить заново!
Чистая установка. Установил Windows 7 x64, на неё поставил Delphi 10. Затем взял образ OS X Yosemite, установил туда xCode7 с SDK9. В результате всё, как и в прежних вариантах, та же ошибка.
Вы проверяли данную конфигурацию. Работает она вообще?
что то похожее
Win8.1x64proYosemite 10.10(vmware)xcode6.4PAserver16XE8upd1Login мака и конечно логин в xcode - девелопера(99$)сертификаты загружены за счет xcodeЗапускаю пасервер на маке без пароля(для чего инсталлятор под виндовс пока загадка)IOS Device32работает нормНет, студия 8.1 и xCode 6.4 у меня работают без проблем. Не работает Delphi 10 и xCode 7 с SDK9.
PushEvents без Provider
в Push сообщения
Опубликовано
Что именно нашёл? Там в статье есть ссылки на библиотеки PHP для работы с Push, есть примеры работы. Я просто объединил обе библиотеки одним скриптом простейшим + прикрутил запись токенов в базу. Код для Delphi взял из одного видео испанца (или итальянца), где он делает отправку Push через обращение напрямую к сервисам, но опять же используется токен. Я взял оттуда часть определения токена устройства.
Просто для меня скрипт на PHP удобен тем, что к нему я могу обратиться из любого места, с любой платформы, будь то Web форма или приложение на C# \Delphi. Это лучше, чем для каждой отдельной программы\проекта писать код отправки Push сообщения напрямую через Apple и Google, уж тем более если платформа этого явно не поддерживает.