• Почему android приложение опубликованное в гугл плей может быть невидимым в других странах?

    Зарегистрируйтесь в appannie и посмотрите по всем странам где реально ваши приложения. Они определённо лежат ниже 200-й позиции.
    Ответ написан
  • Как получить applicationid Android приложения используя php?

    Вопрос не имеет отношение к Андроиду.

    У вас текстовый файл настроек *.gradle и php-скрипт, которым вы хотите вытянуть значение параметра. Регулярное выражение хорошо для этого подходит.
    Ответ написан
    Комментировать
  • Почему в Android 8.0 на экране блокировки исчезает уведомление сервиса, запущенного в режиме foreground?

    VDG
    @VDG Автор вопроса
    Оказался баг студии, конкретнее связки: Instant Run и Build Cache.

    Случайно обратил внимание, что уведомление выводится с низким приоритетом IMPORTANCE_MIN, хотя в исходнике стоит IMPORTANCE_DEFAULT. То есть, на устройстве работал старый неактивный код, с когда-то использованным IMPORTANCE_MIN. И, соответственно, уведомление сервиса не выводилось на экран блокировки.

    Замечу, что пересборка проекта ни к чему не приводила, так же как и удаление канала уведомления и самого приложения. Instant Run упорно брал из кеша старый мёртвый код с IMPORTANCE_MIN и заливал его на устройство как только что скомпилированный. Причём глючил кеш только на 8.0, что ещё больше запутывало. Короче, помогла только очистка этого кеша.
    Ответ написан
    Комментировать
  • Есть ли коммунити куда можно отдать андроид программу на тестирование?

    Betatesters.io – платформа, соединяющая разработчиков и тестировщиков приложений.
    Проект принадлежит Instabug – компания делает SDK для сбора отзывов и отслеживания ошибок.

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

    Знаю что есть и другие сообщества.
    Ответ написан
    1 комментарий
  • Из-за чего может быть отклонена жалоба на отзыв в Google Play?

    Больше похоже на рекламу, а не жалобу на то, что пользователям очень нравится ваше приложение.

    Оригинал откройте. Там написано "сэкси". Не знаете значение этого слова? Естественно жалобу на хвалебный отзыв не приняли.

    Кстати, когда англоязычные пользователи приложению напишут к сэкси ещё и "файер", то тоже не надо звонить пожарным. )
    Ответ написан
    1 комментарий
  • Как вытянуть данные о приложении Google Play?

    а если запросить разрешение у пользователя, возможно вытащить информацию?

    Да. Есть такой API у Гугла. Пример, appannie.com. Логинитесь с аккаунта разработчика, и сервис вытягивает все данные вашего приложения, которые доступны вам из консоли (вся статистика по установкам, доход, отзывы). Даже можете через них подсматривать все чужие данные, но это стоит 50к евро/год.
    Ответ написан
    Комментировать
  • Разработка приложения под Electron. Правильный подход?

    Если цель только вывести данные, то добавьте приложению локальный веб-сервер. Заходите на него с любого браузера, и не надо будет тащить сотню мегабайт. Так довольно часто поступают.
    Ответ написан
  • Как настроить цветовую передачу в Хроме?

    Хром дорос до 67, а проблема искажения цвета так и осталась. Не понимаю, почему молчат дизайнеры. Перезагрузка не помогает. Ошибка в самом движке хрома, так как она проявляется и в Опере, но отсутствует в FF и Edge.

    UPD. Помогло обновление драйверов видеокарты (NVIDIA). Искажения пропали и в Хроме и в Опере.
    Ответ написан
  • Как скрыть виртуальные кнопки на устройстве и в разметке?

    Создайте проект из "Fullscreen Activity"-шаблона студии. Там всё что нужно.
    Ответ написан
    Комментировать
  • Как защитить Rest API от использования третьими лицами?

    Предлагаю использовать Google Cloud Messaging (GCM).

    Устройство регистрируется в GCM, получает registrationId – токен, – сохраняет его у себя локально и передает вашему серверу. Далее пуш-сервер использует этот registrationId для отправки сообщений вашему приложению на этом устройстве. В сообщении передайте сгенерированную на сервере строку. Эту строку приложение должно вернуть серверу. И только после совпадения строк разрешаете для этого устройства доступ к API.

    Таким образом доступ к API будет только у вашего приложения. Даже, если кто-то расковыряет приложение, или создаст его клон, то оно не пройдёт валидацию и не сможет получать ваши push'и. Ни менять API, ни шифровать запросы/ответы, ни переходить на https и т.п. вам в таком решении не потребуется.
    Ответ написан
    Комментировать
  • Как организовать постоянные обновления БД с сервера для андроида?

    Создайте отдельную таблицу (SYNC): [TIMESTAMP], [UPDATED_ID]
    Каждый раз, когда добавляете или изменяете значение в основной базе данных, добавляйте новую запись в SYNC-таблицу.
    UPDATED_ID - это id изменённой/добавленной записи в основной базе.
    TIMESTAMP - текущее серверное время.
    SYNC-базу можно сделать на Redis или аналогичном in-memory хранилище, а не только на SQL.

    На клиенте (в приложении) храните время последней синхронизации с сервером (просто long).
    лучше, чтобы сервер сам формировал timestamp (текущее серверное время) и отдавал клиенту

    Когда клиенту потребуется синхронизироваться, отправляете эту временную метку серверу. На сервере из SYNC таблицы вытаскиваете id всех новых и обновлённых записей после полученной от клиента timestamp. Убираете дубли (они могут быть для обновлённых записей). Осталось только по этим id прочитать данные из основной базы и отправить их клиенту.

    Плюсы по сравнению с тем, что уже предложено

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

    PS. и как уже сказали, вы пишите аналог Firebase realtime database. Она делает ровно тоже самое. Можно попробовать поискать как реализовано там.
    Ответ написан
    Комментировать
  • Почему не срабатывает setOnClickPendingIntent в Android 7.0 Nougat в уведомлении?

    VDG
    @VDG Автор вопроса
    Удалось самому решить проблему.

    Баг хорошо виден на эмуляторе, где можно делать любое количество кликов по одной и той же точке. Суть бага в том, что периодически теряются клики в области кастомного уведомления. Находятся такие точки, где можно утыкаться до бесконечности, пока не сместишь мышь. Всё это носит случайный характер.

    Похоже, этот баг связан с внутренней оптимизацией, излишней. Если корневой layout пустой, то на него вообще не повесится обработчик клика через setOnClickPendingIntent. Если не пустой, то клики проходят рандомно.

    Чтобы убрать баг достаточно добавить в разметку элемент типа Button/ImageButton. Просто добавить, не вешая на него обработчик клика, и тогда нормально заработают клики на все другие элементы, на которые повешен setOnClickPendingIntent.

    Пример неработающей разметки, в которой для исправления достаточно раскомментировать ImageButton.
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	xmlns:tools="http://schemas.android.com/tools"
    	android:layout_width="match_parent"
    	android:layout_height="match_parent"
    	android:orientation="horizontal"
    	tools:layout_height="64dp">
    
    	<FrameLayout
    		android:id="@+id/button_1"
    		android:layout_width="wrap_content"
    		android:layout_height="match_parent"
    		android:layout_weight="1"
    		android:background="@color/colorPrimaryDark">
    
    		<ImageView
    			android:layout_width="wrap_content"
    			android:layout_height="wrap_content"
    			android:layout_gravity="center"
    			android:src="@drawable/ic_notify_1"/>
    	</FrameLayout>
    
    	<FrameLayout
    		android:id="@+id/button_2"
    		android:layout_width="wrap_content"
    		android:layout_height="match_parent"
    		android:layout_weight="1"
    		android:background="@color/colorPrimaryDark">
    
    		<ImageView
    			android:layout_width="wrap_content"
    			android:layout_height="wrap_content"
    			android:layout_gravity="center"
    			android:src="@drawable/ic_notify_2"/>
    
    		<!--<ImageButton
    			android:layout_width="64dp"
    			android:layout_height="64dp"
    			android:layout_gravity="center"
    			android:layout_margin="0dp"
    			android:padding="0dp"
    			android:src="@drawable/ic_notify_2"/>-->
    	</FrameLayout>
    </LinearLayout>
    Ответ написан
    Комментировать
  • Как зарабатывать на своем расширении для браузера?

    Рекламу надо где-то показывать.

    0. Встраивать свою рекламу в страницу запрещено.

    1. Открытие из расширения страницы вашего сайта с крутящейся на нём рекламой, если расширение открывает свою вкладку в браузере.

    2. Если есть popup окно расширения при клике на иконку, то встроить баннер, загружаемый через IFrame с вашего сайта. Серый путь, так как баннеры рекламодатели одобряют сайту, а не расширению.

    В обоих вариантах нужно иметь сайт, одобренный рекламной системой.

    3. Донат через Paypal ссылкой в popup окне. Если пользователи в основном из Европы/США, и аудитория расширения постоянно и хорошо растёт, то на пару чашек кофе в месяц соберёте ).

    3. Работать с парнёрской сетью. Я знаю только одну (кто знает другие похожие сети, тоже бросьте в комментарии ссылку): mixmarket.biz, но работал с ней очень давно. Для расширения надо использовать Deep Link (mixmarket.biz/webmasters/faq/uni/), тогда можно обойтись без своего сайта.
    Ответ написан
    Комментировать
  • Как информировать пользователя об обновлении?

    Ну и намудрили. У себя на сервере положите текстовый файлик с числом последней версии вашего приложения, которое опубликовали в плее: "mysite.ru/app123.txt". И при запуске приложения тащите этот файлик с сервера и сравниваете строку из него с BuildConfig.VERSION_CODE. Всё.

    Если нет своего сервера, то можно воспользоваться бесплатным Firebase-сервером (или брать версию из его базы, или настроек). Или воспользоваться таким же бесплатным сервером GitHub'а. Меняете код версии у себя на компе и коммитите.
    Ответ написан
    Комментировать
  • Как лучше хранить сведения о купленных пользователем игровых монетах?

    Претензии будут всегда. Можно хранить в SharedPreferences, они после удаления приложения часто остаются. Но, чтобы снизить претензии до минимума, нужна серверная часть. Можно не поднимать свой сервер, в вашем случае достаточно хранить количество неизрасходованных монет в Firebase, привязав запись к уникальному id пользователя. Id не меняется до сброса устройства к заводским установкам, или покупки нового телефона. Если платящие игроки не играют в вашу игру (тавтология в кубе :) целый год, то на смену id можно не обращать внимание.
    Ответ написан
    Комментировать
  • Вы делаете что-то, если приложению без каких либо комментариев ставят 1, 2 балла?

    Александр Синицын,
    и даже не понятно за что

    За что угодно, не относящееся к приложению, как вам уже написали. Со временем разочарование в людях и их интеллекте у вас только усилится ).

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

    А снять можно только отзыв с откровенным матом, и то на английском, видимо, боты гугла русский не понимают. Хамство и оскорбления без мата гугл не видит вообще и на рапорт не реагирует, так как просматривают жалобы не люди.

    Средняя оценка не сильно важна. Она влияет на конверсию в установки из просмотров, но в Плее фичерятся и выходят на первые места в поиске приложения и с оценкой ниже 3,5. Замечал, что гугл подкидывал новых пользователей, когда в приложении шли платежи при низкой средней оценке.
    Ответ написан
    2 комментария
  • Почему отваливаются фоновые службы на Android?

    Фоновый сервис останавливается системой при нехватке оперативной памяти. Это нормальное поведение. У вас, наверно, памяти несколько гигабайт, поэтому сервис так долго живет. Чтобы сервис не убивался, он должен иметь тип foreground - работающий на переднем плане.
    Ответ написан
    Комментировать
  • На чем в 2017м писать десктопное приложение под винду?

    Точно такой же вопрос у меня возник при "возвращении" с Андроида на декстоп под винду после 10 лет паузы разработки (на C++ и MFC). Выбрал вначале Electron, так как хорошо знаю JS, и Electron последнее время пиарят. Написал под него много, пока не нарвался на баги самого JS движка. Просто элементарно не смог работать с большими объёмами данных в массивах, вылетало приложение. Плюс огромный размер приложения (100МБ), раздавать такое со своего сайта проблематично. Плюнул на Electron и перешёл на C# Windows Forms. Винды без NET сейчас нет. IDE - бесплатная Visual Studio Community. После монструозного Electron-а, приложение похудело до десятка килобайт. Если нужны графические возможности Electron-а, то есть компонент Web Browser без всякого заморачивания с main-process/renderer-process. Там, конечно, не ES6, но жить можно (необходимо указать
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    ).
    Ответ написан
    Комментировать
  • Как сделать распродажу своего приложения в Google Play?

    Берёте и временно меняете цену встроенной покупки на 50% ниже. Агрегаторы, если вы им интересны, мониторят ваши цены. Заметив падение, они публикуют инфу о "скидке".

    UPD. Недавно такая возможность появилась.
    Создавайте распродажи.

    Теперь вы можете предлагать платные приложения со скидкой. Для этого выберите приложение и нажмите Цены и распространение > Создать распродажу.
    https://support.google.com/googleplay/android-deve...
    Ответ написан
    Комментировать
  • Как исправить ссылки на контент приложения в Google Play?

    Речь о контенте внутри приложения доступного из поиска. Пользователи через мобильный поиск хрома хотят перейти на соответствующий ваш контент внутри приложения, а приложение его не открывает. Гугл это заметил и убрал эти ссылки из поиска. Что-то с манифестом накрутили, указали что приложение поддерживает deeplink, а по факту - нет.
    Ответ написан
    2 комментария