diff --git a/README.md b/README.md index 6c5cf3f..5f0a8b3 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ A push notification server using [Gin](https://github.com/gin-gonic/gin) framewo * Support [Google Cloud Message](https://developers.google.com/cloud-messaging/) using [go-gcm](https://github.com/google/go-gcm) library for Android. * Support [HTTP/2](https://http2.github.io/) Apple Push Notification Service using [apns2](https://github.com/sideshow/apns2) library. * Support [YAML](https://github.com/go-yaml/yaml) configuration. +* Support command line to send single Androdi or iOS notification. +* Support Web API to send push notification. See the [YAML config eample](config/config.yaml): @@ -43,6 +45,34 @@ log: error_level: "error" ``` +## Basic Usage + +How to send push notification with `gopush` command line? (Android or iOS) + +### Android + +Send single notification with the following command. + +```bash +$ ./gopush -android -m="your message" -k="API Key" -t="Device token" +``` + +* `-m`: Notification message. +* `-k`: [Google cloud message](https://developers.google.com/cloud-messaging/) api key +* `-t`: Device token. + +### iOS + +Send single notification with the following command. + +```bash +$ ./gopush -ios -m="your message" -i="API Key" -t="Device token" +``` + +* `-m`: Notification message. +* `-i`: Apple Push Notification Certificate path (`pem` file). +* `-t`: Device token. + ## License Copyright 2016 Bo-Yi Wu [@appleboy](https://twitter.com/appleboy). diff --git a/gorush.go b/gorush.go index 5eb77c9..e88d93f 100644 --- a/gorush.go +++ b/gorush.go @@ -12,6 +12,11 @@ func main() { certificateKeyPath := flag.String("i", "", "iOS certificate key file path for gopush") apiKey := flag.String("k", "", "Android api key configuration for gopush") port := flag.String("p", "", "port number for gopush") + token := flag.String("t", "", "token string") + message := flag.String("m", "", "notification message") + android := flag.Bool("android", false, "send android notification") + ios := flag.Bool("ios", false, "send ios notification") + production := flag.Bool("production", false, "production mode in iOS") flag.Parse() @@ -55,13 +60,59 @@ func main() { return } - if err = gopush.CheckPushConf(); err != nil { - log.Println(err) - gopush.LogError.Fatal(err) + // send android notification + if *android { + if len(*token) == 0 { + gopush.LogError.Fatal("Missing token flag (-t)") + } + + if len(*message) == 0 { + gopush.LogError.Fatal("Missing message flag (-m)") + } + + gopush.PushConf.Android.Enabled = true + req := gopush.PushNotification{ + Tokens: []string{*token}, + Platform: gopush.PlatFormAndroid, + Message: *message, + } + + gopush.PushToAndroid(req) return } + // send android notification + if *ios { + if len(*token) == 0 { + gopush.LogError.Fatal("Missing token flag (-t)") + } + + if len(*message) == 0 { + gopush.LogError.Fatal("Missing message flag (-m)") + } + + if *production { + gopush.PushConf.Ios.Production = true + } + + gopush.PushConf.Ios.Enabled = true + req := gopush.PushNotification{ + Tokens: []string{*token}, + Platform: gopush.PlatFormIos, + Message: *message, + } + + gopush.InitAPNSClient() + gopush.PushToIOS(req) + + return + } + + if err = gopush.CheckPushConf(); err != nil { + gopush.LogError.Fatal(err) + } + gopush.InitAPNSClient() gopush.RunHTTPServer() } diff --git a/gorush/server.go b/gorush/server.go index d370b76..80733c0 100644 --- a/gorush/server.go +++ b/gorush/server.go @@ -1,10 +1,10 @@ package gopush import ( + "fmt" api "github.com/appleboy/gin-status-api" "github.com/gin-gonic/gin" "net/http" - "fmt" ) func AbortWithError(c *gin.Context, code int, message string) { @@ -26,7 +26,7 @@ func pushHandler(c *gin.Context) { var msg string if err := c.BindJSON(&form); err != nil { - msg = "Missing nitifications field." + msg = "Missing notifications field." LogAccess.Debug(msg) AbortWithError(c, http.StatusBadRequest, msg) return