Статьи

Перенос приложения для Android или iOS из Parse

Эта статья была рецензирована Тимом Северином и Адрианом Санду . Спасибо всем рецензентам SitePoint за то, что сделали контент SitePoint как можно лучше!

С момента закрытия Google Reader не было так много криков удивления и раздражения среди технических фанатов. Объявление Facebook о том, что их популярная платформа для разработчиков, Parse, закроется через несколько лет, вызвало волну паники среди разработчиков, которые полагаются на нее. Всегда было плохой идеей слишком полагаться на централизованный коммерческий сервис, поскольку он не всегда может длиться вечно. Parse не будет первым или последним, кто закроет, и это хороший урок для всех нас, чтобы быть гибким.

Но достаточно обсуждения, давайте перейдем к практическим шагам о том, что делать с приложением на основе Parse.

Падение в замен

Если вы не хотите размещать вещи самостоятельно, есть другие коммерческие альтернативы Parse, заменяющие одну или все услуги, которые она предлагает. Ниже я остановлюсь на некоторых крупных игроках, но для исчерпывающего списка relatedcode составил потрясающий список на GitHub .

Twitter Fabric

Fabric больше внимания уделяет аналитике приложений и их оптимизации. Он имеет много общих функций с Parse, но ему не хватает полезного хранилища данных и синхронизации. В Fabric есть собственные клиенты для iOS и Android, а также процесс плавной настройки, который подходит для любых процессов сборки, которые у вас могут быть. SitePoint предлагает отличное введение в Fabric, с чего можно начать.

Firebase

Firebase фокусируется на масштабируемом хранилище данных и аутентификации для ваших приложений и является идеальной заменой Parse. Он имеет Android, iOS и JavaScript SDK, а также REST API. В SitePoint есть множество учебных пособий, посвященных интеграции службы с вашими приложениями.

Syncano

Syncano предлагает комбинацию хранения данных и каналов, на которые подписывается ваше приложение, и запускаются изменениями данных. Он имеет широкий набор SDK для большинства языков приложений и бэкэндов, которые вы хотите использовать, и SitePoint опубликовал несколько постов об использовании Syncano для начала работы.

AWS Mobile Hub

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

миграция

В качестве примера приложения для миграции я собираюсь взять статьи SitePoint Джойса Эчессы о создании серверной части для мобильных приложений с Parse ( iOS и Android ). Вы можете следовать им или попытаться следовать своим собственным приложениям.

В основе данных Parse лежит хорошо известная база данных NoSQL MongoDB с богатой историей и поддержкой. Взаимодействие с вашими данными основывалось на использовании API-интерфейса Parse, и это было с открытым исходным кодом в одинаково стандартном, но сокращенном приложении Node.JS / Express.

Если в вашей системе не установлен MongoDB, ознакомьтесь с инструкциями здесь . После установки запустите сервер, но не беспокойтесь о создании базы данных или схемы, Parse справится с этим.

Примечание . Служба миграции Parse поддерживает только MongoDB 2.6.X и 3.0.X, которые являются более старыми версиями, поэтому обязательно установите их.

Примечание. Средство миграции ожидает удаленной установки MongoDB, что не очень удобно для тестирования. Я попытался показать локальную установку с помощью Ngrok , но не смог заставить ее работать. Надеюсь, у вас есть установка MongoDB, с которой можно поэкспериментировать.

Экспортируйте данные Parse из раздела « Настройки приложения» -> «Основные» -> «Перенос» во внешнюю базу данных новой панели инструментов Parse и введите URL-адрес подключения MongoDB, например, mongodb: // server_ip: 27017 . Это передаст ваши данные анализа непосредственно в базу данных MongoDB.

Вот моя успешная миграция:

миграция

И здесь я использую Mongo Express, чтобы доказать, что данные перенесены:

Данные в Монго Экспресс

Parse Server

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

Я использовал пример сервера Parse, чтобы запустить быстрый тестовый сервер, но сервер также доступен в виде модуля Node / Express для добавления в любой существующий стек приложений, который у вас уже есть.

Шаги установки для примера с сервером верны, пока он не скажет вам запустить локальный экземпляр MongoDB, так как наши данные были перенесены на удаленный сервер. Это небольшой недостаток документированного процесса миграции Parse, поскольку вы не можете мигрировать на локальный экземпляр, но этот «следующий шаг» говорит вам подключиться, чтобы запустить локальный экземпляр! У меня было несколько вопросов, как это …

Пример сервера легко изменить в соответствии с нашими потребностями, откройте index.js в клонированном проекте и измените строки 7-18 на следующие:

var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI || 'mongodb://SERVER_IP:27017/db';

if (!databaseUri) {
  console.log('DATABASE_URI not specified, falling back to localhost.');
}

var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://SERVER_IP:27017/db',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'Add Value Here',
  masterKey: process.env.MASTER_KEY || 'Add Value Here' //Add your master key here. Keep it secret!
});

А теперь беги:

 npm start

Обновление вашего приложения

Чтобы переключить серверы Parse на наш собственный экземпляр, библиотека Parse должна быть как минимум версии 1.12 для iOS или 1.13.0 для Android. Если вы обновляете приложение iOS из нашего исходного руководства, выполните следующие действия, а если вы обновляете приложение Android, эти шаги .

Затем переключитесь на локально работающий сервер Parse, изменив параметры конфигурации приложения Parse.

IOS

 [Parse initializeWithConfiguration:[ParseClientConfiguration configurationWithBlock:^(id<ParseMutableClientConfiguration> configuration) {
   configuration.applicationId = @"YOUR_APP_ID";
   configuration.clientKey = @"YOUR_APP_CLIENT_KEY";
   configuration.server = @"http://localhost:1337/parse/";
}]];

Примечание : если вы получаете следующую ошибку:

 "[Error]: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection."

Правильным решением является запуск вашего сервера Parse через защищенное соединение, но для целей тестирования вы можете отключить защищенное соединение iOS, выполнив шаги, упомянутые здесь .

Android

 Parse.initialize(new Parse.Configuration.Builder(myContext)
    .applicationId("YOUR_APP_ID")
    .clientKey("YOUR_APP_CLIENT_KEY")
    .server("http://localhost:1337/parse/")

    .build()
);

Очистите и восстановите ваше приложение, и, надеюсь, все будет так же, как раньше, когда оно было подключено к размещенному Parse. Вот версия для iOS:

Мигрированное приложение

Вывод

Написание этого руководства заняло некоторое время, так как документация по миграции Parse местами непоследовательна и неоднозначна. Надеюсь, я успешно подготовил шаги к чему-то более лаконичному и с практическим примером. Я предполагаю, что многие из вас пытаются перенести гораздо более сложные приложения, чем этот учебник, поэтому вот несколько источников документации, которые я нашел наиболее полезными:

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