2013-11-15 3 views
6

Так что это первый раз, когда я собираюсь отправить обновление для своего приложения, и я не знаю, что происходит, когда приложение обновляется через google-play,Загрузить контент, когда приложение обновляется через Google Play?

Вот несколько вопросов, которые я мог бы сделать, t получить ответ от:

  • Что действительно обновляется и как этот процесс работает, т.е. методы или обратные вызовы при обновлении?

  • Что происходит с файлом shared-preferences, Изменение значений/значений пар значений?

Скажем, я хочу, чтобы загрузить какой-либо файл с сервера, , когда приложение обновляется с помощью Google Play и сделать некоторые операции БД с этим файлом в фоновом режиме. Как я могу подойти к этому правильно.

--Edit--

Чтобы сделать это более ясно, что я хочу, чтобы автоматически делать некоторую обработку, когда приложение обновляется пользователем, и он не потрудился открыть приложение и для для этого я ищу триггер, предоставляемый google play для моего приложения, с помощью любого намерения [подразумеваемого или явного].

ответ

5

Вы должны реализовать широковещательный приемник, который получает уведомление, когда Paackage является неоспоримым заменить:
В манифесте включают:

<receiver android:name="my.package.MyReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.PACKAGE_REPLACED"/> 
    <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

Класс MyReceiver потребности расширить android.content.BroadcastReceiver

Для ответа на второй вопрос : Изменения в SharedPreferences не влияют на обновление через Google Play, а также не файлы в папке данных вашего приложения.

+0

Если вы включите его в свое приложение сейчас, Broadcast будет вызываться для этого обновления. Итак, если вы до сих пор не обновляли свое приложение, вы все равно можете отслеживать свое первое обновление. – Thommy

+0

Я пробовал, но это происходит только тогда, когда запись уже присутствует в манифесте, иначе она не входит в обратный вызов OnReceive – Prateek

+0

В моих тестах она была вызвана непосредственно после того, как я впервые установил/обновил приложение с новым манифестом , – Thommy

1

Одним из способов проверки установки новой версии является использование общих настроек. Когда приложение открыто, вы можете проверить, присутствует ли запись для этой версии. Если это не так, новая версия была установлена. После завершения обработки вы можете сохранить текущий номер версии в общих настройках.

Что касается вашего второго вопроса, общие настройки не теряются или не обновляются процессом обновления. Они остаются такими, какими они были.

+0

Спасибо за ваше время! Но я ищу автоматический подход. Я не хочу, чтобы пользователь открыл приложение, чтобы запустить этот процесс. Что если он обновит приложение из игры Google в воскресенье и откроет его во вторник, я хочу вызвать действие как и когда обновление сделано из google play – Prateek

0

Возможно, вам не повезло, так как нет чистого способа сделать это с уже установленным приложением. Если у вас есть биллинг в приложении (и это спекуляция), и в биллинговой системе Google в приложении есть динамическая панель мониторинга или API для регистрации пользователей, то вы можете сказать, что нужно установить новый уникальный ключ и отслеживать его через это, приложение биллинга, как система. Однако это может быть невозможно.

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

Удача, это интересная проблема, и я буду с нетерпением ждать, как вы ее разрешите.

Только что запомнилось, вы также можете просмотреть push-уведомления и нажать эти данные пользователям. Но это предполагает, что ваше приложение имеет это.

+0

Спасибо за время, я попытался использовать ответ Томми, и трансляция работала, поэтому я могу двигаться вперед, я поеду с ним. – Prateek

0

@prateek Пользователю необходимо запустить приложение вручную с Android 3.1 для применения решения широковещательного приемника. Я не думаю, что у вас есть какой-либо вариант ... Извините, Mate ... Небольшой совет: попробуйте поставить обработчик уведомлений push, когда вы действительно хотите что-то сделать с взаимодействием с пользователем или широковещательным приемником для запуска частых операций без взаимодействия с пользователем ... Ура!

+0

Спасибо за внимание, что я попытался использовать ответ Томми, и трансляция работала, поэтому я могу двигаться вперед, я поеду с ним. – Prateek

0

Вы можете приблизиться таким образом

в первый раз пользователь установить и запустить приложение, вы должны сохранить текущую версию как last_vertion_of_app в общих настройках. затем используйте диспетчер сигнализации + широковещательный приемник + службу, чтобы проверить версию приложения манифеста с сохраненной версией общего предпочтения, если оба они отличаются (не равны), что означает, что произойдет некоторое обновление. то вы можете сделать то, что хотите, если update = true в службе сохранения даже без запуска приложений.

Смежные вопросы