Thanks for joining me for the second part of this two-part series on c dịch - Thanks for joining me for the second part of this two-part series on c Việt làm thế nào để nói

Thanks for joining me for the secon

Thanks for joining me for the second part of this two-part series on crash reporting services!
The first part introduced you to the architecture of crash reporting services, including storage, symbolication, and server-side management. As well, I provided a basic overview and comparison chart of the most popular crash reporting services today.
In this second part, I’ll take you through the steps to get started with each service covered in the last article: Crashlytics, Crittercism, Bugsense, TestFlight and HockeyApp.
Throughout this article, you will work with a very simple iPhone application that just contains a table view, as shown in the screenshot below:
The sample App for this Tutorial
This particular app has been constructed to generate crash events. That’s bad news in the real word — but for our purposes, it will serve perfectly!
Getting Started
The app provides a pizza menu with two functions:
Swipe to delete a pizza from the menu.
Scroll to the bottom to load more pizzas.
The code for our pizza application can be found here.
Download the project, then build and run in the simulator. To cause a crash, swipe to delete a row, or simply scroll to the bottom of the list.
Note: The sample app is designed to run on iOS6 and above. If you are testing on an pre iOS6 device, you will need to disable AutoLayout.
To do so, open SMViewController.xib, select the File Inspector, then uncheck “Use AutoLayout”, as shown below:
Disable AutoLayout
Now when your app crashes, you’ll really mean for it to happen! :]
Although I know it’s killing you not to fix the bugs, don’t! You want the application to crash so that a reporting tool can help you to identify the source of the problem.
Here are a list of the crash reporting services that I’ll cover in this article:
Crashlytics (www.crashlytics.com)
Crittercism (www.crittercism.com)
Bugsense (www.bugsense.com)
TestFlight (www.testflightapp.com)
HockeyApp (www.hockeyapp.net)
Keep in mind that there is a waiting period for Crashlytics where it may take several days for Crashlytics to contact you. However, if it does take a long time then no fear because Crashlytics has generously provided RayWenderlich.com with a special link that will help you jump the queue. Try that and see if you get in the VIP door a little faster! :]
Before continuing, make sure you create an account with each of the crash reporting frameworks and download each of the crash reporting SDKs.
Since some crash reporting tools require a unique identifier to function correctly, make sure to change the sample project’s bundle identifier to something of your own design, as shown below:
Change bundle identifier
Once you have a set a custom bundle identifier, make sure to make a backup copy of the project. Each framework has their own installation instructions so it is best to use a “vanilla” project with each demo.
In order to test out these crash reporting frameworks, you will need to run the app on a real device. This requires an Apple developer account as well as a provisioned device. If you are a new to iOS development, you can learn how to create a developer account, as well as provisioning your own device in this tutorial.
Note: During this tutorial, do not run the application on the device through Xcode. Xcode will intercept the crash, then open the lldb debugger shell as usual. You won’t get any crash reports if Xcode intercepts the crash event!
To make all the examples below work, you have to build and run the application, then click the stop button on Xcode. This way you will have the latest version installed on the the device.
Once that is done, you can launch the app on the device itself, and then crash it all you want!
All the crashes on your iOS device will be caught and sent to the server component of the service that you have integrated into the app. Crash reports are usually sent to the server the next time you start the app, so the steps to follow to generate a crash report on the server are as follows:
Build and run on Xcode.
Press the stop button.
Run the app on your iOS device.
Make the app crash.
Run the app again.
As well, make sure the device has connectivity via wi-fi or 3G so that the crash reports can be sent. Now, let’s get crashing! :]
Crashlytics
Recently bought by Twitter, Crashlytics is pretty famous in the iOS community. It’s used by well-known companies such as Path and Yammer. It is a full-stack service, meaning that the framework provides both client-side and server-side parts.
At the moment, Crashlytics supports only iOS, although the website does indicate that Android support is coming soon.
Crashlytics — Configuring the Project
Once you have logged into Crashlytics, you will be prompted to download a Mac OSX application that will help you to set up your first project.
To save you time, here’s the direct link to the Mac application. When running, the application appears in the menu bar on the top right as shown below:
Crashlytics in the menu bar
Click on the icon and enter your credentials when prompted. If this is your first time using Crashlytics, you should see an empty list of applications and your account name at the bottom, as shown below:
Crashlytics after login
Click on the New App button on the right. This will show you the list of recent projects opened in Xcode, like so:
Recent Projects in Crashlytics
If your app is not listed, you’ll need to perform the following steps:
Click the “Other” button at the bottom to open a Finder window.
Select the .xcodeproj file and click “Open”.
Select your project from the list in Crashlytics and hit “Next”.
This will automatically open the project in Xcode and ask you to add a script to the Build Phase. From this point onward, the Crashlytics app will walk you through each step of installation process. Follow the instructions, and when you’re done, continue with the next step of the tutorial.
Crashlytics — Running the App
Now that you’ve completed the setup portion, you are now ready to try out Crashlytics. Run the application on your iOS device, swipe on a cell and tap Delete. The application will crash, as expected.
Restart the app and wait about a minute to make sure the crash report has propagated to the Crashlytics server. Then take a peek at the website to see if the crash report is live. You should also receive an email notification about a new crash in your application.
The new issue on the back-end should look like the following:
First issue on Crashlytics
At first glance, you will see the guilty line of code (SMViewController.m at line 80), the number of users affected, and the number of occurrences of this crash. Launch the app and make it crash again. You’ll now see the number of crashes of the same issue increase.
Click the row of that issue and you’ll see the extended report, as shown below:
Detailed view of the report on Crashlytics
Looking at the crash log, it’s clear that you need to counterbalance the deletion of a cell with the deletion of its corresponding element in the array populating the table view. To fix this bug, open SMViewController.m and modify tableView:commitEditingStyle:forRowAtIndexPath: to look like the following code:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[pizzaOrder removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
After you are done, build and run, push the app to your device, and test the application again. Once you have determined that you have fixed the issue, return to the Crashlytics crash report then set the issue status as closed, as shown below:
Crashlytics close bug
On to the second bug!
Crashlytics allows you to add log statements to your code to help track down bugs. Open SMViewController.m and add the following import statement at the top of the file:
#import
Next, modify tableView:willDisplayCell:forRowAtIndexPath: in SMViewController.m as follows.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == pizzaOrder.count-1) {
CLS_LOG(@"posting notification");
[Crashlytics setIntValue:pizzaOrder.count forKey:@"numberOfPizzas"];
[[NSNotificationCenter defaultCenter] postNotificationName:LOAD_MORE_NOTIFICATION
object:nil];
}
}
CLS_LOG is a macro provided by the Crashlytics framework that enables remote logging. In debug builds, it acts just like NSLog, passing strings to the console. For release builds, the log is sent along with the crash reports and optimized to be as fast as possible. In fact, Crashlytics’ own documentation boasts a 10x improvement over using regular NSLog() calls.
The method also uses custom logging which allows you to store information in key-value form. Think of this as a type of NSDictionary on the web server: you set the values of keys in the code, and you can read the values on the server when hunting down a bug.
In this case you are using setIntValue:forKey, but there are other methods available to store objects, floats and booleans as well. You can find more details about custom logging in the Crashlytics knowledgebase.
Run the application in Xcode and then stop it. Run it again on your device, scroll to the bottom, allow the app to crash, and restart the application after the crash.
The new issue will look like this on the Crashlytics dashboard:
Second issue on Crashlytics
It is clear that this is due to the lack of the method definition loadMore in SMWebEngine.m. If you were to add the definition for this method, and the crash would disappear. Although that’s not the point of this tutorial, so don’t worry about actually implementing it!
Noti
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
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..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Nhờ tham gia tôi cho phần thứ hai của loạt bài hai phần về dịch vụ báo cáo tai nạn!
Phần đầu tiên giới thiệu cho bạn kiến trúc của dịch vụ báo cáo tai nạn, bao gồm lưu trữ, symbolication, và quản lý phía máy chủ. Là tốt, tôi cung cấp một cái nhìn tổng quan cơ bản và biểu đồ so sánh của vụ tai nạn phổ biến nhất dịch vụ báo cáo 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 mỗi dịch vụ được đề cập trong bài viết trước: 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 mà chỉ cần có một cái nhìn bảng, như thể hiện trong hình dưới đây:
Các ứng dụng mẫu cho Hướng dẫn này
ứng dụng đặc biệt này đã được xây dựng để tạo ra các sự kiện sụp đổ. Đó là một tin xấu trong từ thực tế - nhưng mục đích của chúng tôi, nó sẽ phục vụ hoàn hảo!
Bắt đầu
Ứng dụng cung cấp một trình đơn bánh pizza với hai chức năng:
Swipe để xóa một bánh pizza từ menu.
Di chuyển đến phía dưới để tải hơn pizza.
Mã cho các ứng dụng bánh 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. . Gây ra một vụ tai nạn, swipe để xóa một hàng, hoặc đơ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 trở lê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, chọn File thanh tra, sau đó bỏ chọn "Sử dụng AutoLayout", như hình dưới đây:
Vô hiệu hoá AutoLayout
Bây giờ khi tai nạn ứng dụng của bạn, bạn sẽ thực sự có nghĩa là cho nó xảy ra! :]
Mặc dù tôi biết nó 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 dịch vụ báo cáo tai nạn mà tôi sẽ đề cập 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)
Hãy nhớ rằng có một thời gian chờ đợi cho Crashlytics nơi có thể mất vài ngày để 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 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 sẽ giúp bạn nhảy hàng đợi. Hãy thử và xem nếu bạn nhận được trong cửa VIP nhanh hơn một chút! :]
Trước khi tiếp tục, chắc chắn rằng bạn tạo một tài khoản với nhau trong những khuôn khổ báo cáo tai nạn và tải về mỗi vụ tai nạn báo cáo SDK.
Vì một số công cụ báo cáo tai nạn đòi hỏi một định danh duy nhất để hoạt động chính xác, hãy chắc chắn để thay đổi nhận dạng bó mẫu dự án để một cái gì đó của thiết kế riêng của bạn, như hình dưới đây:
Thay đổi nhận dạng gói
Một khi bạn có một bộ định danh một gói tùy chỉnh, hãy chắc chắn để thực hiện một bản sao lưu của dự án. Mỗi khung có hướng dẫn cài đặt của mình vì vậy tốt nhất để sử dụng một "vanilla" dự án với mỗi demo.
Để kiểm tra các khuôn khổ báo cáo tai nạn, bạn sẽ cần phải chạy các ứng dụng trên một thiết bị thực. Điều này đòi hỏi một tài khoản nhà phát triển của Apple cũng như một thiết bị được cung cấp. Nếu bạn là người mới để phát triển iOS, bạn có thể tìm hiểu làm thế nào để tạo ra một tài khoản nhà phát triển, cũng như trích lập dự phòng 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 thiết bị thông qua Xcode. Xcode sẽ đánh chặn các vụ tai nạn, sau đó mở vỏ gỡ rố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 các sự kiện sụp đổ!
Để làm cho tất cả các ví dụ dưới đây làm việc, bạn phải xây dựng và chạy các ứng dụng, sau đó nhấn 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 cài đặt trên thiết bị.
Khi đã xong, bạn có thể khởi chạy các ứng dụng trên các thiết bị chính nó, và sau đó sụp đổ tất cả bạn muốn!
Tất cả các tai nạn trên thiết bị iOS của bạn sẽ bị bắt và gửi đến thành phần máy chủ của dịch vụ mà bạn đã tích hợp vào các ứng dụng. Báo cáo sự cố thường được gửi đến máy chủ lần sau khi bạn bắt đầu ứng dụng, vì vậy 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 iOS của bạn thiết bị.
Thực hiện các vụ tai nạn ứng dụng.
chạy các ứng dụng một lần nữa.
Đồng thời, đảm bảo rằng các thiết bị có kết nối thông qua Wi-Fi hoặc 3G để các báo cáo sự cố có thể được gửi đi. Bây giờ, chúng ta hãy đâm! :]
Crashlytics
Gần đây mua 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ụ đầy đủ-stack, có nghĩa là khuôn khổ cung cấp cả hai phía khách hàng và các bộ phận phía máy chủ.
Tại thời điểm này, Crashlytics chỉ hỗ trợ iOS, mặc dù các trang web không chỉ ra rằng hỗ trợ Android sẽ sớm ra mắt.
Crashlytics - Cấu hình dự án
khi bạn đã đăng nhập vào Crashlytics, bạn sẽ được nhắc nhở để 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.
Để giúp bạn tiết kiệm thời gian, ở đây là các liên kết trực tiếp đến các ứng dụng Mac. Khi chạy, ứng dụng xuất hiện trên thanh menu phía trên bên phải như hình dưới đây:
Crashlytics trên thanh menu
Nhấp vào biểu tượng và nhập thông tin 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 trống của các ứng dụng và tên tài khoản của bạn ở phía dưới, như hình dưới đây:
Crashlytics sau khi đăng nhập
Nhấn vào nút New App bên phải. Điều này sẽ cho bạn thấy 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 các bước sau:
Nhấp vào nút "khác" ở phía dưới để mở một Finder cửa sổ.
Chọn tập tin xcodeproj. và click "Open".
Chọn dự án của bạn từ danh sách trong Crashlytics và nhấn "Next".
Điều này sẽ tự động mở các dự án trong Xcode và yêu cầu bạn 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. Thực hiện theo các hướng dẫn, và khi bạn đang thực hiện, tiếp tục với bước tiếp theo của hướng dẫn.
Crashlytics - Chạy ứng dụng
Bây giờ bạn đã hoàn thành phần cài đặt, bạn đã sẵn sàng để thử Crashlytics. Chạy các ứng dụng trên thiết bị iOS, swipe của bạn trên một tế bào và bấm Delete. Ứng dụng này sẽ sụp đổ, như mong đợi.
Khởi động lại ứng dụng và chờ khoảng một phút để chắc chắn rằng các báo cáo tai nạn đã tuyên truyền đến máy chủ Crashlytics. Sau đó, phải mất một peek tại các trang web để xem báo cáo tai nạn là trực tiếp. 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 về back-end sẽ giống như sau:
vấn đề đầu tiên trên Crashlytics
Thoạt nhìn, bạn sẽ thấy những dòng có lỗi mã (SMViewController.m tại dòng 80), số lượng người dùng bị ảnh hưởng, và số lần xuất hiện của vụ tai nạn này. Khởi động ứng dụng và làm cho nó sụp đổ một lần nữa. Bây giờ bạn sẽ nhìn thấy số lượng tai nạn của sự gia tăng cùng một vấn đề.
click chuột vào dòng về vấn đề đó và bạn sẽ thấy các báo cáo mở rộng, như hình dưới đây:
Xem chi tiết theo báo cáo trên Crashlytics
Nhìn vào các bản ghi vụ tai nạn, thì rõ ràng rằng bạn cần phải làm đối trọng với việc xóa của một tế bào với việc xóa phần tử tương ứng của nó trong mảng populating xem bảng. Để khắc phục lỗi, mở SMViewController.m này và sửa đổi tableView: commitEditingStyle: forRowAtIndexPath: trông giống như đoạn mã sau:
- (void) 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 cho thiết bị của bạn, và kiểm tra ứng dụng một lần nữa. Một khi bạn đã xác định rằng bạn đã cố định vấn đề này, trở về báo cáo tai nạn Crashlytics sau đó thiết lập trạng thái vấn đề như đóng cửa, như hình dưới đây:
Crashlytics lỗi gần
Trên các lỗi thứ hai!
Crashlytics cho phép bạn thêm báo cáo đăng nhập vào mã của bạn để giúp theo dõi lỗi. Mở SMViewController.m và thêm lệnh nhập khẩu sau đây ở trên cùng của tập tin:
# nhập khẩu
Tiếp theo, thay đổi tableView: willDisplayCell: forRowAtIndexPath: trong SMViewController.m như sau.
- (void) tableView: (UITableView *) tableView willDisplayCell: (UITableViewCell *) tế bào forRowAtIndexPath: (NSIndexPath *) indexPath {
if (indexPath.row == pizzaOrder . count-1) {
CLS_LOG (@ "đăng 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ổ cho phép khai thác gỗ Crashlytics từ xa. Trong gỡ lỗi xây dựng, nó hoạt động giống như NSLog, đi qua dây để giao diện điều khiển. Cho phát hành xây dựng, đăng nhập được gửi cùng với các báo cáo sự cố và tối ưu hóa để chạy càng nhanh càng tốt. Trong thực tế, tài liệu riêng Crashlytics 'tự hào có một cải tiến 10x trên sử dụng thường xuyên NSLog () gọi.
Phương pháp này cũng sử dụng đăng nhập tùy chỉnh mà cho phép bạn lưu trữ thông tin dưới dạng giá trị quan trọng. Hãy suy nghĩ về điều này như một loại NSDictionary trên máy chủ web: bạn thiết lập các giá trị của các phím trong các mã, và bạn có thể đọc các giá trị trên máy chủ khi săn lù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à các phép toán luận là tốt. Bạn có thể tìm thêm chi tiết về tùy chỉnh khai thác gỗ trong cơ sở kiến thức Crashlytics.
Chạy ứng dụng trong Xcode và sau đó ngăn chặn nó. Chạy lại nó trên thiết bị của bạn, di chuyển đến phía dưới, 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.
Các vấn đề mới sẽ như thế này trên bảng điều khiển Crashlytics:
vấn đề thứ hai trên Crashlytics
Rõ ràng là điều này là do thiếu các loadMore định nghĩa phương pháp trong SMWebEngine.m. Nếu bạn đã thêm định nghĩa cho phương pháp này, và 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, do đó, không lo lắng về thực sự thực hiện nó!
Noti
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: