• Stars
    star
    741
  • Rank 61,194 (Top 2 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ello's open source iOS app

Ello iOS App

Build Status

Open source, but not open API

Our API requires an application key and secret, which are currently being kept private. You can browse the source, and you can compile it, but you won't be able to run it against our API. Sorry, but we don't have the resources to support this kind of open access. We have always planned to offer 3rd party access, so hopefully this will change soon!

Environment Variables

We use the dotenv gem to access application secrets in the terminal, and cocoapods-keys to store them in the app. Add the following values to your .env.

  • ELLO_STAFF: set this in your bash/zsh startup script to access private cocoapods (you must have access to the private repos).
  • GITHUB_API_TOKEN: used for generating release notes during distribution
  • INVITE_FRIENDS_SALT: used for generating the salt for sending emails to the API
  • PROD_CLIENT_KEY: the key or id used for oauth
  • PROD_CLIENT_SECRET: the secret used for oauth
  • PROD_DOMAIN: the domain for the API to hit
  • NINJA_CLIENT_KEY: the key or id used for oauth
  • NINJA_CLIENT_SECRET: the secret used for oauth
  • NINJA_DOMAIN: the domain for the API to hit
  • STAGE1_CLIENT_KEY: the key or id used for oauth
  • STAGE1_CLIENT_SECRET: the secret used for oauth
  • STAGE1_DOMAIN: the domain for the API to hit
  • STAGE2_CLIENT_KEY: the key or id used for oauth
  • STAGE2_CLIENT_SECRET: the secret used for oauth
  • STAGE2_DOMAIN: the domain for the API to hit
  • STAGING_SEGMENT_KEY: used for sending data to segment

Setup

Once you have client credentials, compile them into cocoapods-keys by running:

  • rake generate:keys

Other

  • List available rake tasks: bundle exec rake -T

Testing out Push Notifications with Knuff

  • Download Knuff https://github.com/KnuffApp/Knuff/releases
  • Install ElloDevPushSandbox.p12 in your keychain (talk to @steam to get it)
  • Print out your device's APNS Token in the function updateToken() in PushNotificationController
  • Build to device in Debug mode
  • Code Signing Identity: iPhone Distribution: Ello (ABC12345)
  • Provisioning Profile iOSTeam Provisioning Profile: co.ello.ElloDev

Universal Links

Starting with iOS 9 Apple added support for Universal Links. The previous link does a good job explaining the concept. Generating the apple-app-site-association file that is needed on the server is not well explained.

aasa.json

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "ABC12345.co.ello.ElloDev",
                "paths": [ "*" ]
            },
            {
                "appID": "ABC12345.co.ello.ElloStage",
                "paths": [ "*" ]
            },
            {
                "appID": "ABC12345.co.ello.Ello",
                "paths": [ "/native_redirect/*" ]
            }
        ]
    }
}

STAR_ello_co.key, STAR_ello_co.crt and STAR_ello_co.pem are in the Ello Ops 1Password vault

cat aasa.json | openssl smime \
 -sign \
 -inkey STAR_ello_co.key \
 -signer STAR_ello_co.crt \
 -certfile STAR_ello_co.pem \
 -noattr \
 -nodetach \
 -outform DER > apple-app-site-association

APNS certificates

See also http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html

Create the certs in Apple's developer portal in the usual way (using the 1Password APNS password as the cert keyphrase), and download the .cer file (two of them, actually, one for co.ello.Ello, one for co.ello.ElloDev). Install that file into your keychain, then export the private key (in.p12 format, with no password).

Pinning certificates

We use pinned certificates to avoid man-in-the-middle SSL attacks. We use a rolling "primary + backup" pair of certificates, so if the primary expires or needs to be pulled, the backup is easy to swap in. Every now and then the primary / backup need to be rotated.

Cutting a new release

Merge all new changes into master, checkout a new branch release/x.x.x. Change version number in Ello and Share Extension targets. Create the archive using the Ello scheme (not ElloDev). Using Ello will update the build numbers in both plists. Commit version and build number changes. Upload archive to TestFlight. After QA changes are often required. Continue making changes, merging them into master. Then rebase the release branch onto master and repeate until a release candidate is submitted to Apple for review. Once the release is approved and live in the store you git tag x.x.x and merge the release branch into master. Following these conventions will allow github to automatically mark the release as an official release.

Sometimes you may need to increase the build number without making any changes to the code. iTunesConnect requires unique build numbers which in our case, are based off the number of commits. Any easy way to do that is git commit --allow-empty -m "bumping build number".

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ello/ello-ios.

License

Ello iOS is released under the MIT License

Code of Conduct

Ello was created by idealists who believe that the essential nature of all human beings is to be kind, considerate, helpful, intelligent, responsible, and respectful of others. To that end, we will be enforcing the Ello rules within all of our open source projects. If you don’t follow the rules, you risk being ignored, banned, or reported for abuse.

More Repositories

1

webapp

The web front end for ello.co
JavaScript
73
star
2

ello-android

Ello's open source Android app
Java
33
star
3

heroku-buildpack-imagemagick-cedar-14

Heroku buildpack for ImageMagick 6.8 on Cedar 14
Shell
31
star
4

streams

RESTful wrapper for activity streams in Roshi/Go
Go
29
star
5

TimeAgoInWords

A port of rails' time_ago_in_words date method.
Swift
28
star
6

wtf

Ello WTF site - help, FAQs, about us, and other static pages
SCSS
12
star
7

dotfiles

Shell
8
star
8

notification-streams

Serve up a feed of activities for a user. Counterpart to https://github.com/ello/streams
Ruby
5
star
9

ncmec_reporting

Ruby client library for the NCMEC CyberTipline reporting service
Ruby
5
star
10

newrelic_phoenix

Elixir
5
star
11

ello-click

External link affiliation
Elixir
4
star
12

ello-ifttt

IFTTT Integration
Ruby
3
star
13

bender

JavaScript
3
star
14

kinesis-stream-reader

Long-running readers for parsing data from a Kinesis stream in Ruby
Ruby
3
star
15

lettertray

A self-hosted disposable e-mail service using SendGrid/Griddler
Ruby
3
star
16

api-docs

Ello API Docs
API Blueprint
2
star
17

ello-notifications

Push notification generation and delivery service
Ruby
2
star
18

android

Kotlin
2
star
19

ello-button

Badges for embedding a link to Ello on your own site
Ruby
2
star
20

ello_protobufs

Protocol buffers for cross service communication
Ruby
2
star
21

streams-client

A Ruby API to the Roshi-backed Streams service.
Ruby
2
star
22

amazon-bot

This bot hosts the Lambda function that responds to /promo on Slack
JavaScript
1
star
23

apex

Ello API for some read only endpoints in Elixir πŸ’¨
Elixir
1
star
24

megameta

A microservice to process URL's for embed and preview data.
Clojure
1
star
25

sightengine-ruby

Ruby wrapper for the Sightengine image moderation API
Ruby
1
star
26

ellobor_site

Ello Bill of Rights for Social Network Users
Ruby
1
star
27

vizify

Quick-and-dirty Graphviz rendering API
Ruby
1
star
28

brains

JavaScript
1
star
29

ello-mailchimp

Consume Kinesis events to populate email preferences in Mailchimp
Ruby
1
star
30

ElloOSSUIFonts

Ello Open Source iOS fonts, wrapped as a CocoaPod
Swift
1
star
31

eslint-config-ello

JavaScript
1
star
32

ello-event-stream

Elixir lib for reading and writing from Ello event streams (Kinesis + Avro).
Elixir
1
star