2015-06-23 25 views
6

Cordova'ya yeni geliyorum ve geliştirme sürecini engellemeden Cordova/Ionic tarafından oluşturulan platform kodunu değiştirmenin bir yolu olup olmadığını merak ediyorum.iOS'un uygulamasını özelleştirme: didFinishLaunchingWithOptions: yöntem bir Cordova/Ionic projesinde

Özel gereksinim, Facebook Mobile App Yükleme reklamlarını desteklemek için Facebook SDK'yı iOS uygulamasına entegre etmektir. Entegrasyon basittir: Sadece AppDelegate.m'de application:didFinishLaunchingWithOptions:'a bir kod satırı eklemeyi ve Facebook iOS çerçevesini Xcode projesine eklemeyi gerektirir. Şu anda tüm plaformlar dizini, yapı sırasında Cordova tarafından oluşturulduğu için kaynak denetiminin dışında tutulur. AppDelegate.m'yi değiştirirseniz, onu kaynak kontrolüne eklemem gerekecek. Ardından, İyonik uygulamadaki sonraki değişiklikler Xcode projesiyle birleştirme çakışmalarıyla sonuçlanmayacak mı? Küçük değişikliklerimi Xcode projesine, süreci kırmadan nasıl entegre edebilirim?

NOT: Bir çözüm olarak bir eklenti aradım, ancak bulduğum eklenti with complications of its own geliyor. Ve Cordova zaten application:didFinishLaunchingWithOptions: içinde kancalar sağlamaz gibi görünüyor.

cevap

12

Bir orada

- (void)pluginInitialize 
{ 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishLaunching:) name:UIApplicationDidFinishLaunchingNotification object:nil]; 

} 

- (void)finishLaunching:(NSNotification *)notification 
{ 
    // Put here the code that should be on the AppDelegate.m 
} 

kodu plugin.xml koymak Sen pluginInitialize üzerinde UIApplicationDidFinishLaunchingNotification dinleyebilirsiniz yerine AppDelegate.m

içine değişiklik yapmadan kendi eklentisi oluşturmalıdır onload gerek : Bunun için bu eklentiyi kullanabilirsiniz pluginInitialize

<feature name="yourPluginName"> 
    <param name="ios-package" value="yourPluginClass" /> 
    <param name="onload" value="true" /> 
</feature> 
+0

Teşekkürler, bunu doğruladım ve işe yarıyor! Hatta belki de bu kodu "pluginInitialize" içinde bir iyonik/Cordova uygulamasında olduğu gibi sonlandırır: 'uygulama: didFinishLaunchingWithOptions: 'neyse (Cordova görüntüleme denetleyicisinin yük metoduyla) yöntem, root görünümü denetleyicisi olarak başlatıldıktan ve makeKeyAndVisible olarak çağrıldıktan sonra tetikleyicileri tetikler) – Clafou

+1

evet, kodu eklentinin içine yerleştirmekInitialize yeterli olmalıdır, gözlemci yalnızca uygulama başlatıldığında, örneğin uygulama kapatıldığında bir push bildiriminden başlatılırsa, ve itme bildirim bilgilerini eklentiden veya bazı durumlarda diğer uygulamalardan: ifFinishLaunchingWithOptions: Bazı bilgileri aldınız ve bu bilgiyi istiyorlar – jcesarmobile

+0

Sadece 'onload = true kullanırken kullanırken herhangi bir hata var mı? '' [NSInvalidArgumentException ', nedeni:' - [SharingReceptor handleApplicationDidFinishLaunching]: örneğin 0x7fb63bc016d0'' için gönderilen tanınmayan seçici –

0

Uygulama temsilci dosyasına eklemeler yapabilirsiniz, bu değişiklik www klasörünün içindeki dosyalardan farklı olmayacaktır. Xcode proje klasöründe değişiklikler yapabilirsiniz.

+0

Teşekkürler! Ama xcodeproj dosyası ne olacak? Facebook çerçevesini eklemek için de değiştirmek zorundayım. Yapılandırma değişiklikleri yapılırsa bu dosyanın Cordova tarafından da değiştirileceğini farz ediyorum. Verilen, bu çok sık olmamalı. – Clafou