Кто делал для сайта приложения для гаджетов
Кто делал для сайта приложения для гаджетов
У меня сайт на Yii тематики каталог ресторанов.
Пришла идея написания приложений для Ipad и Android
Хотел бы узнать истории людей которые прикручивали приложения к свои сайтам на Yii
Например:
1. Где искали програмистов
2. Стоимость средняя по стране
3. Если будет обновление кода на сайте, то програмисты могут ли соправождать за не большую цену
4. Встаривали ли вы рекламу и прочее
5. Эффектино ли приложение в расскрутки
6. Какие фишки можно встроить в приложение, например: Sharing и прочее
Пришла идея написания приложений для Ipad и Android
Хотел бы узнать истории людей которые прикручивали приложения к свои сайтам на Yii
Например:
1. Где искали програмистов
2. Стоимость средняя по стране
3. Если будет обновление кода на сайте, то програмисты могут ли соправождать за не большую цену
4. Встаривали ли вы рекламу и прочее
5. Эффектино ли приложение в расскрутки
6. Какие фишки можно встроить в приложение, например: Sharing и прочее
Re: Кто делал для сайта приложения для гаджетов
По-моему вы явно ошиблись разделом. Но тем не меннее:
Для работы вашего сайта и приложения придется реализовывать механизм взаимодействия, например REST.
1. fl.ru
2. В зависимости от требуемого функционала (самое простое обычно от 200$)
3. Как договоритесь
4. Зависит от вида монетизации проекта
5. Непонятна суть вопроса
6. Любые
Пожалуйста, в следующий раз задавайте более сформулированные вопросы.
Для работы вашего сайта и приложения придется реализовывать механизм взаимодействия, например REST.
1. fl.ru
2. В зависимости от требуемого функционала (самое простое обычно от 200$)
3. Как договоритесь
4. Зависит от вида монетизации проекта
5. Непонятна суть вопроса
6. Любые
Пожалуйста, в следующий раз задавайте более сформулированные вопросы.
Re: Кто делал для сайта приложения для гаджетов
Истории людей Вот суть вопроса!
То что перечислил это я и сам знаю.
однако все приходит с опытом и я хотел услышать Истории людей которые успешно ведут проект на Yii и реализовали так же приложения.
1. fl.ru (Может Вы порекомендуете конкретно Фрилансера?!)
3. Как договоритесь
4. Зависит от вида монетизации проекта
5. Непонятна суть вопроса! 5. Эффектино ли приложение в расскрутки? т.е. Дает ли приложение преимущество перед конкурентами, нашли ли вы новых клиентов, приветствуют ли ваши пользователи и рады вашему приложению, часто ли оставляют отзывы и просят обновить и доработать
Теоретическая часть это очень хорошо, есть могучий Гугл, который направит, а Вот опытом он еще на научился делиться в таком тонком вопросе.
Делитесь историями рад буду почитать.
PS понимаю некоторым лень писать
То что перечислил это я и сам знаю.
однако все приходит с опытом и я хотел услышать Истории людей которые успешно ведут проект на Yii и реализовали так же приложения.
1. fl.ru (Может Вы порекомендуете конкретно Фрилансера?!)
3. Как договоритесь
4. Зависит от вида монетизации проекта
5. Непонятна суть вопроса! 5. Эффектино ли приложение в расскрутки? т.е. Дает ли приложение преимущество перед конкурентами, нашли ли вы новых клиентов, приветствуют ли ваши пользователи и рады вашему приложению, часто ли оставляют отзывы и просят обновить и доработать
Теоретическая часть это очень хорошо, есть могучий Гугл, который направит, а Вот опытом он еще на научился делиться в таком тонком вопросе.
Делитесь историями рад буду почитать.
PS понимаю некоторым лень писать
Re: Кто делал для сайта приложения для гаджетов
Ладно конкретный вопрос. Пока тут задам, может кто в курсе,
и
два формата, как я понял у Androida и iOS приложений можно сделать так что они данные берут из таких вот файлов (xml и JSON),
получается достаточно лишь генерировать один раз и приложение само будет делать, например, выборку по городу.
Или тот же самый "Поиск" он может икать по XML или для каждого действия так же придется дописывать в yii свои актионы.
надеюсь суть вопроса понятно, т.е. программисту приложений понадобиться знания Yii или ему достаточно будет скормить XML или JSON файлы.
Говорим пока просто о каталог и просмотре каждого Itemsa
Думаю что более сложные действия могут потребовать написания актиона, например: комментирование, установка оценки, share, геолокация, регистрация.
Код: Выделить всё
{
"restaurants" : [
{
"restaurant_id": "1",
"name": "Swee Choon Tim Sum Restaurant Pte Ltd",
"address": "191 Jalan Besar, Singapore 208882",
"lat": "1.308290",
"lon": "103.856954",
"desc": "Restaurant for all ocassions.",
"email": "support@sweechoon.com",
"website": "www.sweechoon.com",
"amenities" : "Parking, Wifi, Credit Card, Lunch, Dinner, Breakfast, Take-out, Dine-in",
"food_rating": "3.5",
"price_rating": "4.5",
"featured" : "1",
"phone" : "+65 6225 7788",
"hours" : "6:00 pm - 6:00 am",
"created_at" : "0",
"category_id" : "1"
},
{
"restaurant_id": "2",
"name": "Jim Thompson",
"address": " Address: 45 Minden Road, Dempsey Hill, Singapore 248817 ",
"lat": "1.305573",
"lon": "103.815691",
"desc": "Good for children",
"email": "support@jimthompson.com",
"website": "www.jimthompson.com",
"amenities" : "Parking, Wifi, Credit Card, Lunch, Dinner, Breakfast, Take-out, Dine-in",
"food_rating": "4.1",
"price_rating": "3.1",
"featured" : "0",
"phone" : "+65 6475 6088",
"hours" : "6:00 pm - 6:00 am",
"created_at" : "0",
"category_id" : "1"
},
и
Код: Выделить всё
<data>
<restaurants>
<item>
<restaurant_id>1</restaurant_id>
<name>Swee Choon Tim Sum Restaurant Pte Ltd</name>
<address>191 Jalan Besar, Singapore 208882</address>
<lat>1.308290</lat>
<lon>103.856954</lon>
<desc>Restaurant for all ocassions.</desc>
<email>support@sweechoon.com</email>
<website>www.sweechoon.com</website>
<amenities>
Parking, Wifi, Credit Card, Lunch, Dinner, Breakfast, Take-out, Dine-in
</amenities>
<food_rating>3.5</food_rating>
<price_rating>4.5</price_rating>
<featured>1</featured>
<phone>+65 6225 7788</phone>
<hours>6:00 pm - 6:00 am</hours>
<created_at>1397823412</created_at>
<category_id>1</category_id>
</item>
получается достаточно лишь генерировать один раз и приложение само будет делать, например, выборку по городу.
Или тот же самый "Поиск" он может икать по XML или для каждого действия так же придется дописывать в yii свои актионы.
надеюсь суть вопроса понятно, т.е. программисту приложений понадобиться знания Yii или ему достаточно будет скормить XML или JSON файлы.
Говорим пока просто о каталог и просмотре каждого Itemsa
Думаю что более сложные действия могут потребовать написания актиона, например: комментирование, установка оценки, share, геолокация, регистрация.
-
- Сообщения: 11
- Зарегистрирован: 2014.05.16, 10:46
Re: Кто делал для сайта приложения для гаджетов
Вам в любом случае понадобится два программиста (или один универсал)
1. Сделает API на сайте
2. Сделает обертку для апи под iOS и Андроид (тут кстати тоже возможно 2)
касательно форматов с любым из них программист справится не зависимо от оси
1. Сделает API на сайте
2. Сделает обертку для апи под iOS и Андроид (тут кстати тоже возможно 2)
касательно форматов с любым из них программист справится не зависимо от оси
Re: Кто делал для сайта приложения для гаджетов
А почему бы не использовать http://phonegap.com/ для рендера на все мобильные устройства?
Re: Кто делал для сайта приложения для гаджетов
короче, я тут пошарил на интернету,
http://magora-systems.ru/%D0%BA%D0%B0%D ... framework/
нашел вот такую статью по api, она впринципе мне боле понятна и легче в восприятии
Я читал официальные АПИ там где каждому действию можно написать АПИ, но пока мне такой не нужен крутой АПИ,решил таким воспользоваться.
впринцыпе возможно подойдет для моего сайта, например, я планирую, простекие странички приложения,
Главная->Список ресторанов->Информация о ресторане
у меня ошибка: Не определено свойство "ApiController.response". выходит
ApiController.php
Модель Api.php
Я походу в коде что-то пропустил?!
http://magora-systems.ru/%D0%BA%D0%B0%D ... framework/
нашел вот такую статью по api, она впринципе мне боле понятна и легче в восприятии
Я читал официальные АПИ там где каждому действию можно написать АПИ, но пока мне такой не нужен крутой АПИ,решил таким воспользоваться.
впринцыпе возможно подойдет для моего сайта, например, я планирую, простекие странички приложения,
Главная->Список ресторанов->Информация о ресторане
у меня ошибка: Не определено свойство "ApiController.response". выходит
ApiController.php
Код: Выделить всё
<?php
class ApiController extends Controller
{
public function actionCall($method = null) {
if (method_exists($this, $method)) {
$f = new ReflectionMethod($this, $method);
$args = array();
foreach ($f->getParameters() as $param) {
if (Yii::app()->request->getParam($param->name)) {
$args += array($param->name => Yii::app()->request->getParam($param->name));
} else if (!$param->isDefaultValueAvailable()) {
$this->response->setCode(Response::CODE_ERROR, Response::MSG_WRONG_INPUT);
$this->response->send();
Yii::app()->end();
} else {
$args += array($param->name => $param->getDefaultValue());
}
}
call_user_func_array(array($this, $method), $args);
} else {
$this->response->setCode(Response::CODE_NOT_FOUND, Response::MSG_METHOD_NOT_FOUND);
$this->response->send();
}
}
private function getCityList() {
if ($citys = City::model()->findAll()) {
$data = array();
foreach ($citys as $city) {
$array = array('id' => $city->id_city, 'name' => $city->city_name_ru);
$data[] = $array;
}
$this->response->city = $data;
$this->response->setCode(Response::CODE_OK, Response::MSG_OK);
} else {
$this->response->setCode(Response::CODE_OK, Response::MSG_NO_DATA);
}
$this->response->send();
}
private function getCategoryList($countryId = null) {
$criteria = new CDbCriteria;
if (!empty($countryId)) {
$criteria->addCondition('country_id = :country_id');
$criteria->params['country_id'] = (int) $countryId;
}
if ($categories = Category::model()->findAll($criteria)) {
$data = array();
foreach ($categories as $category) {
$array = array('id' => $category->id, 'name' => $category->name);
$data[] = $array;
}
$this->response->categories = $data;
$this->response->setCode(Response::CODE_OK, Response::MSG_OK);
} else {
$this->response->setCode(Response::CODE_OK, Response::MSG_NO_DATA);
}
$this->response->send();
}
}
Код: Выделить всё
<?php
class Api extends CActiveRecord
{
private $data; //Будем хранить данные ответа.
private $code; //HTTP код ответа сервера .
private $message; //Сообщение сервера.
private $response;
const MSG_OK = 'ok';
const MSG_NO_DATA = 'no data';
const MSG_WRONG_INPUT = 'wrong input data';
const MSG_UNKNOWN_ERROR = 'Unknown error';
const MSG_METHOD_NOT_FOUND = 'unknown method';
const CODE_OK = 200;
const CODE_ERROR = 500;
const CODE_NOT_FOUND = 404;
public function init() {
$this->response = new Response;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return isset($this->data[$name]) ? $this->data[$name] : '';
}
public function __isset($name) {
return isset($this->data[$name]);
}
public function __unset($name) {
if(isset($this->data[$name])){
unset($this->data[$name]);
}
}
public function setCode($code, $message){
$this->code = $code;
$this->message = $message;
}
public function send(){
switch($this->code){
case self::CODE_NOT_FOUND:
header('HTTP/1.0 404 Not Found');
break;
case self::CODE_ERROR:
header('HTTP/1.0 500 Internal Error');
break;
case self::CODE_OK:
header('HTTP/1.0 200 OK');
break;
}
$array = array(
'code' => $this->code,
'message' => $this->message,
);
if(!empty($this->data)){
$array = array_merge($array, array('data' => $this->data));
}
echo json_encode($array);
}
}
Re: Кто делал для сайта приложения для гаджетов
Решения, нет (((
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Кто делал для сайта приложения для гаджетов
Зря Вы копируете, не разбираясь в том, что делаете.
Вы вместо класса Response создали класс Api, следовательно и объявлять в контроллере (не в модели) должны его, а не несуществующий Response.Далее нам необходимо создать контроллер controllerApi, в котором будет формироваться список api-методов и происходить весь логический процесс.
Объявим приватное свойство response, в котором будем хранить объект, созданного нами класса Response.
Последний раз редактировалось mickgeek 2014.06.09, 18:00, всего редактировалось 1 раз.
Re: Кто делал для сайта приложения для гаджетов
да, ты прав, но выхода нет.
приходиться, калдовать, ну и спрашивать здесь если что то не до понимаю.
Честно сказать я документацию по программированию вообще не могу читать,
путаюсь в терминологии и синтаксисе, жалею об этом сильно
приходиться, калдовать, ну и спрашивать здесь если что то не до понимаю.
Честно сказать я документацию по программированию вообще не могу читать,
путаюсь в терминологии и синтаксисе, жалею об этом сильно
Re: Кто делал для сайта приложения для гаджетов
а может кто нибудь, еще раз подсказать,
где касяк поподробнее,
где касяк поподробнее,
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Кто делал для сайта приложения для гаджетов
Касаемо ошибки о свойстве "ApiController.response":
Ваша задача узнать, что изменилось в контроллере. Сравнить со старым вариантом, перечитать ту статью и удалить ненужное из класса Api.
Код: Выделить всё
<?php
class ApiController extends Controller
{
private $api;
public function init() {
$this->api = new Api;
}
public function actionCall($method = null) {
if (method_exists($this, $method)) {
$f = new ReflectionMethod($this, $method);
$args = array();
foreach ($f->getParameters() as $param) {
if (Yii::app()->request->getParam($param->name)) {
$args += array($param->name => Yii::app()->request->getParam($param->name));
} else if (!$param->isDefaultValueAvailable()) {
$this->api->setCode(Api::CODE_ERROR, Api::MSG_WRONG_INPUT);
$this->api->send();
Yii::app()->end();
} else {
$args += array($param->name => $param->getDefaultValue());
}
}
call_user_func_array(array($this, $method), $args);
} else {
$this->api->setCode(Api::CODE_NOT_FOUND, Api::MSG_METHOD_NOT_FOUND);
$this->api->send();
}
}
private function getCityList() {
if ($citys = City::model()->findAll()) {
$data = array();
foreach ($citys as $city) {
$array = array('id' => $city->id_city, 'name' => $city->city_name_ru);
$data[] = $array;
}
$this->api->city = $data;
$this->api->setCode(Api::CODE_OK, Api::MSG_OK);
} else {
$this->api->setCode(Api::CODE_OK, Api::MSG_NO_DATA);
}
$this->api->send();
}
private function getCategoryList($countryId = null) {
$criteria = new CDbCriteria;
if (!empty($countryId)) {
$criteria->addCondition('country_id = :country_id');
$criteria->params['country_id'] = (int) $countryId;
}
if ($categories = Category::model()->findAll($criteria)) {
$data = array();
foreach ($categories as $category) {
$array = array('id' => $category->id, 'name' => $category->name);
$data[] = $array;
}
$this->api->categories = $data;
$this->api->setCode(Api::CODE_OK, Api::MSG_OK);
} else {
$this->api->setCode(Api::CODE_OK, Api::MSG_NO_DATA);
}
$this->api->send();
}
}
Re: Кто делал для сайта приложения для гаджетов
Таблица "Api", упомянутая в записи active record класса "Api", не найдена в базе данных.
такая ошибка,
может из-за того что я ее расширил
class Api extends CActiveRecord
может просто class Api {
}
такая ошибка,
может из-за того что я ее расширил
class Api extends CActiveRecord
может просто class Api {
}
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Кто делал для сайта приложения для гаджетов
Верно. Можно переместить класс в папку "components". Файлы оттуда импортируются автоматически.
Re: Кто делал для сайта приложения для гаджетов
Добил я этого API
Ответ пришел в браузере такой.
Вопрос: Мне надо эти крякозябры обработать еще, через какой то JS_Decode (),
или эти крякозябры в приложении автоматически станут русскими буквами.
Код: Выделить всё
{"code":200,"message":"ok","data":{"city":[{"id":"1","name":"\u0410\u043b\u043c\u0430\u0442\u044b","lat":"43.25076688189675"},{"id":"2","name":"\u0410\u0441\u0442\u0430\u043d\u0430","lat":"51.161906555333296"},{"id":"3","name":"\u0410\u0431\u0430\u0439","lat":"49.63422998072826"},{"id":"4","name":"\u0410\u043a\u0431\u0430\u043a\u0430\u0439","lat":null},{"id":"5","name":"\u0410\u043a\u0441\u0430\u0439","lat":null},{"id":"6","name":"\u0410\u043a\u0441\u0443\u043a\u0435\u043d\u0442","lat":null},
Вопрос: Мне надо эти крякозябры обработать еще, через какой то JS_Decode (),
или эти крякозябры в приложении автоматически станут русскими буквами.
- TranceSmile
- Сообщения: 562
- Зарегистрирован: 2011.06.27, 19:04
- Откуда: Украина
- Контактная информация:
Re: Кто делал для сайта приложения для гаджетов
А один штрих Jason decode на стороне сервера обработать или на стороне приложения?
- TranceSmile
- Сообщения: 562
- Зарегистрирован: 2011.06.27, 19:04
- Откуда: Украина
- Контактная информация:
Re: Кто делал для сайта приложения для гаджетов
TranceSmile, спасибо!
Re: Кто делал для сайта приложения для гаджетов
Код: Выделить всё
$homepage = file_get_contents('http://cafe-bar.kz/api/GetCityList');
$obj = json_decode($homepage);
print $obj;
Это мой Джесон на выходе
{"code":200,"message":"ok","data":{"city":[{"id":"1","name":"\u0410\u043b\u043c\u0430\u0442\u044b","lat":"43.25076688189675"},
Такой просмотерщик ответа хочу написать, а то что там отдается не видно
Кстати, нафигачил часть API
http://cafe-bar.kz/api/ можете здесь посмотреть, однако вопрос у меня такой
http://cafe-bar.kz/api/getNewsList/cityId/1 - Список новостей для города с ID 1
А если новостей будет 10 000 к примеру, мне что 10 000 отдавать, походу здесь кость зарыта, так делать нельзя
в голову приходит добавлять page/1
http://cafe-bar.kz/api/getNewsList/cityId/1/page/1 ну, или 10
теперь вопрос, как это все должно выглядить например в критерии
Код: Выделить всё
$criteria = new CDbCriteria;
if (!empty($cityId)) {
$criteria->addCondition('t.city=:city');
$criteria->params['city'] = (int) $cityId;
}
if (!empty($title)) {
$criteria->addSearchCondition('t.alias', $title, true);
}
if (!empty($categoryId)) {
$criteria->compare('news_categories.category_id', $categoryId);
}
$criteria->with = array('news_categories', 'news_place');
$criteria->together = true;
$criteria->order = 'if(news_place.featured=1, 0, 1), if(t.featured=1, 1, 2)'; // 'if(featured=1,0,1), if(featured=0,RAND(),title)'; //
if ($query = News::model()->findAll($criteria)) {
page 1-10