The Xiaomi message push service is a system-level channel on MIUI and is universal across the platform, which can provide developers with stable, reliable, and efficient push services.

Go-Push-API

Go Reference GitHub GitHub go.mod Go version (branch)

MiPush、JiPush、UMeng

MiPush

The Xiaomi message push service is a system-level channel on MIUI and is universal across the platform, which can provide developers with stable, reliable, and efficient push services.

JiPush

Installation

go get -u github.com/houseme/go-push-api

Quick Start

Owner
houseme
open source houseme Contact mail
houseme
Comments
  • build(deps): bump github.com/bytedance/sonic from 1.6.0 to 1.6.1

    build(deps): bump github.com/bytedance/sonic from 1.6.0 to 1.6.1

    Bumps github.com/bytedance/sonic from 1.6.0 to 1.6.1.

    Release notes

    Sourced from github.com/bytedance/sonic's releases.

    v1.6.1

    Feature

    • #341 (ast) ast.Node support not-amd64 CPU arch
    • #342 stop SIGPROF traceback while calling native functions

    Bugfix

    • #336 (encoder) lose pointer-value message for deep-layer struct
    • #343 (encoder) not support concrete-type key implementing encoding.TextMarshaler while sorting map

    Full Changelog: https://github.com/bytedance/sonic/compare/v1.6.0...v1.6.1

    Commits
    • 67cffb1 feat:(ast) add fallback api on not-amd64 env (#341)
    • 134fba2 feat: ignore SIGPROF while calling native funcs (#342)
    • 685ea7b feat:(encoder) support concrete-type key implementing `encoding.TextMarshaler...
    • f421ee8 fix:(encoder) pass pv through compiler recursively (#336)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump github.com/bytedance/sonic from 1.5.0 to 1.6.0

    build(deps): bump github.com/bytedance/sonic from 1.5.0 to 1.6.0

    Bumps github.com/bytedance/sonic from 1.5.0 to 1.6.0.

    Release notes

    Sourced from github.com/bytedance/sonic's releases.

    v1.6.0

    Feature

    • #305 only use SSE instead of SSE4 to be compatible with old x86 CPU
    • #306 add dummy interface of pretouch() under not-amd64 arch
    • #325 (decoder) support skipping mismatched-typed value while binding
    • #329 support decode json-encoded (with escaping characters) base64 string

    Bugfix

    • #314 (ast) iterator panic while traversing the empty object
    • #320 (decoder) clear corrupt memory when decoding failed

    Optimization

    • #302 reduce memory pool size of JIT's stack (1~3+MB per P)
    • #324 reduce type assertions in ast

    Full Changelog: https://github.com/bytedance/sonic/compare/v1.5.0...v1.6.0

    v1.6.0-rc

    Feature

    • #325 (decoder) support skipping mismatched-typed value while binding
    • #320 (decoder) clear corrupt memory when decoding failed
    • #306 add dummy interface of pretouch() under not-amd64 arch

    Bugfix

    • #305 only use SSE instead of SSE4 to be compatible with old x86 CPU
    • #314 (ast) iterator panic while traversing the empty object

    Optimization

    • #302 reduce memory pool size of JIT's stack (1~3+MB per P)
    • #324 (ast) reduce type assertion

    Full Changelog: https://github.com/bytedance/sonic/compare/v1.5.0...v1.6.0-rc

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump github.com/gofrs/uuid from 4.3.0+incompatible to 4.3.1+incompatible

    build(deps): bump github.com/gofrs/uuid from 4.3.0+incompatible to 4.3.1+incompatible

    Bumps github.com/gofrs/uuid from 4.3.0+incompatible to 4.3.1+incompatible.

    Release notes

    Sourced from github.com/gofrs/uuid's releases.

    v4.3.1

    • Update UUIDv7 to use unix millisecond calculation that is friendly to legacy go versions by @​convto Full Changelog: v4.3.0...v4.3.1
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump morphy2k/revive-action from 2.4.0 to 2.4.1

    build(deps): bump morphy2k/revive-action from 2.4.0 to 2.4.1

    Bumps morphy2k/revive-action from 2.4.0 to 2.4.1.

    Release notes

    Sourced from morphy2k/revive-action's releases.

    v2.4.1

    What's Changed

    Full Changelog: https://github.com/morphy2k/revive-action/compare/v2.4.0...v2.4.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump github.com/bytedance/sonic from 1.4.0 to 1.5.0

    build(deps): bump github.com/bytedance/sonic from 1.4.0 to 1.5.0

    Bumps github.com/bytedance/sonic from 1.4.0 to 1.5.0.

    Release notes

    Sourced from github.com/bytedance/sonic's releases.

    v1.5.0

    Feature

    • #294 (ast) support more loose type-casting (breaking change)
    • #299 move third-party tests into another module

    Bugfix

    • #296#295 (decoder) StreamDecoder unexpectedly stopped while decoding buffer-truncated numbers

    Optimization

    • #291 (encoder) faster and more accurate (for float32->float64) ftoa() implementation, promoting 5%~50% performance of float encoding

    Full Changelog: https://github.com/bytedance/sonic/compare/v1.4.0...v1.5.0

    v1.5.0-rc

    Feature

    #294 (decoder) support looser type-casting (breaking change)

    Bugfix

    #295#296 (decoder) StreamDecoder unexpectedly stop while skipping incomplete number

    Full Changelog: https://github.com/bytedance/sonic/compare/v1.4.0...v1.5.0-rc

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump github.com/gofrs/uuid from 4.2.0+incompatible to 4.3.0+incompatible

    build(deps): bump github.com/gofrs/uuid from 4.2.0+incompatible to 4.3.0+incompatible

    Bumps github.com/gofrs/uuid from 4.2.0+incompatible to 4.3.0+incompatible.

    Release notes

    Sourced from github.com/gofrs/uuid's releases.

    Update to UUIDv7

    Full Changelog: v4.2.0...v4.3.0

    Commits
    • e420387 Enhance defaultHWAddrFunc() and tests to hit 100% coverage (#57)
    • f267b3d update UUIDv7 implementation with RFC Draft Rev 03 spec (#99)
    • edd511b update build to use go 1.19 as primary (#103)
    • 1e02a1d Update go.yml to use go 1.18 (#102)
    • 028e840 update readme to document experimental v6 and v7 ids (#94)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump github.com/bytedance/sonic from 1.3.5 to 1.4.0

    build(deps): bump github.com/bytedance/sonic from 1.3.5 to 1.4.0

    Bumps github.com/bytedance/sonic from 1.3.5 to 1.4.0.

    Release notes

    Sourced from github.com/bytedance/sonic's releases.

    v1.4.0

    Feature

    • #275 support Go 1.19
    • #280 adapt to SSE4-only CPU on arch AMD64 and no longer limit usage on Mac-M1 machine
    • #287 add option MaxInlineDepth for adjusting compilation inline depth
    • #218 (encoder) add encoder option NoNullSliceOrMap
    • #253 (decoder) add option ValidateString to validate if string value is UTF8
    • #249 (ast) add more strict casting API
    • #262 (ast) support casting V_STRING to number
    • #278 (ast) support cast null to zero value (break change)

    Bugfix

    • #243 (encoder) insufficient buffer size check for OP_i32 and panic invalid memory address or nil pointer dereference
    • #243 (encoder) marshal escape '\b' and '\f' inconsistently with encoding/json
    • #259 (encoder) handle map without dereferencing pointer when calling call_marshaler_v
    • #254 (decoder) didn't return io.EOF error when read nothing from io.Reader
    • #261 (decoder) didn't check ',' before object key due to imperfect FSM
    • #267 (decoder) StreamDecoder returns error when run out of buffer while skipping value
    • #268 (decoder) wrongly set options and panic can't set OptionUseInt64 and OptionUseNumber both
    • #250 (ast) checkRaw() didn't check if Node is nil pointer first

    Optimization

    • #287 reduce default max inline depth (from 5 to 3) for less compilation time and better performance
    • #237 (encoder) remove bound and loop unrolling in quote
    • #239 (test) add more benchmarks on different structures

    Full Changelog: https://github.com/bytedance/sonic/compare/v1.3.0...v1.4.0

    Commits
    • cf08d54 feat:(ast) support cast null to empty value (#278)
    • 94f95f0 feat:(option) add option MaxInlineDepth for addjust compilation inline dept...
    • 1a7758c build: all fallbacks to compact.go on ARM arch (#286)
    • dd3e092 fix spelling mistake in README.md (#285)
    • d1190d6 change push-check-arm.yml and remove fall back logics (#284)
    • a8311c6 fix: adapts to Mac M1 (#280)
    • d4024be chore: remove excessive spaces
    • de2dc2c add ValidateString option into decode (#253)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump morphy2k/revive-action from 2.3.1 to 2.4.0

    build(deps): bump morphy2k/revive-action from 2.3.1 to 2.4.0

    Bumps morphy2k/revive-action from 2.3.1 to 2.4.0.

    Release notes

    Sourced from morphy2k/revive-action's releases.

    v2.4.0

    What's Changed

    Full Changelog: https://github.com/morphy2k/revive-action/compare/v2.3.1...v2.4.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • build(deps): bump github.com/gofiber/fiber/v2 from 2.35.0 to 2.36.0

    build(deps): bump github.com/gofiber/fiber/v2 from 2.35.0 to 2.36.0

    Bumps github.com/gofiber/fiber/v2 from 2.35.0 to 2.36.0.

    Release notes

    Sourced from github.com/gofiber/fiber/v2's releases.

    v2.36.0

    🚀 New

    🐛 Fixes

    • Padding around app name in startup message when containing non-ascii characters (#1987)
    • Closes #1931 "🤗 How to get path param before a custom verb?" (#1983)

    📚 Documentation

    • Translate to Indonesian Awesome List (#1980)

    Thank you @​Maxi-Mega, @​efectn, @​radenrishwan and @​tohutohu for making this update possible.

    Commits
    • 1cca495 try to stabilize Test_Test_Timeout
    • 7108b44 prepare release v2.36.0
    • c59370f prepare release v2.36.0
    • e49880c :art: Fix padding around app name in startup message when containing non-asci...
    • 43133be 🔥 Add OnPrefork Hooks so you can get the PID of the child process. (#1974)
    • 4103f94 :sparkles: feature: customizable colors (#1977)
    • ff1e010 Closes #1931 "🤗 How to get path param before a custom verb?" (#1983)
    • ad89ba4 fix README_it.md (#1980)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Uniqush is a free and open source software system which provides a unified push service for server side notification to apps on mobile devices.

Homepage Download Blog/News @uniqush Introduction Uniqush (\ˈyü-nə-ku̇sh\ "uni" pronounced as in "unified", and "qush" pronounced as in "cushion") is

Jan 9, 2023
GTA(Go Task Async) is a lightweight reliable asynchronous task and transaction message library for Golang

GTA (Go Task Async) is a lightweight and reliable asynchronous task and transaction message library for by golang.

Jun 4, 2022
A lightweight, distributed and reliable message queue based on Redis

nmq A lightweight, distributed and reliable message queue based on Redis Get Started Download go get github.com/inuggets/nmq Usage import "github.com

Nov 22, 2021
Asynq: simple, reliable, and efficient distributed task queue in Go
Asynq: simple, reliable, and efficient distributed task queue in Go

Asynq Overview Asynq is a Go library for queueing tasks and processing them asynchronously with workers. It's backed by Redis and is designed to be sc

Dec 30, 2022
A library for scheduling when to dispatch a message to a channel

gosd go-schedulable-dispatcher (gosd), is a library for scheduling when to dispatch a message to a channel. Implementation The implementation provides

Sep 27, 2022
Alertmanager go message broker - A simple message broker made to integrate with alertmanager/prometheus

Alertmanager message broker Prerequisites Go 1.16+ Sqllite driver About: The alertmanager message broker is a project made to meet some of my needs to

Dec 27, 2021
Bark is an iOS App which allows you to push customed notifications to your iPhone.
Bark is an iOS App which allows you to push customed notifications to your iPhone.

Bark is an iOS App which allows you to push customed notifications to your iPhone.

Jan 3, 2023
Open source Observability Platform. 👉 SigNoz helps developers find issues in their deployed applications & solve them quickly
Open source Observability Platform. 👉 SigNoz helps developers find issues in their deployed applications & solve them quickly

SigNoz SigNoz is an opensource observability platform. SigNoz uses distributed tracing to gain visibility into your systems and powers data using Kafk

Jan 4, 2023
May 11, 2023
Simple push notification system (android/fcm, apns/slideshow) written by Golang

Golang Push Notification Simple system push notification for android/fcm and apn

Dec 20, 2021
A tiny wrapper around NSQ topic and channel :rocket:

Event Bus NSQ A tiny wrapper around go-nsq topic and channel. Protect nsq calls with gobreaker. Installation go get -u github.com/rafaeljesus/nsq-even

Sep 27, 2022
RapidMQ is a pure, extremely productive, lightweight and reliable library for managing of the local messages queue

RapidMQ RapidMQ is a pure, extremely productive, lightweight and reliable library for managing of the local messages queue in the Go programming langu

Sep 27, 2022
Go client to reliable queues based on Redis Cluster Streams

Ami Go client to reliable queues based on Redis Cluster Streams. Consume/produce performance Performance is dependent from: Redis Cluster nodes count;

Dec 12, 2022
💨A well crafted go packages that help you build robust, reliable, maintainable microservices.

Hippo A Microservices Toolkit. Hippo is a collection of well crafted go packages that help you build robust, reliable, maintainable microservices. It

Aug 11, 2022
replicate messages from streaming channel to jetstream

NATS Streaming/Jetstream Replicator [SJR] Introduction This project replicates messages from streaming channels to jetstream. but why? At Snapp when w

Dec 15, 2022
Golang push server cluster
Golang push server cluster

gopush-cluster gopush-cluster is a go push server cluster. Features light weight high performance pure golang implementation message expired offline m

Dec 28, 2022
A push notification server written in Go (Golang).
A push notification server written in Go (Golang).

gorush A push notification micro server using Gin framework written in Go (Golang) and see the demo app. Contents gorush Contents Support Platform Fea

Jan 8, 2023
A Multi Consumer per Message Queue with persistence and Queue Stages.
 A Multi Consumer per Message Queue with persistence and Queue Stages.

CrimsonQ A Multi Consumer per Message Queue with persistence and Queue Stages. Under Active Development Crimson Queue allows you to have multiple cons

Jul 30, 2022
The Bhojpur MDM is a software-as-a-service product used as a Mobile Device Manager based on Bhojpur.NET Platform for application delivery.

Bhojpur MDM - Mobile Device Manager The Bhojpur MDM is a software-as-a-service product used as a Mobile Device Manager based on Bhojpur.NET Platform f

Dec 31, 2021