iOS stworzenie frameworka cocoa implementującego 'Notification Service Extension'

0

Cześć,

zwracam się do programistów iOS/Obj-C z problemem, który nie pozwala mi od tygodnia spać. Mianowicie, dodanie do aplikacji pewnych funkcji, wymusza dodanie do projektu kolejnych 'Extension', które zostają kolejnymi 'Target', podprojektami. Np. 'Share Extension' czy 'Notification Service Extension'.

Technologia w której piszę aplikacje (Qt) nie pozwala jednak na obsługę ''Extension", a co za tym idzie, nie mogę np. dodać SDK z powiadomieniami PUSH.

Czy jest możliwość zamknięcia całego kodu obsługującego 'Notification Service Extension' w formie frameworka Cocoa, a następnie zlinkowania go do projektu? Tak żeby uniknąć wielu 'Target' w jednym .xcodeproj?

Chodzi mi jedynie o informacje czy to wykonalne i przedyskutowanie problemu :).

0

tworzysz sobie klasę Qt z sygnałami i slotami.
Zmieniasz rozszerzenie źródła klasy (nagłówek bez zmian) zmieniasz z ".cpp" na ".mm".
Dodajesz odpowiedni #import i możesz równocześnie używać Objective C i C++.

Zacznij pisać to sam to może pomogę ci ze szczegółami.

Offtopic: strasznie pomieszałeś pojęcia. Musiałeś coś źle gdzieś przeczytać, albo posługujesz się beznadziejnym źródłem.

0

@MarekR22 Wybacz słownictwo, nie siedzę w środowisku iOS za długo, możliwe że coś pomieszałem. Objective-C++ rozumiem i często stosuje, bardzo przyjemny mechanizm. Problem leży w tym, że Qt nie obsługuje projektów.z wieloma 'targetami'. Za każdym razem jak klikasz build, generowany jest nowy .xcodeproj. Jeżeli dodasz 'Notification Service Extension' do projektu, doda Ci się również kolejny 'Target' który jest wymagany do obsługi powiadomień. Zniknie Ci on jednak po następnej kompilacji projektu. Jednocześnie, kompilacja bezpośrednio z Xcode jest niemożliwa, ponieważ linker nie będzie potrafił poskładać tego do kupy.

Jest to znane ograniczenie, które w teorii miał rozwiązać Qbs, jednak od ponad roku jest cisza. Uwagę na to zwracał Ekkehard Gentz, a temat ze dwa razy przewijał się przez mailing list. Do teraz wisi gdzieś bug z tym związany.

Moim pomysł jest taki, że możliwe jest stworzenie frameworka Cocoa, który mógł by właśnie implementować Notification Service Extension, albo Share Extension, ale być linkowana do projektu w formie frameworka, trochę jak przy dodawaniu SDK za pomocą Pods'ów. Dobrze to wytłumaczyłem?

0

Nie wiem o co ci chodzi z tymi target-ami.
Pod iOS masz jeden target produkcyjny (chyba, że potrzebne są różne wersje aplikacji, np do celów testowych). Push notification jest przekazywana do delegata aplikacji, dokładnie tej samej, która wysłała klucz urządzenia do serwera, który wysyła notyfikację.
Może generujesz też coś związanego z backend?

0

@MarekR22: Już tłumaczę dokładniej. Posłużmy się dla przykładu manualem OneSignal, żeby mieć obrazki : https://documentation.onesignal.com/docs/ios-sdk-setup.

W pierwszym punkcie dodajesz do projektu Notification Service Extension i edytujesz jego zawartość. Po dodaniu go, w podfolderze 'Products' obok <nazwa_aplikacji.app> pojawi się również plik *.appex z naszym rozszerzeniem. Takie rozszerzenia są niezbędne do obsługi powiadomień czy wymiany plików.

Problem leży w tym, że każdy build z poziomu QtCreatora generuje nowy projekt Xcode, a ręczne dodawanie rozszerzenia za każdym razem wysypuje linkowanie projektu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1