Giter Site home page Giter Site logo

woohahaapps / evenbetterauthorizationsample Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brenwell/evenbetterauthorizationsample

0.0 1.0 0.0 396 KB

Apple's EvenBetterAuthorization Sample Project

Objective-C 79.16% Python 17.63% Shell 0.79% Makefile 2.42%

evenbetterauthorizationsample's Introduction

HelperTool + XPCService Project Setup

This is how to set everything up (I believe)

The original Apple Doc for this project can be found in README-APPLE

In this example the 3 identifiers for the 3 targets are

Name Identifier
Broker (Main app) com.blackwellapps.Broker
BrokerHelper (HelperTool) com.blackwellapps.BrokerHelper
XPCService com.blackwellapps.XPCService

1 Add Copy File build phase

Main App Add Copy File build phase to main app target: Destination: Wrapper Subpath: Contents/LibraryXPCServices, Codesign on Copy:Disable.

screen shot 2015-04-17 at 15 35 48

XPCService Add Copy File build phase to XPCService target: Destination: Wrapper Subpath: Contents/Library/LaunchServices, Codesign on Copy:Disable.

screen shot 2015-04-17 at 15 37 12


2 Modify Info.plists

XPCService-Info.plist (Tools owned after installation)

Add a new key value pair to the XPCService's Info.plist

  • Key: "Tools owned after installation"
  • Type: dictionary

Inside this new dictionary add a another key value pair:

  • Key: Your helper's bundle identifier
  • Type: string
  • Value: "anchor apple generic and certificate leaf[subject.CN] = Certificate Name and certificate 1[field.1.2.840.113635.100.6.2.1] / exists /"

screen shot 2015-04-17 at 15 55 47

HelperTool-Info.plist (Clients allowed to add and remove tool)

Add a new key value pair the HelperTools's Info.plist

  • Key: "Clients allowed to add and remove tool"
  • Type: array

As this is an array, we will add a new item to the 0 index:

  • Key/Position: "Item 0"
  • Type: string
  • Value: "identifier XPCService identifier and anchor apple generic and certificate leaf[subject.CN] = Certificate Name and certificate 1[field.1.2.840.113635.100.6.2.1] / exists /"

screen shot 2015-04-17 at 15 38 38


3 Developer ID

Choose Developer ID:* in Code Signing Identity in build settings for each targets.

Main App

screen shot 2015-04-17 at 15 46 53

XPCService

screen shot 2015-04-17 at 15 46 45

HelperTool

screen shot 2015-04-17 at 15 46 59


4 Build

Build the app.


5 SMJobBlessUtil.py

Use SMJobBlessUtil.py cli script

Update Info.plist:

Format: $ ./SMJobBlessUtil.py setreq <XPCService path> <XPCService's Info.plist path> <Helper's Info.plist>

./SMJobBlessUtil.py setreq Build/Products/Debug/com.blackwellapps.XPCService.xpc XPCService/XPCService-Info.plist BrokerHelper/HelperTool-Info.plist HelperTool/HelperTool-Info.plist

Check Code Signing status:

Format: $ ./SMJobBlessUtil.py check <XPCservice path>

./SMJobBlessUtil.py check Build/Products/Debug/com.blackwellapps.XPCService.xpc

Troubleshooting

  • If it doesn't pass the CLI check then make sure #3 is correct
  • Also Make sure each .plist file is set as Info.plist in the corresponding Target's Build settings.

Credit

Got some of this from this gist https://gist.github.com/xiao99xiao/0509091001bdd6259249

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.