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

[RAD X] Push уведомления


alexbirukov

Вопрос

Установил новую студию ради исправления одной ошибки, и наткнулся на другую, ещё более критичную.

 

В общем и в новых и в старых проектах одинаковая ситуация. Если на форме имеются компоненты KinveyProvider (ParseProvider) и PushEvent, то в режиме Release - Application Store приложение запускается, но после сплэш скрина просто чёрный экран и ничего не происходит, приложение зависает. В режиме Debug всё отлично запускается и работает, Push приложения приходят. Все разрешения есть, даже больше, специально выставлял абсолютно все разрешение.

 

В режиме отладки не запускается, приложение просто подвисает, отладчик ругается, что оно не отвечает. 

 

Мучаюсь уже второй день, может кто сталкивался или знает куда копать, буду рад любому совету.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Установил новую студию ради исправления одной ошибки, и наткнулся на другую, ещё более критичную.

 

В общем и в новых и в старых проектах одинаковая ситуация. Если на форме имеются компоненты KinveyProvider (ParseProvider) и PushEvent, то в режиме Release - Application Store приложение запускается, но после сплэш скрина просто чёрный экран и ничего не происходит, приложение зависает. В режиме Debug всё отлично запускается и работает, Push приложения приходят. Все разрешения есть, даже больше, специально выставлял абсолютно все разрешение.

 

В режиме отладки не запускается, приложение просто подвисает, отладчик ругается, что оно не отвечает. 

 

Мучаюсь уже второй день, может кто сталкивался или знает куда копать, буду рад любому совету.

второй день это еще не плохо ))

кинву не юзаю, но кое где местами и среда может поднаср..ь, например переключение справа в билд кофигурэйшн

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

После переключения вручную, проверьте в опциях проекта права (permissions) все ли стоят для Релиза.

В манифесте права обязательно должны быть, ну раз в дебаге пашет, то наверно добавили корректно?

Потом ключик подписи надеюсь корректен.

Св-во формы Активате проверьте все ли у вас там красиво...покомменте и снова на тест...

Ссылка на комментарий
  • 0

Всё делал и как написано, и по всякому.

В проекте нет кода. Тестовый проект, без всякого кода, просто два элемента на форме. Провайдер и ПушЭвент. Запускаем, получаем чёрный экран. Даже если отключить автоактивацию и пр. Что Kinvey, что Parse, не работает ни то, ни другое в режиме Релиза на андройде.

Ссылка на комментарий
  • 0

Всё делал и как написано, и по всякому.

В проекте нет кода. Тестовый проект, без всякого кода, просто два элемента на форме. Провайдер и ПушЭвент. Запускаем, получаем чёрный экран. Даже если отключить автоактивацию и пр. Что Kinvey, что Parse, не работает ни то, ни другое в режиме Релиза на андройде.

вы говорите все ок...но походу не так ))

выложите манифест файл андроида...он важен для пушей, точнее туда дописывать надо права отдельно

Ссылка на комментарий
  • 0

 

Всё делал и как написано, и по всякому.

В проекте нет кода. Тестовый проект, без всякого кода, просто два элемента на форме. Провайдер и ПушЭвент. Запускаем, получаем чёрный экран. Даже если отключить автоактивацию и пр. Что 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) -->

Изменено пользователем alexbirukov
Ссылка на комментарий
  • 0

 

 

Всё делал и как написано, и по всякому.

В проекте нет кода. Тестовый проект, без всякого кода, просто два элемента на форме. Провайдер и ПушЭвент. Запускаем, получаем чёрный экран. Даже если отключить автоактивацию и пр. Что Kinvey, что Parse, не работает ни то, ни другое в режиме Релиза на андройде.

вы говорите все ок...но походу не так ))

выложите манифест файл андроида...он важен для пушей, точнее туда дописывать надо права отдельно

 

Я не говорю, что всё ОК. Я говорю, что всё, что вы писали я проверял. Проекты в которых РАБОТАЛИ и РАБОТАЮТ пуши, под Delphi 10 не запускаются, ровно так же, как и новые проекты с компонентом для работы с Push.

 

<?xml version="1.0" encoding="utf-8"?>
...

Я правильно понимаю, что этот манифест вам позволял получать пуши в XE8 ?

Ссылка на комментарий
  • 0

Тоже самое, даже обычный Sample проект от Делфи запускал с теми же пушами, чёрный экран. И на этом "баги" не заканчиваются. При создании обычной формы, потом положив на неё обычный edit, скомпилив и запустив, приложения тупо зависает, а если и не зависает, то при попытке напечатать текст, приложения опять зависает намертво и вылетает... ( При удаление Edit приложение работает отлично, даже с отправкой запроса обычного всё отлично, но стоит положить Edit, всё, приложение вылетает с зависанием )

Изменено пользователем FaNtA_DDD
Ссылка на комментарий
  • 0

Да с данным манифестом всё работало, хотя уже столько копий проекта, что мог запутаться.

 

вот мой рабочий

от вашего пару отличий все же есть...

1. <permission android:name="%package%.permission....

2. блок <receiver тоже отличается кажется весь

 

я добавлял советы сабины блоками Rustam added и end ) 

не уверен, но вдруг вам поможет

<?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%">
    <!--Rustam added -->
    <!-- GCM connects to Google Services. -->
    <uses-permission android:name="android.permission.INTERNET" />


    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />


    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />


    <!--
     Creates a custom permission so only this app can receive its messages.


     NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE,
     where PACKAGE is the application's package name.
    -->
    <permission android:name="%package%.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
    <uses-permission android:name="%package%.permission.C2D_MESSAGE" />


    <!-- This app has permission to register and receive data message. -->
    <uses-permission
    android:name="com.google.android.c2dm.permission.RECEIVE" />
    <!--Rustam added end-->
<%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>
    <!--Rustam added -->
    <receiver
          android:name="com.embarcadero.gcm.notifications.GCMNotification" android:exported="true"
          android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
              <action android:name="com.google.android.c2dm.intent.RECEIVE" />
              <category android:name="%package%" />
            </intent-filter>
    </receiver>
    <service android:name="com.embarcadero.gcm.notifications.GCMIntentService" />
    <!--Rustam added end-->
        <%activity%>
        <receiver android:name="com.embarcadero.firemonkey.notifications.FMXNotificationAlarm" />
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->
Ссылка на комментарий
  • 0

В 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) -->

Ссылка на комментарий
  • 0

 

В 8.1 у меня отлично работает стандартный шаблон без каких либо исправлений.

<?xml version="1.0" encoding="utf-8"?>

ясно, ну тогда остается решать проблемы с Кинвей...по мне GCM проще не куда...правда группой получать пуши пока незнаю как...

Ссылка на комментарий
  • 0

Да в общем-то под 10ку это не единственная проблема. Приложения не запускаются под iOS. В соседней ветке описал. Если использовать Delphi 10 + xCode 7 + SDK 9. То на выходе получаем приложение, которое не запускается на iOS 8.

Ссылка на комментарий
  • 0

Delphi 10.1 Berlin Update 1.   Использую Kinvey и соответствующие компоненты KinveyProvider, PushEvents.  На iOS все работает, на Android токены получаю, а сообщения не приходят.  Манифест менял, результата нет.  Токен главное получаю, сообщения нет.    Да на IOS (xCode 7, iOS 10) непонятно как убрать все сообщения из шторки, StartupNotifications возвращает Nil. 

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...