سؤال

أقوم بإنشاء مشروع يجب أن أغير فيه ملف Main.m، بحيث لا تظهر Uiacpplication مباشرة، لذلك حذفت السطر التالي من Main.m

int retVal = UIApplicationMain(argc, argv, nil, nil);

وحذف هذه الخطوط من appdelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after application launch
    [window makeKeyAndVisible];
}

وأضافت بعض الخطوط من الألغام. الآن UiWindow لا يظهر افتراضيا، وبالحق لذلك. ولكن الآن بعد تنفيذ التعليمات البرمجية، أريد إنشاء نافذة وعرض بعض الرسائل.

كيفية إنشاء uiwindow عندما لا يكون هناك uiapplication في main.m؟

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في تشغيل تطبيق من الخفي، استخدم SBSLaunchApplicationWithIdentifier.

BOOL SBSLaunchApplicationWithIdentifier(NSString* identifier,
                                        BOOL      please_pass_NO_here);

إذا كنت ترغب في تشغيل عنوان URL، فاستخدم -[UIApplication openURL:] أو المستوى الأدنى GSEventSendApplicationOpenURL.

mach_port_t GSGetPurpleSystemEventPort();
void GSEventSendApplicationOpenURL(CFURLRef url, mach_port_t port);

إذا كنت تريد ببساطة عرض تنبيه، فاستخدم CFUserNotification. وبعد (نعم يعمل على iPhoneos.)

http://developer.apple.com/mac/library/documentation/corefounation/Reference/cfusernotificationRef/Reference/Reference.html.

نصائح أخرى

على الأرجح، لا تبدأ Uikit ليس هو الحل الذي تبحث عنه. حاول فقط عدم إظهار أي واجهة مستخدم (لا تعود من applicationDidFinishLaunching:) وفعل ما تحتاج إلى القيام به في هناك (أو في شيء يسمى من ذلك). أو، هل يمكن أن تظهر فقط شاشة تحميل لطيفة مع UIActivityIndicatorView.

أيضا، لاحظ أنه إذا لم يتم تشغيل طلبك بالكامل في غضون 20 ثانية من بدء التشغيل (إظهار نوع من المستخدم والاستجابة للأحداث) أو Springboard أو نظام التشغيل تلقائيا إنهاء طلبك تلقائيا. بالإضافة إلى ذلك، لا يحب المستخدمون الانتظار :).

تحرير: نظرا لأنك لا تجعل تطبيق Uikit، فتوقف عن حلم القدرة على بدء Uikit في الوسط: لا يمكنك ذلك. هذا يتطلب مكون منفصل ربط نقطة انطلاق لإنجازه.

لماذا تحاول فتح نافذة من الخفي؟ يبدو وكأنه فكرة سيئة للغاية، وكما نلاحظ من الصعب القيام به فعلا.

بدلا من ذلك، قم بإنشاء تطبيق للقيام بما تريد القيام به وإطلاقه من البرنامج الخفي عندما تريد إظهار نافذة - إما عن طريق معالجة URL أو بعض الوسائل الأخرى. ولكن في الأساس أن التطبيق والشبي الخاص بك يمكن أن تتواصل بمجرد تشغيله وتشغيله، ويمكن أن تفعل كل الاشياء واجهة المستخدم بعيدا عن مجال الخفي.

لقد حققت ما كنت أحاول فعله، وذلك بفضل Kennytm للحصول على نصائحه الكبيرة.

وهذا هو ما فعلته

1) قمت بإنشاء تطبيقي الذي قمت به كل الأشياء التي قمت بها في تطبيقي ثم كتب كل هذه الإعدادات إلى ملف نصي وجعل تطبيقي إنشاء ووضع ملف txt إلى /private/var/mobile/somefile.txt (هذا هو المكان الذي كمستخدم جوال، يمكنه الكتابة دون العبث بأذونات)

2) ثم قمت بإنشاء تطبيق آخر في Xcode، (القائمة على النافذة)، ملفات المفوض المحذوفة (H / M) وكتبت وظيفتي الرئيسية، التي قرأت فيها من الملف الخاص بي إنشاء التطبيق الآخر وكتب في الخطوة الأولى (/ خاص / var / mobile / somefile.txt).

3) لقد قمت بإنشاء مستوطنة (يمكنك العثور على مساعدة في إنشاء LaunchDaemon هنا http://www.tuaw.com/2008/02/21/tuaw-Responds-iphone-lojack/)

4) لقد قمت بتقاضي هذا التطبيق لقراءة تطبيقي في الخطوة 2 كل 60 ثانية (1 دقيقة) وإذا كان الشرط صحيحا، فسيعرض التطبيق في الخطوة الثانية تنبيها باستخدام CfusernotificationDisPlayAlert (بفضل Kennytm للحصول على إرشاداته).

المشكلة الوحيدة التي أقضيها حاليا هي أنني يجب أن أضع ذلك LaunchDaemon في دليل / مكتبة / LaunchDaeMons يدويا ولكن SSH باستخدام الجذر، لأنني غير قادر / تطبيقي غير قادر على الكتابة إلى هذا الدليل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top