GithubHelp home page GithubHelp logo

onesignal-php-api's Introduction

OneSignal API for PHP

Latest Stable Version Scrutinizer Code Quality Total Downloads GitHub Workflow Status Software License

Install

Note: All examples are for v2, if you are using PHP <7.3 please read v1 documentation.

This packages requires a PSR-18 HTTP client and PSR-17 HTTP factories to work. You can choose any from psr/http-client-implementation and psr/http-factory-implementation

Example with Symfony HttpClient and nyholm/psr7 http factories, install it with Composer:

composer require symfony/http-client nyholm/psr7 norkunas/onesignal-php-api

And now configure the OneSignal api client:

<?php

declare(strict_types=1);

use OneSignal\Config;
use OneSignal\OneSignal;
use Symfony\Component\HttpClient\Psr18Client;
use Nyholm\Psr7\Factory\Psr17Factory;

require __DIR__ . '/vendor/autoload.php';

$config = new Config('your_application_id', 'your_application_auth_key', 'your_auth_key');
$httpClient = new Psr18Client();
$requestFactory = $streamFactory = new Psr17Factory();

$oneSignal = new OneSignal($config, $httpClient, $requestFactory, $streamFactory);

How to use this library

Applications API

View the details of all of your current OneSignal applications (official documentation):

$myApps = $oneSignal->apps()->getAll();

View the details of a single OneSignal application (official documentation):

$myApp = $oneSignal->apps()->getOne('application_id');

Create a new OneSignal app (official documentation):

$newApp = $oneSignal->apps()->add([
    'name' => 'app name',
    'gcm_key' => 'key'
]);

Update the name or configuration settings of OneSignal application (official documentation):

$oneSignal->apps()->update('application_id', [
    'name' => 'new app name'
]);

Create Segments (official documentation):

$oneSignal->apps()->createSegment('application_id', [
    'name' => 'Segment Name',
    'filters' => [
        ['field' => 'session_count', 'relation' => '>', 'value' => 1],
        ['operator' => 'AND'],
        ['field' => 'tag', 'relation' => '!=', 'key' => 'tag_key', 'value' => '1'],
        ['operator' => 'OR'],
        ['field' => 'last_session', 'relation' => '<', 'value' => '30,'],
    ],
]);

Delete Segments (official documentation):

$oneSignal->apps()->deleteSegment('application_id', 'segment_id');

View the details of all the outcomes associated with your app (official documentation):

use OneSignal\Apps;
use OneSignal\Devices;

$outcomes = $oneSignal->apps()->outcomes('application_id', [
    'outcome_names' => [
        'os__session_duration.count',
        'os__click.count',
        'Sales, Purchase.sum',
    ],
    'outcome_time_range' => Apps::OUTCOME_TIME_RANGE_MONTH,
    'outcome_platforms' => [Devices::IOS, Devices::ANDROID],
    'outcome_attribution' => Apps::OUTCOME_ATTRIBUTION_DIRECT,
]);

Devices API

View the details of multiple devices in one of your OneSignal apps (official documentation):

$devices = $oneSignal->devices()->getAll();

View the details of an existing device in your configured OneSignal application (official documentation):

$device = $oneSignal->devices()->getOne('device_id');

Register a new device to your configured OneSignal application (official documentation):

use OneSignal\Devices;

$newDevice = $oneSignal->devices()->add([
    'device_type' => Devices::ANDROID,
    'identifier' => 'abcdefghijklmn',
]);

Update an existing device in your configured OneSignal application (official documentation):

$oneSignal->devices()->update('device_id', [
    'session_count' => 2,
    'ip' => '127.0.0.1', // Optional. New IP Address of your device
]);

Update an existing device's tags in one of your OneSignal apps using the External User ID (official documentation):

$externalUserId = '12345';
$response = $oneSignal->devices()->editTags($externalUserId, [
    'tags' => [
        'a' => '1',
        'foo' => '',
    ],
]);

Notifications API

View the details of multiple notifications (official documentation):

$notifications = $oneSignal->notifications()->getAll();

Get the details of a single notification (official documentation):

$notification = $oneSignal->notifications()->getOne('notification_id');

Create and send notifications or emails to a segment or individual users. You may target users in one of three ways using this method: by Segment, by Filter, or by Device (at least one targeting parameter must be specified) (official documentation):

$oneSignal->notifications()->add([
    'contents' => [
        'en' => 'Notification message'
    ],
    'included_segments' => ['All'],
    'data' => ['foo' => 'bar'],
    'isChrome' => true,
    'send_after' => new \DateTime('1 hour'),
    'filters' => [
        [
            'field' => 'tag',
            'key' => 'is_vip',
            'relation' => '!=',
            'value' => 'true',
        ],
        [
            'operator' => 'OR',
        ],
        [
            'field' => 'tag',
            'key' => 'is_admin',
            'relation' => '=',
            'value' => 'true',
        ],
    ],
    // ..other options
]);

Mark notification as opened (official documentation):

$oneSignal->notifications()->open('notification_id');

Stop a scheduled or currently outgoing notification (official documentation):

$oneSignal->notifications()->cancel('notification_id');

Notification History (official documentation):

$oneSignal->notifications()->history('notification_id', [
    'events' => 'clicked', // or 'sent'
    'email' => '[email protected]',
]);

Questions?

If you have any questions please open a discussion.

License

This library is released under the MIT License. See the bundled LICENSE file for details.

onesignal-php-api's People

Contributors

andriichuk avatar anton-shumanski avatar antonioandrade avatar azhilov avatar bastienuh avatar eundong avatar gdeglin avatar laimonas avatar losams avatar metaseller avatar mkherlakian avatar norkunas avatar peter279k avatar phansys avatar prymas007 avatar rcerljenko avatar tcousin-ext avatar thoaionline avatar valentintintin avatar victor-pilotto avatar xdimedrolx 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  avatar  avatar  avatar

onesignal-php-api's Issues

How do I use this?

Hi,
I don't understand how I can use this? Do I need to install anything? Are these just code examples?
I would like to use onesignal thru wordpress with small php customisations. Am I looking in the right place?
thanks

Using onesignal as plugin to Drupal

Drupal 8.4.4
Web Server Apache/2.4.25
Database PostgreSQL 10.0
PHP 7.0.10

Im still new in php but Im creating a custom plugin onesignal to be use as notifier plugin in message stack.

My goal is to send the contents in onesignal

<?php
namespace Drupal\message_notify\Plugin\Notifier;

use Drupal\message_notify\Exception\MessageNotifyException;
use OneSignal\Config;
use OneSignal\Devices;
use OneSignal\OneSignal;

/**
 * OneSignal notifier.
 *
 * @Notifier(
 *   id = "onesignalplugin",
 *   title = @Translation("OneSignalPlugin"),
 *   description = @Translation("Send messages via OneSignal"),
 *   viewModes = {
 *     "onesignal"
 *   }
 * )
 */
class OneSignalPlugin extends MessageNotifierBase {
  /**
   * {@inheritdoc}
   */
  public function deliver(array $output = []) {
    
    $config = new Config();
    $config->setApplicationId('xxx');
    $config->setApplicationAuthKey('xxx');
    $config->setUserAuthKey('xxx');

    $api = new OneSignal($config);
  
    \Drupal::logger('message_notify')->notice("OneSignal Plugin");

    $notifications = $api->notifications->getAll();
    $notification = $api->notifications->getOne('notification_id');
    // Do not combine targeting parameters
    $api->notifications->add([
        'contents' => [
            'en' => 'Notification message'
        ],
        'included_segments' => ['All'],
        'data' => ['foo' => 'bar']
        // 'isChrome' => true,
        // 'isChromeWeb' => true
    ]);
    $api->notifications->open('notification_id');
    $api->notifications->cancel('notification_id');
    
    return $api;
    // return $output['onesignal'];
  }
}

But this is what im getting when I create a basic page:

Type: node
Message: OneSignal\Exception\OneSignalException: Call to a member function send() on null in OneSignal\OneSignal->request() (line 114 of /opt/app-root/src/vendor/norkunas/onesignal-php-api/src/OneSignal.php).

Type: php
Message: Drupal\Core\Entity\EntityStorageException: Call to a member function send() on null in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 805 of /opt/app-root/src/html/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).

The error comes when I am adding the notification code from the documentation.

v0.1.11 introduces BC-break

Release v.0.1.11 should be a major release as it introduces a bc-break.

My previously working code, now crashes because I'm not injecting a Client into OneSignal constructor. In v.0.1.10 there was no need to inject a Client because a new Guzzle Client was instantiated.

Notifications may not be scheduled in the past.

Hello!

I can't send notifications with send_after. I have this object:

Carbon {#557 โ–ผ
  +"date": "2016-02-23 16:00:00"
  +"timezone_type": 3
  +"timezone": "UTC"
}

Date now

Carbon {#557 โ–ผ
  +"date": "2016-02-23 15:43:26"
  +"timezone_type": 3
  +"timezone": "UTC"
}

I have a Carbon object but it extends DateTime and it pass in your validation.

A dd in:

 ->setNormalizer('send_after', function (Options $options, \DateTime $value) {
                //Fri May 02 2014 00:00:00 GMT-0700 (PDT)
                return $value->format('D M d Y H:i:s eO (T)');
            })

give me this result: Tue Feb 23 2016 16:00:00 UTC+0000 (UTC)

I don't know if I'm missing something. Could you help me?

Thank!

EDIT

For the notification in the date "2016-02-23 15:43:26" be sent, I need to put 3 hours more: "2016-02-23 18:43:26".

Onesignal ID differences

Apology for this simple question, but where can I get the notificationId when I want to call an Api to GET notification.

curl --include \
     --header "Authorization: Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj" \
 https://onesignal.com/api/v1/notifications/{notificationId}?app_id={appId}

update user data

Hello,
I have users registered on OneSignal by Android. I'd like to update their tags by PHP. Is it possible to select user by Player ID (for eg), then add a tag to him using the API ?

Thanks.
Regards

Notifications getAll() offset > 50

Hi,

It seems that when I try to take all notifications using getAll() the offset can not go above 50 as the condition: max(0, min(self::NOTIFICATIONS_LIMIT, filter_var($offset, FILTER_VALIDATE_INT))) always evaluates to 50 for offset values > 50.

Can you release a first version as "stable"?

If it's stable enough of course, but it looks like ok to me.

$ composer require norkunas/onesignal-php-api

  [InvalidArgumentException]
  Could not find package norkunas/onesignal-php-api at any version for your minimum-s
  tability (stable). Check the package spelling or your minimum-stability

It would be helpful, to avoid decreasing the minimum-stability of our apps.

Url validation and deeplinks

The url validation format does not allow for custom deeplink protocols.
I think the restriction for http/https should be removed.

Is that intended?

Cheers!

$api->devices->csvExport(); throws exception

Client error: `POST https://onesignal.com/api/v1/players/csv_export` resulted in a `400 Bad Request` response:
{"errors":["app_id not found. You may be missing a Content-Type: application/json header."]}

app_id should be in query params not body. I guess this is same for #44 even if this worked before going against documentation is not a good thing.

Support Symfony 4

The required package symfony/options-resolver currently does not allow symfony 4.0 ๐Ÿ˜„.

Dependency conflict (Guzzle)

Looks like Guzzle ~5.3 is still a dependency for this project, which creates a conflict with another library I'm using (chargify-php-sdk). Since in the README there's an option for either 6.x or 5.x, can we remove ~5.3 as a dependency?

$ composer require norkunas/onesignal-php-api  
Problem 1  
    - Can only install one of: guzzlehttp/guzzle[5.3.0, 6.1.1].  
    - Can only install one of: guzzlehttp/guzzle[6.1.1, 5.3.0].  
    - Can only install one of: guzzlehttp/guzzle[5.3.0, 6.1.1].  
    - norkunas/onesignal-php-api v0.1.5 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0].  
    - Installation request for norkunas/onesignal-php-api ^0.1.5 -> satisfiable by norkunas/onesignal-php-api[v0.1.5].  
    - Installation request for guzzlehttp/guzzle (locked at 6.1.1) -> satisfiable by guzzlehttp/guzzle[6.1.1].

Thanks for the answer

how to use android_channel_id

android_channel_id doesn't work. It seems like this option is not included. This option is VERY important for apps targeting Android 8+

Composer depencie issue

Hi,

First of all thanks for your precious work which saved me quiet a lot of time :)
Just wanted to let you know that as of today I tried to install your package through composer but it seems that some dependencies are missing on packagist :

screen

I checked on packagist.org and no package named 'php-http/client-implementation' found, don't know if its a temporary issue with packagist or the owner of the package but I thought that I'll let be aware of that.

Best regards,

`404 Not Found` response: {"errors":["Notification not found"]}

How can I resolve this?

I do this to not stop to work on OneSignal Class


    public function request($method, $uri, array $headers = [], $body = null)
    {
        try {
            $response = $this->client->send($method, self::API_URL.$uri, array_merge([
                'Content-Type' => 'application/json',
            ], $headers), $body);

            return json_decode($response->getBody(), true);
        } catch (\Exception $e) {
            $response = $e->getResponse();

            return [
                'status' => 'error',
                'message' => $e->getMessage(),
                'statusCode' => $response->getStatusCode(),
            ];
        }
    }

0.1.17 release

Hey there!

I was wondering if you are going to release a new version any time soon, regarding your updated files on the 0.1 branch.

I'm really interested in testing the Chrome's Big Image feature, so if you could release a new version with this, it would be pretty awesome!

Thank you for your time

Integrate with symfony 2

Hello,

How integrate with symfony 2?

The bundle dizda/OnesignalApiBundle work with version 0.1.0 and iยดm version 1 with Guzzle 6.

Thanks

Laravel 5.1 Integration

It is working standalone.

Can I use this with laravel ?
it is to mention that , I've tried with Laravel but it doesn't install all requirements like standalone for that reason it returns error with : Undefined namespace Common and MessageFactory

use Http\Client\Common\HttpMethodsClient as HttpClient;
use Http\Message\MessageFactory\GuzzleMessageFactory;

If, then please write a note for me...

Thank You

Please add TTL option

https://documentation.onesignal.com/docs/notifications-create-notification - according to the documentation there is "ttl" option, but I get the following exception:

The option "ttl" does not exist. Defined options are: "adm_big_picture", "adm_group", "adm_group_message", "adm_large_icon", "adm_small_icon", "adm_sound", "amazon_background_data", "android_accent_color", "android_background_data", "android_group", "android_group_message", "android_led_color", "android_sound", "android_visibility", "app_id", "app_ids", "big_picture", "buttons", "chrome_big_picture", "chrome_icon", "chrome_web_icon", "content_available", "contents", "data", "delayed_option", "delivery_time_of_day", "excluded_segments", "firefox_icon", "headings", "include_amazon_reg_ids", "include_android_reg_ids", "include_chrome_reg_ids", "include_chrome_web_reg_ids", "include_ios_tokens", "include_player_ids", "include_wp_uris", "include_wp_wns_uris", "included_segments", "ios_badgeCount", "ios_badgeType", "ios_sound", "isAdm", "isAndroid", "isAnyWeb", "isChrome", "isChromeWeb", "isIos", "isSafari", "isWP", "large_icon", "send_after", "small_icon", "tags", "template_id", "url", "wp_sound", "wp_wns_sound".ERROR

getDevice(device_id) not working -- (getting Bad Request)

The following does not work
$device = $api->devices->getOne('device_id');

I'm getting the following msg when the above is run:

Client error: GET https://onesignal.com/api/v1/players/ resulted in a 400 Bad Request response: {"errors":["app_id not found. You may be missing a Content-Type: application/json header."]}

Compatibility with php 5.5

Hi, I was wondering if this library is compatible with php 5.5 ? I am unable to upgrade at this moment, and i was thinking of making a fork that does not require minimum version 5.6
Thanks.

1.0 release?

Hey,
when will be 1.0 released? The rc tag has been set before 1 year..

composer error "Your requirements could not be resolved to an installable set of packages"

hello guys,

I can't install your library due to this error during the installation process:
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for norkunas/onesignal-php-api 1.0.x-dev -> satisfiable by norkunas/onesignal-php-api[1.0.x-dev].
    - norkunas/onesignal-php-api 1.0.x-dev requires php-http/client-implementation ^1.0 -> no matching package found.

How to solve the problem?

Send One Signal push notification with Symfony 3

I created a mobile application with Ionic 3 and I would like send notification in Symfony 3 via One Signal.

I read the documentation of One Signal and this documentation: https://github.com/norkunas/onesignal-php-api/blob/master/docs/setup-guzzle5.md

I created a service in Symfony, but I'm blocked, I do not know what to put in.

$guzzle = new GuzzleClient([ // ..config ]);

My service :

`namespace SGBundle\Service\OneSignal;

use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle5\Client as GuzzleAdapter;
use Http\Client\Common\HttpMethodsClient as HttpClient;
use Http\Message\MessageFactory\GuzzleMessageFactory;
use OneSignal\Config;
use OneSignal\Devices;
use OneSignal\OneSignal;
use SGBundle\Controller\BaseController;

class OneSignalService extends BaseController
{

public function sendMessage()
{
    $config = new Config();
    $config->setApplicationId('xxx');
    $config->setApplicationAuthKey('xx');
    $config->setUserAuthKey('xxx');

    $guzzle = new GuzzleClient([
                                   // ..config
                               ]);

    $client = new HttpClient(new GuzzleAdapter($guzzle), new GuzzleMessageFactory());
    $api = new OneSignal($config, $client);

}`

And where I define the body of my notification (title and message for example) ?

Thank you in advance for your help

Issue on symfony/options-resolver on Symfony 3.4

composer require samiaraboglu/one-signal-api-bundle
Using version ^0.4.0 for samiaraboglu/one-signal-api-bundle                                             
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)                                                           
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: remove symfony/symfony v3.4.18
    - Conclusion: don't install symfony/symfony v3.4.18
    - norkunas/onesignal-php-api v0.1.0 requires symfony/options-resolver ~2.6 -> satisfiable by symfony/options-resolver[v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - norkunas/onesignal-php-api v0.1.1 requires symfony/options-resolver ~2.7 -> satisfiable by symfony/options-resolver[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - norkunas/onesignal-php-api v0.1.2 requires symfony/options-resolver ~2.7 -> satisfiable by symfony/options-resolver[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - norkunas/onesignal-php-api v0.1.3 requires symfony/options-resolver ~2.7 -> satisfiable by symfony/options-resolver[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - norkunas/onesignal-php-api v0.1.4 requires symfony/options-resolver ~2.7 -> satisfiable by symfony/options-resolver[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - don't install symfony/options-resolver v2.8.0|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.1|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.10|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.11|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.12|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.13|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.14|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.15|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.16|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.17|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.18|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.19|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.2|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.20|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.21|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.22|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.23|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.24|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.25|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.26|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.27|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.28|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.29|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.3|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.30|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.31|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.32|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.33|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.34|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.35|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.36|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.37|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.38|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.39|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.4|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.40|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.41|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.42|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.43|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.44|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.45|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.46|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.47|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.48|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.5|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.6|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.7|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.8|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.8.9|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.0|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.1|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.10|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.11|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.12|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.13|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.2|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.3|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.4|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.5|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.6|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.7|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.8|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.6.9|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.0|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.1|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.10|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.11|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.12|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.13|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.14|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.15|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.16|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.17|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.18|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.19|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.2|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.20|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.21|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.22|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.23|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.24|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.25|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.26|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.27|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.28|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.29|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.3|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.30|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.31|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.32|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.33|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.34|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.35|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.36|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.37|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.38|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.39|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.4|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.40|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.41|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.42|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.43|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.44|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.45|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.46|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.47|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.48|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.49|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.5|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.6|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.7|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.8|don't install symfony/symfony v3.4.18
    - don't install symfony/options-resolver v2.7.9|don't install symfony/symfony v3.4.18
    - Installation request for symfony/symfony (locked at v3.4.18, required as 3.4.*) -> satisfiable by symfony/symfony[v3.4.18].
    - Installation request for samiaraboglu/one-signal-api-bundle ^0.4.0 -> satisfiable by samiaraboglu/one-signal-api-bundle[0.4.0].
    - Conclusion: don't install guzzlehttp/guzzle 6.1.0|install norkunas/onesignal-php-api v0.1.0|install norkunas/onesignal-php-api v0.1.1|install norkunas/onesignal-php-api v0.1.2|install norkunas/onesignal-php-api v0.1.3|install norkunas/onesignal-php-api v0.1.4
    - Conclusion: remove guzzlehttp/guzzle 6.1.0|install norkunas/onesignal-php-api v0.1.0|install norkunas/onesignal-php-api v0.1.1|install norkunas/onesignal-php-api v0.1.2|install norkunas/onesignal-php-api v0.1.3|install norkunas/onesignal-php-api v0.1.4
    - samiaraboglu/one-signal-api-bundle 0.4.0 requires norkunas/onesignal-php-api ^0.1 -> satisfiable by norkunas/onesignal-php-api[v0.1.0, v0.1.1, v0.1.10, v0.1.11, v0.1.12, v0.1.13, v0.1.14, v0.1.15, v0.1.16, v0.1.17, v0.1.2, v0.1.3, v0.1.4, v0.1.5, v0.1.6, v0.1.7, v0.1.8, v0.1.9].
    - norkunas/onesignal-php-api v0.1.10 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.11 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.12 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.13 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.14 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.15 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.16 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.17 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.5 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.6 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.7 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.8 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - norkunas/onesignal-php-api v0.1.9 requires guzzlehttp/guzzle ~5.3 -> satisfiable by guzzlehttp/guzzle[5.3.0, 5.3.1, 5.3.2, 5.3.3].
    - Can only install one of: guzzlehttp/guzzle[5.3.0, 6.1.0].
    - Can only install one of: guzzlehttp/guzzle[5.3.1, 6.1.0].
    - Can only install one of: guzzlehttp/guzzle[5.3.2, 6.1.0].
    - Can only install one of: guzzlehttp/guzzle[5.3.3, 6.1.0].
    - Installation request for guzzlehttp/guzzle (locked at 6.1.0) -> satisfiable by guzzlehttp/guzzle[6.1.0].


Installation failed, reverting ./composer.json to its original content.

Was trying to use this bundle but I get this type error.

please fix.

Update Device Tags

Hello again, sorry for bothering you again :)
How do i get the following to work?

$api->devices->update('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', [ 'tags' => '{"foo":"bar","this":"that"}', ]);

somehow nothing changes when i look at device list
i also tried

'tags' => {"foo":"bar","this":"that"}

Best regards,
Max

Error while adding Notification

Hi, I am new to PHP, and while using your library, I got this error:

Fatal error: Uncaught exception 'GuzzleHttp\Ring\Exception\RingException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate' in C:\wamp\www\project_name\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php on line 51

This happened when I call $api->notifications->add().

What is possible go wrong?

Docs links

Hi! You've got some broken links in readme (onesignal official documentation).

Install without composer

I am having huge problems using this library without composer; but id love to somehow use it as itd be a huge painsaver :)
I use this instead of the autoloader:

function __autoload($class_name) {
  require_once("OneSignal/Config.php");
  require_once("OneSignal/Devices.php");
  require_once("OneSignal/OneSignal.php");
}

Now i`m getting all kinds of errors from guzzle...

Uncaught Error: Class 'Http\Adapter\Guzzle5\Client' not found

Hello,

i did the following: download the repository as zip and unzipped the "onesignal-php-api-master" folder to my working direcotry then hit composer install in this folder.

My class looks like this:
`<?php
use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle5\Client as GuzzleAdapter;
use Http\Client\Common\HttpMethodsClient as HttpClient;
use Http\Message\MessageFactory\GuzzleMessageFactory;
use OneSignal\Config;
use OneSignal\Devices;
use OneSignal\OneSignal;

class ep_push {
	
	private $config;
	private $guzzle;
	private $client;
	private $api;
	
	public static function init() {
		$test = self::Instance();
	}
	
	public static function Instance() {
		static $inst = null;
		if ($inst === null) {
			$inst = new ep_push();
		}
		
		return $inst;
	}
	
	private function __construct() {
		require_once(EP_PUSH_DIR . "onesignal-php-api-master/vendor/autoload.php");
		
		$this->config = new Config();
		$this->config->setApplicationId("YOUR_APP_ID");
		$this->config->setApplicationAuthKey("YOUR_APP_AUTH_KEY");
		$this->config->setUserAuthKey("YOUR_USER_AUTH_KEY");
		
		$this->guzzle = new GuzzleClient([]);
		
		$client = new HttpClient(new GuzzleAdapter($this->guzzle), new GuzzleMessageFactory());
		$api = new OneSignal($config, $client);
	}
}

?>`

but i get the following error message: Uncaught Error: Class 'Http\Adapter\Guzzle5\Client' not found

Missing options

Notifications:

  • isChromeWeb
  • include_wp_uris
  • include_wp_wns_uris
  • app_ids
  • adm_sound
  • wp_wns_sound
  • chrome_web_icon

Apps:

  • apns_p12_password

chrome_web_image and other attribute problems

Hello,

I just tested your app and realised that your app has no allow to sent notifications with allowed attributes by OneSignal. For example i need to use 'chrome_web_image '.

The issue is The option "chrome_web_image" does not exist. Defined options are: "adm_big_picture", "adm_large_icon", "adm_small_icon", "amazon_background_data", "android_accent_color", "android_background_data", "android_led_color", "android_sound", "android_visibility", "app_id", "big_picture", "buttons", "chrome_big_picture", "chrome_icon", "content_available", "contents", "data", "delayed_option", "delivery_time_of_day", "excluded_segments", "headings", "include_amazon_reg_ids", "include_android_reg_ids", "include_chrome_reg_ids", "include_ios_tokens", "include_player_ids", "include_wp_urls", "included_segments", "ios_badgeCount", "ios_badgeType", "ios_sound", "isAdm", "isAndroid", "isChrome", "isIos", "isWP", "large_icon", "send_after", "small_icon", "tags", "template_id", "url", "wp_sound".

Can you solve this please?

Thanks in advance :)

Regarding Config and send Notificaion using API

Hello,
i have updated composer and i have following concerns

$config = new Config();
$config->setApplicationId('your_application_id');
$config->setApplicationAuthKey('your_application_auth_key');
$config->setUserAuthKey('your_auth_key');

	$guzzle = new GuzzleClient([
	// ..config
	]);

	$client = new HttpClient(new GuzzleAdapter($guzzle), new GuzzleMessageFactory());
	$api = new OneSignal($config, $client);

I am new to this api.
i have checked backend of Onesignal and they provided only REST API and Auth key but above there are three keys that need to update so i confused here which keys are for what?

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.