Cảm ơn bạn đã tham gia tôi cho phần thứ hai của loạt bài hai phần này trên báo cáo dịch vụ tai nạn!
phần đầu tiên giới thiệu bạn với kiến trúc của dịch vụ, bao gồm cả hành lý, symbolication, và phía máy chủ quản lý báo cáo tai nạn. Là tốt, tôi cung cấp một cơ bản tổng quan và so sánh biểu đồ của vụ tai nạn phổ biến nhất báo cáo dịch vụ ngày hôm nay.
trong phần thứ hai này, Tôi sẽ đưa bạn qua các bước để bắt đầu với từng dịch vụ được bảo hiểm trong bài viết cuối: Crashlytics, Crittercism, Bugsense, TestFlight và HockeyApp.
trong suốt bài viết này, bạn sẽ làm việc với một ứng dụng iPhone rất đơn giản chỉ cần có một chế độ xem bảng, như minh hoạ trong hình dưới đây:
mẫu ứng dụng cho hướng dẫn này
Ứng dụng cụ thể này đã được xây dựng để tạo ra sự kiện tai nạn. Đó là tin xấu trong từ thực tế- nhưng cho các mục đích của chúng tôi, nó sẽ phục vụ hoàn hảo!
bắt đầu
các ứng dụng cung cấp một trình đơn bánh pizza với hai chức năng:
kéo mạnh để xóa một bánh pizza từ menu.
di chuyển đến phía dưới để tải thêm pizza.
mã cho ứng dụng pizza của chúng tôi có thể được tìm thấy ở đây.
tải về dự án, sau đó xây dựng và chạy trong trình mô phỏng đấu. Gây ra một vụ tai nạn, trượt để xóa một hàng, hoặc chỉ đơn giản là di chuyển đến dưới cùng của danh sách.
lưu ý: các ứng dụng mẫu được thiết kế để chạy trên iOS6 và ở trên. Nếu bạn đang thử nghiệm trên một thiết bị iOS6 trước, bạn sẽ cần phải vô hiệu hóa AutoLayout.
để làm như vậy, mở SMViewController.xib, hãy chọn thanh tra tập tin, rồi bỏ chọn "Sử dụng AutoLayout", như hình dưới đây:
vô hiệu hóa AutoLayout
Bây giờ khi ứng dụng của bạn treo, bạn sẽ thực sự có nghĩa là cho nó xảy ra! :]
Mặc dù tôi biết nó là giết chết bạn không để sửa chữa các lỗi, không! Bạn muốn ứng dụng để sụp đổ một công cụ báo cáo có thể giúp bạn xác định nguồn gốc của vấn đề.
dưới đây là một danh sách các tai nạn báo cáo dịch vụ mà tôi sẽ bao gồm trong bài viết này:
Crashlytics (www.crashlytics.com)
Crittercism (www.crittercism.com)
Bugsense (www.bugsense.com)
TestFlight (www.testflightapp.com)
HockeyApp (www.hockeyapp.net)
ghi nhớ là có một thời gian chờ đợi cho Crashlytics nơi nó có thể mất vài ngày cho Crashlytics để liên lạc với bạn. Tuy nhiên, nếu nó mất một thời gian dài sau đó không có sợ hãi bởi vì Crashlytics đã hào phóng cung cấp RayWenderlich.com với một liên kết đặc biệt mà sẽ giúp bạn nhảy hàng đợi. Thử và xem nếu bạn nhận được trong VIP cửa một chút nhanh hơn! :]
Trước khi tiếp tục, hãy chắc chắn rằng bạn tạo một tài khoản với mỗi người trong các vụ đụng báo cáo khuôn khổ và tải về mỗi người trong vụ tai nạn, báo cáo SDKs.
kể từ khi một số tai nạn công cụ báo cáo yêu cầu một định danh duy nhất hoạt động chính xác, hãy chắc chắn để thay đổi dự án mẫu bó nhận dạng một cái gì đó của thiết kế của riêng bạn, như hình dưới đây:
Thay đổi định danh bó
một khi bạn có một tập hợp danh tùy chỉnh gói, hãy chắc chắn để tạo một bản sao của dự án. Mỗi khung có hướng dẫn cài đặt riêng của họ vì vậy nó là tốt nhất để sử dụng một dự án "vanilla" với mỗi giới thiệu.
để kiểm tra sự cố báo cáo khung, bạn sẽ cần để chạy các ứng dụng trên một thiết bị thực sự. Điều này đòi hỏi một tài khoản phát triển Apple cũng như một thiết bị được cung cấp. Nếu bạn chưa quen với iOS phát triển, bạn có thể tìm hiểu làm thế nào để tạo ra một nhà phát triển tài khoản, cũng như cung cấp thiết bị của riêng bạn trong hướng dẫn này.
lưu ý: trong hướng dẫn này, không chạy các ứng dụng trên điện thoại thông qua Xcode. Xcode sẽ ngăn chặn vụ tai nạn, sau đó mở trình bao gỡ lỗi lldb như bình thường. Bạn sẽ không nhận được bất kỳ báo cáo sự cố nếu Xcode chặn sự kiện tai nạn!
để làm cho tất cả các ví dụ dưới đây làm việc, bạn cần phải xây dựng và chạy các ứng dụng, sau đó nhấp vào nút dừng trên Xcode. Bằng cách này bạn sẽ có phiên bản mới nhất cài đặt trên các thiết bị.
một khi đã xong, bạn có thể khởi động các ứng dụng trên thiết bị chính nó, và sau đó sụp đổ nó tất cả các bạn muốn!
Tất cả các tai nạn trên điện thoại iOS sẽ được đánh bắt và gửi đến các thành phần máy chủ của các dịch vụ mà bạn đã tích hợp vào báo cáo sự cố về ứng dụng được thường gửi đến hệ phục vụ lần sau khi bạn bắt đầu các ứng dụng, do đó, các bước để làm theo để tạo ra một báo cáo tai nạn trên máy chủ như sau:
xây dựng và chạy trên Xcode.
nhấn nút dừng.
chạy các ứng dụng trên của bạn thiết bị iOS.
làm cho tai nạn app.
Chạy các ứng dụng một lần nữa.
là tốt, đảm bảo rằng thiết bị đã kết nối thông qua wi-fi hoặc 3G để có báo cáo sự cố có thể được gửi. Bây giờ, hãy nhận rơi! :]
Crashlytics
gần đây đã mua bởi Twitter, Crashlytics là khá nổi tiếng trong cộng đồng iOS. Nó được sử dụng bởi các công ty nổi tiếng như đường dẫn và Yammer. Nó là một dịch vụ ngăn xếp đầy đủ, có nghĩa là rằng khuôn khổ cung cấp cả hai phía khách hàng và phía máy chủ phần.
lúc này, Crashlytics hỗ trợ chỉ iOS, mặc dù các trang web cho thấy rằng hỗ trợ Android là đến sớm.
Crashlytics — cấu hình dự án
một khi bạn đã đăng nhập vào Crashlytics, bạn sẽ được nhắc để tải về một ứng dụng Mac OSX sẽ giúp bạn thiết lập dự án đầu tiên của bạn.
để tiết kiệm thời gian, đây là liên kết trực tiếp đến các ứng dụng Mac. Khi chạy, ứng dụng sẽ xuất hiện trong thanh trình đơn trên bên phải như hình dưới đây:
Crashlytics trong thanh trình đơn
Click vào biểu tượng và nhập thông tin đăng nhập của bạn khi được nhắc. Nếu đây là lần đầu tiên bạn sử dụng Crashlytics, bạn sẽ thấy một danh sách sản phẩm nào của ứng dụng và tên tài khoản của bạn ở phía dưới, như được hiển thị dưới đây:
Crashlytics sau khi đăng nhập
Click vào nút ứng dụng mới ở bên phải. Điều này sẽ cho bạn danh sách các dự án gần đây đã mở trong Xcode, như vậy:
các dự án gần đây trong Crashlytics
nếu ứng dụng của bạn không được liệt kê, bạn sẽ cần phải thực hiện theo các bước sau:
nhấp vào nút "Khác" ở phía dưới để mở một cửa sổ Finder.
chọn tập tin .xcodeproj và nhấp vào "Mở".
chọn dự án của bạn từ danh sách theo Crashlytics và nhấn "Tiếp theo".
Điều này sẽ tự động mở các dự án trong Xcode và yêu cầu bạn phải thêm một kịch bản để giai đoạn xây dựng. Từ thời điểm này trở đi, các ứng dụng Crashlytics sẽ hướng dẫn bạn qua từng bước của quá trình cài đặt. Theo các chỉ dẫn, và khi bạn đã hoàn tất, tiếp tục với bước tiếp theo của hướng dẫn.
Crashlytics — chạy các ứng dụng
bây giờ mà bạn đã hoàn tất phần cài đặt, bạn đã sẵn sàng để thử Crashlytics. Chạy các ứng dụng trên điện thoại iOS, kéo mạnh vào một tế bào và bấm vào xóa. Các ứng dụng sẽ sụp đổ, như mong đợi.
khởi động lại ứng dụng và chờ đợi về tí để đảm bảo rằng báo cáo tai nạn đã tuyên truyền đến máy chủ Crashlytics. Sau đó mất một peek tại các trang web để xem nếu báo cáo tai nạn là sống. Bạn cũng sẽ nhận được một email thông báo về một vụ tai nạn mới trong ứng dụng của bạn.
vấn đề mới trên back-end sẽ giống như sau:
lần đầu tiên phát hành ngày Crashlytics
Thoạt nhìn, bạn sẽ thấy dòng mã (SMViewController.m tại dòng 80), tội lỗi, số lượng người dùng bị ảnh hưởng, và số lần xuất hiện của tai nạn này. Khởi động các ứng dụng và làm cho nó đụng một lần nữa. Bây giờ bạn sẽ thấy một số tai nạn của cùng một vấn đề tăng.
bấm vào dòng của vấn đề đó và bạn sẽ thấy báo cáo mở rộng, như hình dưới đây:
chi tiết xem báo cáo về Crashlytics
nhìn vào Nhật ký của tai nạn, nó là rõ ràng rằng bạn cần phải loại bỏ một tế bào với việc xoá yếu tố tương ứng trong các mảng populating chế độ xem bảng cân. Để khắc phục lỗi này, mở SMViewController.m và sửa đổi tableView:commitEditingStyle:forRowAtIndexPath: giống như mã sau đây:
-(vô hiệu) tableView:(UITableView *) tableView commitEditingStyle: (UITableViewCellEditingStyle) editingStyle forRowAtIndexPath:(NSIndexPath *) indexPath
{
nếu (editingStyle == UITableViewCellEditingStyleDelete) {
[pizzaOrder removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
sau khi bạn đã làm xong, xây dựng và chạy, đẩy các ứng dụng vào điện thoại, và kiểm tra các ứng dụng một lần nữa. Một khi bạn đã xác định rằng bạn đã cố định các vấn đề, trở về báo cáo tai nạn Crashlytics sau đó thiết lập tình trạng vấn đề như đóng cửa, như hình dưới đây:
Crashlytics đóng lỗi
vào thứ hai lỗi!
Crashlytics cho phép bạn thêm các báo cáo đăng nhập vào mã của bạn để giúp theo dõi xuống lỗi. Mở SMViewController.m và thêm các câu sau đây nhập khẩu đầu file:
#import
tiếp theo, sửa đổi tableView:willDisplayCell:forRowAtIndexPath: trong SMViewController.m như sau.
-(vô hiệu) tableView:(UITableView *) tableView willDisplayCell:(UITableViewCell *) tế bào forRowAtIndexPath:(NSIndexPath *) indexPath {
nếu (indexPath.row == pizzaOrder.count-1) {
CLS_LOG (@"gửi thông báo");
[Crashlytics setIntValue:pizzaOrder.count forKey:@"numberOfPizzas"];
[[NSNotificationCenter defaultCenter] postNotificationName:LOAD_MORE_NOTIFICATION
đối tượng: nil];
}
}
CLS_LOG là một vĩ mô cung cấp bởi khuôn khổ Crashlytics cho phép đăng nhập từ xa. Trong xây dựng gỡ lỗi, nó hoạt động giống như NSLog, đi qua dây trên bàn điều khiển. Cho phát hành bản xây dựng, các bản ghi được gửi cùng với báo cáo sự cố và tối ưu hóa để càng nhanh càng tốt. Trong thực tế, tài liệu Crashlytics' tự hào có một cải tiến 10 x trên bằng cách sử dụng thường xuyên NSLog() gọi.
Phương pháp cũng sử dụng đăng nhập tùy chỉnh cho phép bạn lưu trữ thông tin dưới dạng khóa-giá trị. Hãy suy nghĩ về điều này như là một loại NSDictionary trên máy chủ web: bạn đặt các giá trị của các phím trong mã, và bạn có thể đọc các giá trị trên hệ phục vụ khi săn bắn xuống một lỗi.
trong trường hợp này bạn đang sử dụng setIntValue:forKey, nhưng có những phương pháp khác có sẵn để lưu trữ các đối tượng, phao nổi và phép toán luận là tốt. Bạn có thể tìm thêm chi tiết về tuỳ chỉnh đăng nhập Crashlytics knowledgebase.
chạy ứng dụng trong Xcode và sau đó ngừng nó. Chạy nó một lần nữa trên điện thoại, hãy di chuyển đến dưới cùng, cho phép các ứng dụng sụp đổ, và khởi động lại ứng dụng sau khi vụ tai nạn.
vấn đề mới sẽ giống như thế này trên trang tổng quan Crashlytics:
thứ hai vấn đề trên Crashlytics
Nó là rõ ràng rằng điều này là do thiếu các phương pháp định nghĩa loadMore ở SMWebEngine.m. Nếu bạn đã thêm định nghĩa cho phương pháp này, và tai nạn sẽ biến mất. Mặc dù đó không phải là điểm của hướng dẫn này, vì vậy không lo lắng về thực sự thực hiện nó!
Noti
đang được dịch, vui lòng đợi..
