Lỗi: _handleNonLaunchSpecificActions trong iOS9


157

Tôi đang gặp lỗi sau trên iOS 9:

    -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }

Có ai khác gặp phải lỗi này hay nó có liên quan? Chuyện gì thế?


6
Vẫn còn trong phiên bản beta của iOS9. Sẽ là tốt để hiểu vấn đề là gì và ý nghĩa của nó.
Roddy

11
Tôi gặp vấn đề tương tự khi khóa iPhone khi ứng dụng của tôi đang chạy. iOS 9.0, XCode 7.0.
NKorotkov

5
Có vẻ như lỗi của Apple vì một dự án hoàn toàn mới được tạo bằng Xcode 7 cũng có vấn đề chính xác này.
Hongfei

12
Có bất cứ điều gì của bất kỳ công đức nào từng được thảo luận trên các diễn đàn nhà phát triển của Apple? Có vẻ như bất kỳ loại lỗi nào đã bị đóng với "tại sao bạn muốn làm điều đó nếu Apple không muốn bạn?" Là điểm dừng cuối cùng của sự tuyệt vọng khi tìm cách giải quyết vấn đề.
Roddy

11
Tham khảo câu hỏi stackoverflow.com/questions/32658037/ - điều này thảo luận về cùng một vấn đề.
iPhone Guy

Câu trả lời:


10

Không có gì sai với mã của bạn. Đây là một thông điệp đăng nhập nội bộ cho Apple và bạn nên gửi một radar về nó.

Có hai gợi ý cho thấy đây có lẽ là mã của Apple:

  1. Dấu gạch dưới dẫn đầu tên phương thức _handleNonLaunchSpecificActions:forScene:withTransitionContext:completionlà một quy ước chỉ ra rằng phương thức đó là riêng tư / nội bộ đối với lớp mà nó đã khai báo. (Xem bình luận này .)

  2. Thật hợp lý khi đoán rằng tiền tố hai chữ cái FBSSceneSnapshotActionlà viết tắt của FrontBoard, theo Rene Ritchie trong " danh sách mong muốn của iOS 9: Chế độ khách" là một phần của cả gia đình phần mềm liên quan đến việc khởi chạy ứng dụng:

Với iOS 8, Apple đã tái cấu trúc trình quản lý hệ thống của mình, SpringBoard, thành một số thành phần nhỏ hơn, tập trung hơn. Ngoài BackBoard, đã được tạo ra để xử lý các tác vụ nền, họ đã thêm Frontboard cho các tác vụ nền trước. Họ cũng đã thêm PreBoard để xử lý màn hình Khóa trong các điều kiện an toàn, được mã hóa. [...]

Tôi không biết BStiền tố trong đó BSSettingsdùng để làm gì, nhưng một phân tích về thông điệp tường trình này sẽ chỉ ra rằng đó không phải là bất cứ điều gì bạn đã làm và bạn nên nộp một radar với các bước để tạo lại thông điệp đăng nhập.

Nếu bạn muốn thử và lấy một dấu vết ngăn xếp, bạn có thể triển khai danh mục được liên kết đến đây . Một số người sẽ cho rằng việc ghi đè API riêng là một ý tưởng tồi, nhưng trong trường hợp này, việc tiêm tạm thời để lấy dấu vết ngăn xếp không thể quá nguy hại.

BIÊN TẬP:

Nhưng, chúng tôi vẫn muốn biết hành động này là gì. Vì vậy, tôi đặt một điểm dừng -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]và bắt đầu in ra các giá trị đăng ký và tìm thấy một lớp được gọi là FBSceneImplcó cả đống thông tin về ứng dụng của tôi:

Bối cảnh

Chúng tôi có thể tìm ra phương thức riêng nào được gọi tiếp theo (được lưu trữ trong bộ đếm chương trình, đăng ký 15.)

Chương trình truy cập

Tôi đã cố gắng tìm các FBSceneSnapshotActiontham chiếu chưa xử lý trong nhật ký, nhưng không có xúc xắc. Sau đó, tôi phân lớp UIApplication và overrode _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion. Bây giờ tôi đã có thể có được hành động trực tiếp, nhưng vẫn vậy, chúng tôi không biết nó là gì.

Sau đó, tôi nhìn vào FBSceneSnapshotAction một lần nữa. Hóa ra nó có một siêu lớp gọi là BSAction.

Sau đó, tôi đã viết một công cụ tương tự như RuntimeBrowser và tra cứu tất cả các lớp con của BSAction. Nó chỉ ra rằng có khá nhiều danh sách của họ:

Danh sách hành động

Hai tên phương thức chúng ta có (một từ nhật ký và một từ bộ đếm chương trình trên thiết bị) chỉ ra rằng các hành động này được sử dụng dưới mui xe để truyền các hành động xung quanh hệ thống.

Một số hành động có thể được gửi đến các cuộc gọi lại của đại biểu ứng dụng, trong khi những hành động khác được xử lý nội bộ.

Điều đang xảy ra ở đây là có một hành động không được xử lý chính xác và hệ thống đang chú ý đến nó. Chúng tôi không nên nhìn thấy nó, rõ ràng.


Xin lỗi nhưng đây không thực sự là một câu trả lời; thêm một bình luận sau đây. Mã này rất nhiều lỗi nội bộ của Apple, đây không phải là vấn đề. Đoán không thực sự là một độ phân giải và lời giải thích iOS8 được cung cấp không liên quan vì lỗi chỉ xuất hiện trong iOS9 (điều này không xảy ra trong iOS8).
Roddy

2
Câu trả lời cho "có gì sai" là có gì đó bên trong SpringBoard đã không xử lý một hành động chụp nhanh. Đó là những gì thông điệp đăng nhập nói. Có rất ít người khác ngoài Apple có thể nói với bạn.
Moshe

Thực tế là thông báo đăng nhập này chưa xuất hiện trên iOS 8 không thực sự phù hợp. Đó là một thông điệp đăng nhập đi lạc cần được gửi với radar.
Moshe

Tôi đã nhận thấy sáng nay rằng ai đó đã cập nhật câu hỏi của tôi và đó không phải là những gì tôi đã hỏi ban đầu, đó là lý do tại sao có một chút ngắt kết nối. Thậm chí không biết ai có thể cập nhật câu hỏi.
Roddy

Để trả lời câu hỏi ban đầu của bạn: không có hàm ý nào khác ngoài việc vui lòng gửi radar.
Moshe
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.