Anlık Bildirim ile Başlatıldığında Uygulamada Hata Ayıklama


135

Şu anda Push Bildirimleri alan bir uygulama geliştiriyorum. Tüm bu% 100 bir PHP sayfası üzerinden çalışma var. Uygulamamın alabileceği birkaç farklı push bildirimi türü vardır. PHP bunu idare eder ve hepsi iyi alınan benim app farklı bilgi paketleri gönderir.

Ancak, kullanıcılar bildirimi "görüntülediğinde" ve uygulamam başlatıldığında, kullanıcının uygulamayı manuel olarak başlattığından çok daha farklı bir işlem yapmak istiyorum - ve bunun yanı sıra, push bildirim türüne bağlı olarak farklı işlemler yapmak istiyorum. Bu işi iyi yaptım ... yapısal olarak.

Push türlerimden birinin, birkaç farklı sunucuya birkaç bağlantı yapan ve verileri ileri ve geri görüşen bir UIView açması gerekiyor. Bu UIView, örneğin ana menüden tetiklendiğinde iyi çalışır - ancak push bildirimim bu UIView'in görünmesini tetiklediğinde, soket bağlantıları beklendiği gibi çalışmaz.

Şimdi sorum soketlerle ilgili değil, daha fazlası - Böyle bir problemi nasıl ayıklayabilirsiniz? Söyleyebileceğimden (nispeten yeniyim), uygulama bir push bildiriminden başlatıldığında, bu yürütmeyi hata ayıklayıcı / konsol / vb.'ye bağlamak için bir yol yoktur ... UIAlertViews, çünkü çeşitli sunucular arasında ileri ve geri iletişim hatları vardır.

Benim için herhangi bir tavsiye büyük mutluluk duyacağız.

Yanıtlar:


147

XCode <4.0'da (XCode> = 4 için, aşağıdaki delirus tarafından verilen cevaba bakınız), şimdi Xcode'u uygulamayı hata ayıklayıcı üzerinden başlatmak yerine, başlattıktan sonra uygulamaya hata ayıklayıcıyı ekleyecek şekilde yapılandırabilirsiniz. Bu, URL şemaları, çalışma panoları ve anında iletme bildirimleri gibi uygulamanızın başlatma durumuna göre değişen şeylerde hata ayıklamanıza olanak tanır.

  1. Xcode'da Kaynak çubuğuna bakın ve Hedeflerin altında Yürütülebilir dosyalar olacaktır.
  2. Uygulamanız için denetçiyi yürütülebilir dosyalara getirin.
  3. Denetçideki Hata Ayıklama sekmesi sekmesini tıklayın.
  4. "Hata ayıklayıcıyı başlattıktan sonra yürütülebilir dosyayı başlat" seçeneğinin işaretini kaldırın
  5. "Sonraki başlatma / push bildirimini bekle" seçeneğini işaretleyin

Şimdi uygulamayı başlatmak yerine Xcode'dan hata ayıklamayı tıkladığınızda, uygulamanın başlatılmasını beklediğini bildiren bir pencere görüntülenecektir. Daha sonra uygulamayı normalde telefonda başlatırsınız ve Xcode ona eklenir


37
Bunun uygun olmayabileceğini biliyorum, ama seni seviyorum. :)
Dutchie432

17
Bu şekilde başlattığınızda uygulamanızın stdin, stdout, stderr uygulaması GDB'nin konsoluna yönlendirilmez, normal bir uygulama lansmanında bulundukları yere yönlendirilirler. Ajandadaki cihaza bakarak NSLog () ları cihazın sistem konsolunda görebilirsiniz.
Louis Gerbarg

1
Bana burada çok değerli noktalar öğrettin. TEŞEKKÜR EDERİM. Son 2 günü, yayınınızdan itibaren 20 dakika içinde çözebildiğim bir şeyi ayıklamak için harcadım.
Dutchie432

1
@stigi, URL şemalarını test etmek için benim için simülatörde çalışıyor. Eğer
önemliyse

1
@dreyln yorumum 2009 yılından beri oldu :) o zamandan beri çok şey değişti. Ama dikkatleri için teşekkürler!
stigi

124

Xcode 4 için yapmanız gerekenler:

  1. Etkin şemanızı "Şemalar" açılır menüsünden düzenleyin. ( + <)
  2. Daha sonra ürününüzü seçin - soldaki 'MyApp.app'ı çalıştırın'.
  3. Sağdaki 'Bilgi' sekmesini seçin.
  4. Ve son olarak "MyApp.app'ın başlamasını bekleyin" seçeneğini seçin.

Daha burada bölümünün "özelleştirme Çalıştırılabilirler Şeması Editör".

EDIT:
GDB günlükleri kaçırırsanız, Louis Gerbarg'ın yanıtı için yorum bakın .


1
Lion için Xcode 4.2 ile birlikteyim ve uygulama URL şemasından doğru bir şekilde başlatılıyor ve hata ayıklayıcı yürütmesi durmuyor olsa da, konsol hiçbir şey göstermiyor. Bir şey mi kaçırıyorum?
LoDani

@LoDani burada aynı, neden olduğunu anladın mı?
davis

3
@LoDani, Davis G .: Kabul edilen cevapta Louis'nin yorumunu gördün mü? stackoverflow.com/questions/1239000/… Bu şekilde başlatıldığında, stdin / out / err konsola yönlendirilmez.
Ivan Vučica

Teşekkürler, günümü kurtardın! Sadece benim app bir url işleyici tarafından başlatıldığında meydana gelen bir hata çivi çalışıyor.
Eliot

@delirus - XCode 4 için bunu güncellediğiniz için teşekkür ederiz.
Dutchie432

112

XCode 10, 9, 8, 7 ve 6 için:

  1. Araç çubuğundaki Düzeni seçin (hata ayıkladığınız cihazın hemen solunda)
  2. Düzeni Düzenle'yi seçin
  3. Sol panelde Çalıştır'ı seçin
  4. İçin Başlat seçeneği seçin yürütülebilir açılacak bekleyin
  5. Şema Düzenleyiciyi kapatın ve XCode projenizi çalıştırın

Artık bir bildirimden, özel URL'den başlatırken veya uygulama simgesine dokunarak hata ayıklayabilirsiniz.


9
Bu cevap genellikle beni doğru yola sokmamıza rağmen çok fazla soruna neden oldu. Adım 3 biraz yanıltıcıdır. Bunu yapmak zorundasınız elbette; sol panelde Çalıştır'ı seçin. Ancak, çok benzer kavramsal ifadelere sahip bir 5. adım da olmalı: Sonuçları beklemeden önce xcode'un Çalıştır düğmesini tıklayın ... Başlangıçta benim için çalışmadığı için, diğer iş arkadaşlarından tavsiye istedim ... Eğer evet cevabını verdiğim Run seçeneğini yaptıysam, seçenek no düşünerek. 3 ... Bunun için gerçekten, gerçekten, gerçekten bir adım 5 olmalı ...
Florin Odagiu

@FlorinOdagiu İyi çağrı. Adım 5 eklendi. Teşekkürler!
bgolson

Xcode'un farklı bir şema sekmesini geri yüklemesi durumunda, Başlat seçeneği Bilgi sekmesinin altında bulunur.
Nate Whittaker

3
Uygulamayı manuel olarak başlattığımda hata ayıklayıcı penceresinde herhangi bir çıktı almıyorum.
dvdblk

3

Push bildirimleriyle çalışmıyorum, bu yüzden push bildirimlerinin tam olarak çalıştığını bilmiyorum. Bununla birlikte, programınızın ana yönteminin mümkünse bir bildirim gönderildiğini iddia ederek veya uygulamayı çağırarak bir push bildiriminin alındığını taklit etmeye çalışacağım:

HTH - Şerefe, Daan


Ayrıca iyi bir fikir, ama taklit her zaman gerçek şey hata ayıklama için en iyi 2.! Mutlu Kodlama!
Dutchie432

3

Xcode 6'da:

  1. iPhone'u USB ile Macbook'a bağlama
  2. simgeye dokunarak uygulamayı iPhone'da başlat
  3. Xcode menüsünde, Debug>> Attach to ProcessUygulamanızı seçin

1
Bu yaklaşımla kritik başlatma yolunda hata ayıklayamazsınız.
Zorayr

2

XCode 11 ve 10 için aşağıdakileri yapabilirsiniz:

  1. Şema seçeneğini seçin.
  2. Düzeni Düzenle'yi seçin.

  3. Sol panelden Çalıştır seçeneğini belirleyin

  4. Başlatma bölümünde yürütülebilir dosyanın başlatılmasını bekleyin'i seçin , ardından iletişim kutusunu kapatın.

  5. Projeyi derleyin ve çalıştırın. Artık uygulamayı uygulama simgesine veya bildirim mesajına dokunarak başlatabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.