flutter-moum / flutter_hardware_buttons

Flutter plugin for detecting all hardware buttons
MIT License
37 stars 46 forks source link

[iOS] App rejected because access Private API com.apple.springboard.lockcomplete #48

Open arifcebe opened 4 years ago

arifcebe commented 4 years ago

Hai,, I just success use this plugin, with functionality in android and iOS. But when i upload my iOS app to Appstore, this app was rejected. This message from Apple reviewer.

========= Guideline 2.5.1 - Performance - Software Requirements

Your app uses or references the following non-public APIs:

com.apple.springboard.lockcomplete

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

Next Steps

If you are using third-party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries' source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool can output a list of the methods that the library calls and "otool -ov" will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the "nm" tool to verify if any third-party libraries are calling these APIs.

Resources

If there are no alternatives for providing the functionality your app requires, you can use Feedback Assistant to submit an enhancement request.

========

How can i solve this? can i change this options for calling package?

Thanks

theboni commented 4 years ago

Could you solve this issue? I have the same problem

arifcebe commented 4 years ago

@theboni Yes i've done with this issue. You can open class SingleHomeAndLockObserver.swift, find 2 method:

  1. registerObserver() you can commented this logic
    //        CFNotificationCenterAddObserver(
    //            CFNotificationCenterGetDarwinNotifyCenter(),
    //            Unmanaged.passUnretained(self).toOpaque(),
    //            displayStatusChangedCallback,
    //            "com.apple.springboard.lockcomplete" as CFString,
    //            nil,
    //            .deliverImmediately)
  2. displayStatusChanged(_ lockState: String) just comment this logic
    //        if lockState == "com.apple.springboard.lockcomplete" {
    //            homeTask?.cancel()
    //            lockListener?.onEvent()
    //        }

    Try to build and upload to appstore. I've just succeed use this tricky.