Ứng dụng gỡ lỗi khi được khởi chạy bằng thông báo đẩy


135

Tôi hiện đang phát triển một ứng dụng nhận Thông báo đẩy. Tôi có tất cả điều này làm việc 100% thông qua một trang PHP. Có một số loại thông báo đẩy khác nhau mà ứng dụng của tôi có thể nhận được. PHP xử lý việc này và gửi các gói thông tin khác nhau đến ứng dụng của tôi, tất cả đều nhận được tốt.

Tuy nhiên, khi người dùng "xem" thông báo và ứng dụng của tôi khởi chạy, rõ ràng tôi muốn thực hiện một hành động khác so với nếu người dùng chỉ khởi chạy ứng dụng theo cách thủ công - và trên hết, các hành động khác nhau tùy thuộc vào loại thông báo đẩy. Tôi đã làm việc này tốt ... về mặt cấu trúc.

Một trong những kiểu đẩy của tôi được cho là mở một UIView tạo ra một số kết nối đến một số máy chủ khác nhau và đàm phán dữ liệu qua lại. Ví dụ, UIView này hoạt động tốt khi được kích hoạt từ menu chính - tuy nhiên khi thông báo đẩy của tôi kích hoạt UIView này xuất hiện, các kết nối ổ cắm không hoạt động như mong đợi.

Bây giờ câu hỏi của tôi không phải là về các ổ cắm, nhưng hơn thế nữa - Làm thế nào để bạn gỡ lỗi một vấn đề như vậy ?? Từ những gì tôi có thể nói (tôi còn khá mới) khi ứng dụng được khởi chạy từ thông báo đẩy, không có cách nào để liên kết thực thi đó với trình gỡ lỗi / bảng điều khiển / v.v ... Tôi đang gặp khó khăn khi cố gắng gỡ lỗi mã bằng cách sử dụng UIAlertViews, vì có nhiều dòng liên lạc qua lại giữa các máy chủ khác nhau.

Bất kỳ lời khuyên nào bạn có cho tôi sẽ được đánh giá rất cao.

Câu trả lời:


147

Trong XCode <4.0 (đối với XCode> = 4, hãy xem câu trả lời của delirus bên dưới), giờ đây bạn có thể định cấu hình Xcode để đính kèm trình gỡ lỗi vào ứng dụng sau khi bạn khởi chạy ứng dụng, thay vì khởi chạy ứng dụng thông qua trình gỡ lỗi. Điều này cho phép bạn gỡ lỗi những thứ khác nhau dựa trên trạng thái khởi chạy của ứng dụng của bạn, chẳng hạn như lược đồ URL, bảng điều khiển và thông báo đẩy.

  1. Trong Xcode, hãy tìm trong thanh Nguồn và bên dưới Mục tiêu sẽ có Executables.
  2. Đưa thanh tra cho ứng dụng của bạn trong thực thi.
  3. Nhấp vào tab tab Gỡ lỗi trong trình kiểm tra.
  4. Bỏ chọn "Bắt đầu thực thi sau khi bắt đầu trình gỡ lỗi"
  5. Kiểm tra "Đợi thông báo khởi động / đẩy tiếp theo"

Bây giờ khi bạn nhấp vào gỡ lỗi từ Xcode thay vì khởi chạy ứng dụng, một cửa sổ sẽ hiển thị cho biết nó đang chờ ứng dụng khởi chạy. Sau đó, bạn khởi chạy ứng dụng bình thường trên điện thoại và Xcode đính kèm với nó


37
Tôi biết điều này có thể không phù hợp, nhưng tôi yêu bạn. :)
Dutchie432

17
Khi bạn khởi chạy theo cách này, stdin, stdout, stderr của ứng dụng của bạn không được định tuyến vào bảng điều khiển của GDB, chúng được chỉ ra vị trí của chúng trong một lần khởi chạy ứng dụng thông thường. Bạn có thể thấy NSLog () trong bảng điều khiển hệ thống của thiết bị bằng cách nhìn vào thiết bị trong trình tổ chức.
Louis Gerbarg

1
Bạn đã dạy tôi một số điểm rất có giá trị ở đây. CẢM ƠN BẠN. Tôi đã dành 2 ngày qua để cố gắng gỡ lỗi một cái gì đó mà tôi có thể sửa trong vòng 20 phút sau khi đăng bài của bạn.
Dutchie432

1
@stigi hoạt động trong trình giả lập cho tôi để kiểm tra các lược đồ URL. Tôi đang sử dụng xcode 4.5 nếu vấn đề đó xảy ra
dreyln

1
@dreyln bình luận của tôi là từ năm 2009 :) rất nhiều thứ đã thay đổi kể từ đó. Nhưng cảm ơn cho những người đứng đầu!
stigi

124

Đối với Xcode 4, bạn phải:

  1. Chỉnh sửa lược đồ hoạt động của bạn thông qua menu thả xuống "Lược đồ". ( + <)
  2. Hơn chọn sản phẩm của bạn - 'Chạy MyApp.app' ở bên trái.
  3. Chọn tab 'Thông tin' ở bên phải.
  4. Và cuối cùng chọn tùy chọn "Đợi MyApp.app khởi chạy".

Thêm ở đây trong phần "Tùy chỉnh thực thi trong Trình soạn thảo lược đồ".

EDIT:
Trong trường hợp bạn bỏ lỡ nhật ký trong GDB, hãy xem bình luận của Louis Gerbarg cho câu trả lời của anh ấy.


1
Tôi đang sử dụng Xcode 4.2 cho Lion và mặc dù ứng dụng đang khởi chạy chính xác từ lược đồ URL và việc thực thi trình gỡ lỗi không dừng lại, bảng điều khiển không hiển thị gì. Tui bỏ lỡ điều gì vậy?
LoDani

@LoDani giống nhau ở đây, bạn đã bao giờ hiểu tại sao chưa?
davis

3
@LoDani, Davis G.: Bạn có thấy nhận xét của Louis về câu trả lời được chấp nhận không? stackoverflow.com/questions/1239000/NH Khi được khởi chạy theo cách này, stdin / out / err không được chuyển hướng vào bảng điều khiển.
Ivan Vučica

Cảm ơn bạn, bạn đã cứu ngày của tôi! Cố gắng khắc phục một lỗi chỉ xảy ra khi ứng dụng của tôi được khởi động bởi trình xử lý url.
Eliot

@delirus - Cảm ơn bạn đã cập nhật cái này cho XCode 4.
Dutchie432

112

Đối với XCode 10, 9, 8, 7 & 6:

  1. Chọn Lược đồ trên thanh công cụ (ngay bên trái thiết bị bạn đang gỡ lỗi)
  2. Chọn chỉnh sửa lược đồ
  3. Chọn Chạy trong bảng điều khiển bên trái
  4. Đối với tùy chọn Khởi chạy , chọn Đợi để thực thi được khởi chạy
  5. Đóng Trình chỉnh sửa lược đồ và chạy dự án XCode của bạn

Bây giờ bạn có thể gỡ lỗi khi khởi chạy từ thông báo, url tùy chỉnh hoặc bằng cách chạm vào biểu tượng ứng dụng.


9
Câu trả lời này gây cho tôi rất nhiều rắc rối mặc dù nó thường đưa tôi đi đúng hướng. Bước 3 là một chút sai lệch. Bạn phải làm điều đó, tất nhiên; chọn Chạy trong bảng điều khiển bên trái. Nhưng, cũng cần có một bước 5 với cách diễn đạt khái niệm rất giống nhau: Nhấp vào nút Run của xcode, trước khi mong đợi kết quả ... Ngay từ đầu, nó không hoạt động với tôi, tôi đã xin lời khuyên từ các đồng nghiệp khác ... họ đã hỏi Tôi nếu tôi đã làm điều Run, mà tôi đã trả lời là có, nghĩ đến lựa chọn không. 3 ... Cần phải thực sự, thực sự, thực sự là một bước 5 cho việc này ...
Florin Odagiu

@FlorinOdagiu Cuộc gọi tốt. Đã thêm bước 5. Cảm ơn!
bgolson

Trong trường hợp Xcode khôi phục tab sơ đồ khác, tùy chọn Khởi chạy nằm dưới tab Thông tin.
Nate Whittaker

3
Tôi không nhận được bất kỳ đầu ra nào trong cửa sổ trình gỡ lỗi khi tôi khởi chạy ứng dụng theo cách thủ công.
dvdblk

3

Tôi không làm việc với thông báo đẩy, vì vậy tôi không biết chính xác hoạt động của thông báo đẩy. Tuy nhiên, tôi sẽ thử bắt chước nhận thông báo đẩy bằng cách để phương thức chính của chương trình của bạn giả vờ thông báo được đăng nếu có thể hoặc gọi ứng dụng: didFinishLaunchingWithOptions: UIApplicationDelegate phương thức từ trong ứng dụngDidFinishLaunching.

HTH - Chúc mừng, Daan


Cũng là một ý tưởng tốt, nhưng bắt chước luôn là thứ 2 tốt nhất để gỡ lỗi thật! Chúc mừng mã hóa!
Dutchie432

3

Trong Xcode 6:

  1. kết nối iPhone với Macbook với USB
  2. khởi chạy ứng dụng trên iPhone bằng cách nhấn vào biểu tượng
  3. Trong menu Xcode, Debug> Attach to Process> Chọn ứng dụng của bạn

1
Bạn sẽ không thể gỡ lỗi đường dẫn khởi động quan trọng bằng phương pháp này.
Zorayr

2

Đối với XCode 11 và 10, bạn có thể làm như sau:

  1. Chọn tùy chọn Đề án.
  2. Chọn Chỉnh sửa lược đồ.

  3. Chọn tùy chọn Run từ bảng điều khiển bên trái

  4. Trong phần khởi chạy, chọn chờ thực thi sẽ được khởi chạy , sau đó đóng hộp thoại.

  5. Xây dựng và điều hành dự án. Bây giờ bạn có thể khởi chạy ứng dụng bằng cách nhấn vào biểu tượng ứng dụng hoặc nhấn vào tin nhắn thông báo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.