README.md

ExponentServerSdk
========
[![Hex.pm](https://img.shields.io/hexpm/v/exponent-server-sdk-elixir.svg)](https://hex.pm/packages/exponent-server-sdk-elixir)
[![Build Status](https://travis-ci.org/rdrop/exponent-server-sdk-elixir.svg?branch=master)](https://travis-ci.org/rdrop/exponent-server-sdk-elixir)
[![Inline docs](http://inch-ci.org/github/rdrop/exponent-server-sdk-elixir.svg?branch=master)](http://inch-ci.org/github/rdrop/exponent-server-sdk-elixir)
[![Deps Status](https://beta.hexfaktor.org/badge/all/github/rdrop/exponent-server-sdk-elixir.svg)](https://beta.hexfaktor.org/github/rdrop/exponent-server-sdk-elixir)

Use to send push notifications to Exponent Experiences from an Elixir/Phoenix server.

## Installation

ExponentServerSdk is currently beta software. You can install it from Hex:

```elixir
def deps do
  [{:exponent_server_sdk, "~> 0.1.0"}]
end
```

Or from Github:

```elixir
def deps do
  [{:exponent_server_sdk, github: "rdrop/exponent-server-sdk-elixir"}]
end
```

and run `mix deps.get`. Now, list the `:exponent_server_sdk` application as your application dependency:

```elixir
def application do
  [applications: [:exponent_server_sdk]]
end
```

## Usage

### Client

The push notification is the preferred way.  This hits the latest version of the api.

####Single Message:

```elixir

# Create a single message map
message = %{
    to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]",
    title: "Pushed!",
    body: "You got your first message"
  }

# Send it to Expo
{:ok, response} = ExponentServerSdk.Notification.push(message)

# Example Response
{:ok, %{"status" => "ok", "id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}}
```

#### Multiple Messages:
```elixir

# Create a list of message maps (auto chunks into lists of 100)
message_list = [
  %{
    to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]",
    title: "Pushed!",
    body: "You got your first message"
  },
  %{
    to: "ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]",
    title: "Pushed Again!",
    body: "You got your second message"
  }
]

# Send it to Expo
{:ok, response} = ExponentServerSdk.Notification.push_list(messages)

# Example Response
{:ok,[ %{"status" => "ok", "id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}, %{"status" => "ok", "id" => "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"} ]}
```

The complete format of the messages can be found [here.](https://docs.expo.io/versions/latest/guides/push-notifications#message-format)

## Contributing

See the [CONTRIBUTING.md](CONTRIBUTING.md) file for contribution guidelines.

## License
ExponentServerSdk is licensed under the MIT license. For more details, see the `LICENSE`
file at the root of the repository. It depends on Elixir, which is under the
Apache 2 license.

[hex]: http://hex.pm