Maciej Kowalski, Michał Waśniewski, Jacek Modrakowski i Jakub Bogacki - Implix - Zaawansowany marketing w aplikacjach mobilnych na przykładzie Vemma Office 3.0
7. VEMMA OFFICE
iPhone & Android
Aplikacja do zarządzania
biznesem i binarną siecią
kontaktów
8. VEMMA OFFICE
iPhone & Android
Aplikacja do zarządzania
biznesem i binarną siecią
kontaktów
- pierwszy na świecie mobilny Multi Level Marketing
9. VEMMA OFFICE
iPhone & Android
Aplikacja do zarządzania
biznesem i binarną siecią
kontaktów
- pierwszy na świecie mobilny Multi Level Marketing
- pełen dostęp do wszystkich aktywności w sieci
10. VEMMA OFFICE
iPhone & Android
Aplikacja do zarządzania
biznesem i binarną siecią
kontaktów
- pierwszy na świecie mobilny Multi Level Marketing
- pełen dostęp do wszystkich aktywności w sieci
- zaawansowany marketing to interakcja z dystrybutorami
13. WYZWANIA PO
RELEASIE 2.0
- rosnąca liczba użytkowników
- zapotrzebowanie na mobilny
dostęp do większej ilości danych
14. WYZWANIA PO
RELEASIE 2.0
- rosnąca liczba użytkowników
- zapotrzebowanie na mobilny
dostęp do większej ilości danych
- optymalizacja kodu, komunikacji
z API oraz funkcjonalności
aplikacji
15. WYZWANIA PO
RELEASIE 2.0
- rosnąca liczba użytkowników
- zapotrzebowanie na mobilny
dostęp do większej ilości danych
- optymalizacja kodu, komunikacji
z API oraz funkcjonalności
aplikacji
- wsparcie dla nowych urządzeń i
nowych wersji mobilnych
systemów operacyjnych
16. WYZWANIA PO
RELEASIE 2.0
- rosnąca liczba użytkowników
- zapotrzebowanie na mobilny
dostęp do większej ilości danych
- optymalizacja kodu, komunikacji
z API oraz funkcjonalności
aplikacji
- wsparcie dla nowych urządzeń i
nowych wersji mobilnych
systemów operacyjnych
-Vemma 3.0 - odpowiedź na
wyzwania
20. Vemma 2.0
Klasyczna nawigacja i UI oparty na tab barach
Konieczność refactoringu i ulepszenia kodu
Brak miejsca na nowe funkcje
21. Vemma 3.0
Vemma 2.0
Klasyczna nawigacja i UI oparty na tab barach
Konieczność refactoringu i ulepszenia kodu
Brak miejsca na nowe funkcje
22. Zupełnie nowy layout i nawigacja
Vemma 3.0
Vemma 2.0
Klasyczna nawigacja i UI oparty na tab barach
Konieczność refactoringu i ulepszenia kodu
Brak miejsca na nowe funkcje
23. Zupełnie nowy layout i nawigacja
Vemma 3.0
Wsparcie iPhone 5
Vemma 2.0
Klasyczna nawigacja i UI oparty na tab barach
Konieczność refactoringu i ulepszenia kodu
Brak miejsca na nowe funkcje
24. Zupełnie nowy layout i nawigacja
Vemma 3.0
Wsparcie iPhone 5
Nowe funkcje
Vemma 2.0
Klasyczna nawigacja i UI oparty na tab barach
Konieczność refactoringu i ulepszenia kodu
Brak miejsca na nowe funkcje
29. Funkcjonalność
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
30. Funkcjonalność
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
31. Funkcjonalność
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
- push notifications jako
biznesowy feedback
32. Funkcjonalność
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
- push notifications jako
biznesowy feedback
Design na miarę potrzeb
33. Funkcjonalność
- slide menu
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
- push notifications jako
biznesowy feedback
Design na miarę potrzeb
34. Funkcjonalność
- slide menu
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
- push notifications jako
biznesowy feedback
Design na miarę potrzeb
- metro tiles
35. Funkcjonalność
- slide menu
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
- push notifications jako
biznesowy feedback
Design na miarę potrzeb
- metro tiles
- autorskie rozwiązania (browse)
36. Funkcjonalność
- slide menu
- obsługa bazy setek tys. kontaktów
- liczne kanały komunikacji w aplikacji
- telefon, sms, email
- pełna interakcja: wiadomości hotlist
- videozaproszenia
- push notifications jako
biznesowy feedback
Design na miarę potrzeb
- metro tiles
- autorskie rozwiązania (browse)
- web views
50. Skala ruchu
100.000+ downloads
130.000+ push notifications / mc
80.000+ aktywni userzy
25.000 + API hits / h
400.000+ wiadomości hotlist / mc
25.000+ nowych klientów
zapisanych przez aplikację
(prospecting)
107. JsonCallbacks
Komunikacja oparta na interfejsach i proxy
Nacisk na podejście asynchroniczne
Przejrzystość kodu
Łatwość wprowadzania zmian
Niska podatność na błędy
121. Więcej możliwości
- Obsługa Base64 przy przesyłaniu obiektów binarnych
- Protokół HTTP(S) lub SPDY
- Zapytania z parametrami nazwanymi i nienazwanymi
- Optymalizacja wywołań na podstawie zebranych statystyk
- Obsługa standardu JSON-RPC 1.1 i 2.0 oraz metody GET
- Automatyczne dołączanie klucza uwierzytelniającego
- Kompatybilność z systemem Android w wersji 2.x+
133. // Kliknięcie w item list view.
listView.setOnItemClickListener(new
AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?>
adapterView, View view, int i, long l) {
// Handle click.
}
});
134. // Kliknięcie w item list view.
listView.setOnItemClickListener(new
AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?>
adapterView, View view, int i, long l) {
// Handle click.
}
});
@ItemClick(R.id.lv_trzy_camp)
protected void handleListViewItemClick(int clickedPosition) {
// Handle click.
}
135. // Long click na itemie w list view.
listView.setOnItemLongClickListener(new
AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?>
adapterView, View view, int i, long l) {
// Handle long click.
return false;
}
});
136. // Long click na itemie w list view.
listView.setOnItemLongClickListener(new
AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?>
adapterView, View view, int i, long l) {
// Handle long click.
return false;
}
});
@ItemLongClick(R.id.lv_trzy_camp)
protected void handleListViewItemLongClick(int clickedPosition) {
// Handle long click.
}
137. / Zaznaczenie itemu list view.
listView.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?>
adapterView, View view, int i, long l) {
// Handle selected item.
}
@Override
public void onNothingSelected(AdapterView<?>
adapterView) {
// Other.
}
138. / Zaznaczenie itemu list view.
listView.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?>
adapterView, View view, int i, long l) {
// Handle selected item.
}
@Override
public void onNothingSelected(AdapterView<?>
adapterView) {
// Other.
}
@ItemSelect(R.id.lv_trzy_camp)
protected void handleListViewItemSelect(boolean isSelect, int
selectedPosition) {
// Handle selected item.
}
139. // Dostęp do obiektu application.
MyApplication applicationApp = (MyApplication)
getApplication();
140. // Dostęp do obiektu application.
MyApplication applicationApp = (MyApplication)
getApplication();
@App
MyApplication applicationApp;
142. runOnUiThread(new Runnable() {
@Override
public void run() {
// Kod do UI.
}
});
@UiThread
protected void stuffInUiThread() {
// Kod do UI.
}
143. Bundle bundle = new Bundle();
bundle.putString("myString_key", "myString_value");
...
TrzyCampFragment fragment = new TrzyCampFragment();
fragment.setArguments(bundle);
144. Bundle bundle = new Bundle();
bundle.putString("myString_key", "myString_value");
...
TrzyCampFragment fragment = new TrzyCampFragment();
fragment.setArguments(bundle);
TrzyCampFragment_.builder().myString("myString_value").build();
@FragmentArg
String myString;