Giter Site home page Giter Site logo

rxpermission's Introduction

RxPermission

CocoaPods Swift 3.0.x License Platform

RxSwift bindings for Permission API that helps you with Permissions in iOS.

Installation

RxPermission is available through CocoaPods. I can't guarantee it is working correctly on Carthage, so if you want to help I'm happy to introduce it with your PR.

RxPermission should work with every Swift release >= 2.2, for detailed instructions check info below.

Swift 3.0

If you want to use RxPermission with Swift 3.0 you have to specify which Permission you want to install/use because of new Apple policy about permission. For example if you want to access the Camera and the Notifications you define the following:

pod 'RxPermission/Camera'
pod 'RxPermission/Notifications'

Available specs:

pod 'RxPermission/AddressBook'
pod 'RxPermission/Bluetooth'
pod 'RxPermission/Camera'
pod 'RxPermission/Contacts'
pod 'RxPermission/Events'
pod 'RxPermission/Location'
pod 'RxPermission/MediaLibrary'
pod 'RxPermission/Microphone'
pod 'RxPermission/Motion'
pod 'RxPermission/Notifications'
pod 'RxPermission/Photos'
pod 'RxPermission/Reminders'
pod 'RxPermission/Siri'
pod 'RxPermission/SpeechRecognizer'

Below Swift 3.0

To install it, simply add the following line to your Podfile:

pod "RxPermission", "~> 0.2"

You need to also take care of Info.plist messages because otherwise Apple won't accept the app in App Store.

Usage

RxPermission makes a rx.permission Observable that you can subscribe in order to receive signals.

Sample code

Permission
    .contacts
    .rx.permission
    .subscribe(onNext: { status in
        print("Status: \(status)")
    })
    .addDisposableTo(disposeBag)

Available permissions:

public enum PermissionType {
    case addressBook
    case bluetooth
    case camera    
    case contacts
    case events
    case locationAlways
    case locationWhenInUse
    case mediaLibrary
    case microphone
    case motion
    case notifications
    case photos
    case reminders
    case siri
    case speechRecognizer
}

Available statuses:

public enum PermissionStatus {
    case authorized
    case denied
    case disabled
    case notDetermined
}

For more info about permissions and statuses, please visit Permission's README.

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Author

Sunshinejr, [email protected], @thesunshinejr

License

RxPermission is available under the MIT license. See the LICENSE file for more info.

rxpermission's People

Contributors

andrewsb avatar delba avatar ivanbruel avatar sunshinejr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rxpermission's Issues

Will never execute twice

The subscribeNext closure will not execute twice at application's life cycle.
If this code is written in a UIViewController when second time appeared the label.text will be empty.

Permission
            .LocationAlways
            .rx_permission
            .subscribeNext { status in
                print(status)
                self.label.text = "Status: \(status)"
            }
            .addDisposableTo(disposeBag)

1.0.0-beta.2 not found

Hi, I tried to install 1.0.0-beta.2 via Cocoapods but after I update repo source it still told me 1.0.0-beta.2 not exists.

The latest version shows 1.0.0-beta.1 in cocoapods.org.

If you forget to upload to cocoapods, I just writing to remind you of that, but if that is my pod's problem, please tell me and I will try to fix it.

Code style is not perfect

I think this will be better.

Permission.rx.contacts
    .subscribeNext { status in
        print("Status: \(status)")
    }
    .addDisposableTo(disposeBag)

疑似框架内报错:java.util.List.iterator()' on a null object reference

这是我在友盟看到的报错:
Caused by: e.b.f: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference
at e.d.d.c$a.a(InternalObservableUtils.java:386)
at e.d.d.c$a.a(InternalObservableUtils.java:383)
at e.d.d.a.a(ActionSubscriber.java:44)
at e.e.b.b(SafeSubscriber.java:157)
at e.e.b.a(SafeSubscriber.java:120)
at e.b.b.a(Exceptions.java:204)
at e.e.b.a(SafeSubscriber.java:144)
at e.d.a.r$e.a(OperatorMerge.java:505)
at e.d.a.r$e.b(OperatorMerge.java:463)
at e.d.a.r$e.a(OperatorMerge.java:246)
at e.d.a.r$e.a(OperatorMerge.java:147)
at e.d.a.q$a.a(OperatorMap.java:74)
at e.d.a.n$a.a(OperatorBufferWithSize.java:114)
at e.d.a.r$e.a(OperatorMerge.java:393)
at e.d.a.r$e.a(OperatorMerge.java:355)
at e.d.a.r$c.a(OperatorMerge.java:840)
at e.e.c.a(SerializedObserver.java:95)
at e.e.d.a(SerializedSubscriber.java:95)
at e.d.a.d$c.b(OnSubscribeConcatMap.java:182)
at e.d.a.d$b.a(OnSubscribeConcatMap.java:335)
at e.h.d$b.a(SubjectSubscriptionManager.java:225)
at e.h.b.a(PublishSubject.java:114)
at com.tbruyelle.rxpermissions.RxPermissionsFragment.a(RxPermissionsFragment.java:66)
at com.tbruyelle.rxpermissions.RxPermissionsFragment.onRequestPermissionsResult(RxPermissionsFragment.java:51)
at android.app.Activity.dispatchRequestPermissionsResultToFragment(Activity.java:6733)
at android.app.Activity.dispatchActivityResult(Activity.java:6605)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3733)
... 9 more

说是:RxPermissionsFragment第66行。具体是这一行:
subject.onNext(new Permission(permissions[i], granted, shouldShowRequestPermissionRationale[i]));

版本是最新的0.9.4。
这是我的猜测,希望作者可以看看,毕竟是crash级别的bug!
Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.