Является ли решение Ruby on Rails для асинхронного оповещения приложения iPhone об обновлениях? - PullRequest
0 голосов
/ 16 сентября 2010

Я начал исследовать, поможет ли Ruby-on-Rails решить мою проблему каким-либо образом?

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

Я хотел бы, чтобы приложение для iPhone и / или iPad просматривало изображения, но также могло видеть обновления и дополнительные изображения без , не нажимая кнопку обновления; или с помощью периодического таймера скажем.

Это заставило меня исследовать Ruby-on-Rails как решение?

Я сделал следующую диаграмму, чтобы подумать, нахожусь ли я на правильном пути: isrubyonrailstheanswer На сегодняшний день у меня, очевидно, есть (унаследованное) приложение Linux на месте, которое генерирует изображения и обновляет базу данных. Я также встроил службу Bonjour в приложение Linux, чтобы позволить приложению iPhone подключаться и обновлять миниатюры просмотра, которые находятся в базе данных sqlite. Хитрость заключается в том, что я понял, что приложение iPhone нужно запустить, чтобы обновить свои изображения при удаленном изменении базы данных.

На самом деле я подумал, что с приложением ruby-on-rails оно может предоставить RESTful-сервис для доступа к полноразмерным (плюс, миниатюрным) изображениям, позволяя удалять миниатюрные изображения из базы данных sqlite - скорее всего, база данных может иметь более 10000+ записи, так что не хотел, чтобы БД без необходимости увеличивалась.

Любые советы или ресурсы будут великолепны.

Спасибо.

Обновление: Я снова задумался над формулировкой своего вопроса. Наверное, я пытался выяснить, смогу ли я получить что-то вроде Rails для мониторинга изменений в базе данных без какого-либо опроса.

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

Самое простое решение, которое я могу придумать, - это действие на службу RESTful, которая извлекает самую последнюю измененную дату из базы данных.Периодически запрашивайте это в своем приложении для iPhone, а затем обновляйте список.

Например, если вы создаете леса для изображений:

rails generate scaffold Image name:string filename:string # fill in the other attributes you need

ПРИМЕЧАНИЕ. Вам придется синхронизировать устаревшую БД сэта таблица Rails

Затем каждый объект изображения автоматически создается с атрибутом "updated_at".

class ImagesController < ApplicationController
  # GET /images
  # GET /images.xml
  def index
    @images = Image.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @images }
    end
  end

  # GET /images/1
  # GET /images/1.xml
  def show
    @image = Image.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @image }
    end
  end

  def newest
    @image = Image.find(:last, :order => :updated_at)
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @image }
    end
  end

  # more methods down here
end

, и вам нужно будет добавить следующую строку соответствия в ваши маршруты. rb

YourAppName::Application.routes.draw do
  match 'images/newest' => 'images#newest'
  resources :images
end

Теперь из приложения для iPhone вы можете извлечь файл XML, описывающий ваше последнее изображение, с этим URL-адресом

http://localhost:3000/images/newest.xml

Анализировать последнее обновленное время и сравнивать его с последнимдата обновления.

1 голос
/ 16 сентября 2010

Одним из возможных ответов будет использование службы push-уведомлений Apple, которая будет работать за пределами вашего приложения в качестве бонуса.

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

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