objective c - is there any way in obj-c to hook into application delegate methods -
समस्या है :।
मैं जैम SDK का उपयोग () < / P>
मुरब्लाड एसडीके मंच-विशिष्ट प्लगइन्स (अपनी शब्दावली में विस्तार) लिखने का अवसर प्रदान करता है।
प्रत्येक विस्तार को स्थैतिक-पुस्तकालय के रूप में संकलित किया जाता है और मुख्य तैनाती उपकरण के साथ मुख्य अनुप्रयोग (लोडर में उनकी शब्दावली) से जुड़ा हुआ है।
मुख्य आवेदन के सूत्रों का कहना खोला नहीं कर रहे हैं, इस प्रकार हम / ओवरराइड एप्लिकेशन प्रतिनिधि तरीकों को लागू करने के लिए कोई क्षमता है।
मैं (Upsight एसडीके के माध्यम से रिमोट पुश नोटिफिकेशन के प्रबंध पूर्व के लिए एक विस्तार की जरूरत है पीलेहेवन)।
आईओएस 8 आया और रिमोट पुश नोटिफिकेशन पंजीकरण के लिए कुछ अतिरिक्त प्रयासों की आवश्यकता है। विशेष रूप से, didRegisterForRemoteNotificationsWithDeviceToken और didRegisterUserNotificationSettings लागू किया जाना चाहिए
सवाल कर रहे हैं ।
कैसे क्या मैं स्टैटिक लाइब्रेरी (मुख्य एप्लिकेशन के स्रोतों के लिए कोई पहुंच नहीं) से ऐप्लिकेशन के प्रतिनिधि तरीकों में शामिल कर सकता हूं?
विचार थे :
1) श्रेणियों का उपयोग करना मैंने UIApplication वर्ग में नए तरीकों को जोड़ने का प्रयास किया, फिर उन्हें मूल लोगों के साथ विमर्श किया। मेरी नई विधियों ने अपना काम किया और फिर मूल विधियों का इस्तेमाल किया। लेकिन यह काम नहीं कर रहा है मेरा obj-c अनुभव बहुत खराब है या तो मेरी कक्षा विस्तार गलत लागू किया गया था या मूल विचार गलत थी:
@interface UIApplication (MyDelegate) - (शून्य) आवेदन: (UIApplication *) आवेदन newDidRegisterUserNotificationSettings: (UIUserNotificationSettings *) notificationSettings; @end @implementation UIApplication (MyDelegate) - (शून्य) आवेदन: (UIApplication *) आवेदन newDidRegisterUserNotificationSettings: (UIUserNotificationSettings *) notificationSettings {NSLog (@ "PLAYHAVEN: didRegisterUserNotificationSettings:% @", notificationSettings); [[PHPushProvider साझा इन्स्टेंस] रजिस्टर उपयोगकर्ता नोटिफिकेशन सेटिंग्स: अधिसूचना सेटिंग्स]; } @end s3eResult s3ePlayhavenInit_platform () {// कोई भी प्लेटफ़ॉर्म-विशिष्ट प्रारंभिक कोड यहां जोड़ें myDelegate = [[MyDeleagte alloc] init]; OldHandler1 = class_getInstanceMethod ([UIApplication class], @selector (आवेदन: didRegisterUserNotificationSettings :)); NewHandler1 = class_getInstanceMethod ([UIApplication वर्ग], @ सिलेक्टर (आवेदन: newDidRegisterUserNotificationSettings :)); Method_exchange अनुपूरक (पुरानाहैंडलर 1, नयाहैंडलर 1); ... वापस S3E_RESULT_SUCCESS; }
2) का उपयोग करते हुए NSNotificationCenter इसी अधिसूचना को सुनने:
[[NSNotificationCenter defaultCenter] addObserver: myDelegate चयनकर्ता: @selector (didRegisterUserNotificationSettings :) नाम: @ "UIApplicationDidRegisterUserNotificationSettings" वस्तु: शून्य];
लेकिन मुझे यकीन नहीं है कि इस तरह के नाम के साथ अधिसूचना पूरी तरह से पोस्ट की जाएगी। मैंने UIApplication वर्ग में किसी भी प्रासंगिक कॉन्स्टन्स को खोजने में कामयाबी नहीं की। परिणामस्वरूप, यह भी काम नहीं करता है।
अंतिम सवाल यह है:
यह बिल्कुल संभव है? कोई भी विचार?
सभी धन्यवाद।
यह तकनीक (1) अलग काम करेगी से didRegisterUserNotificationSettings फ़ंक्शन UIApplicationDelegate का एक हिस्सा है। चाल सही प्रतिनिधि पाने के लिए हुक करने setDelegate के समारोह UIApplication और फिर प्रतिनिधि वर्ग पर विधि swizzling है।
Comments
Post a Comment