PHP рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ Android рдФрд░ iOS рдХреЗ рд▓рд┐рдП рдкреБрд╢рдУрд╡рд░ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рд╕реЗрд╡рд╛ рд╕реЗ рдЫреЛрдЯреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрджреЗрд╢ рд╣реИрдВ рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рд╕реАрдзреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ рдРрд╕реА рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рд▓рд╛рдн, рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢рдХреНрддрд┐ рдФрд░ рдореЗрдореЛрд░реА рдкрд░ рдЦрд░реНрдЪ рдХрд░рдирд╛ред
рдореИрдВ рдпрд╣рд╛рдВ рджреВрд░рд╕реНрде рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрдХрдиреАрдХ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╣реЛ рдЪреБрдХрд╛ рд╣реИ ред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рд╕рдордп-рд╕рдордп рдкрд░ рдбреЗрдореЙрди рд╕рд░реНрд╡рд░ рдХреЛ рдкреЛрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рдХреЛрдИ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╣рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
IOS рдХреЗ рд▓рд┐рдП, рд╡реЗ рдПрдВрдбреНрд░реЙрдЗрдб, C2DM-GCM рдХреЗ рд▓рд┐рдП APNS рдХреЗ рд╕рд╛рде рдЖрдП, рд▓реЗрдХрд┐рди рдореИрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рд▓рд╛рдЙрдб) рдкреБрд╢рдУрд╡рд░ рд╕реЗрд╡рд╛ рдФрд░ рдЗрд╕рдХреЗ php рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг


рдорд╛рди рд▓реЗрдВ рдХрд┐ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╣рдо рдкреНрд░рддрд┐ рджрд┐рди рдПрдХ рд╕рд╛рдЗрдЯ рдкрд░ рдЖрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рд╛рдЗрдЯ PHP рдФрд░ mySQL рдореЗрдВ рдХреБрдЫ рд╕реАрдПрдордПрд╕ рдкрд░ рдШреВрдорддреА рд╣реИ, рдореЗрдЬрдмрд╛рди рдХреЗ рдкрд╛рд╕ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢ рдЖрдИрдлреЛрди рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рд╣реИрдВред
рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рдг рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдХреЗрддрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдпрд╣ рдПрдХ рд╕рд╢рд░реНрдд рд░рдХреНрддрд╕реНрд░рд╛рд╡реА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЫреЛрдЯреА рдмрд╛рдд


рдкреБрд╢рдУрд╡рд░ рдПрдХ рдорд╛рдореВрд▓реА рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛ рд╣реИ , рд╕рд╛рде рд╣реА рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди, рдмреНрд▓реИрдХрдмреЗрд░реА рдФрд░ рдУрдПрд╕ рдПрдХреНрд╕ рдорд╛рдЙрдВрдЯреЗрди рд▓рд╛рдпрди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛рдмрджреНрдз рд╢рд┐рд▓реНрдкред рд╕реЗрд╡рд╛ рдХрд╛ рдЕрдкрдирд╛ рдПрдкреАрдЖрдИ рд╣реИ , рдпрд╣ рдкреНрд░рддрд┐ рдорд╛рд╣ 7.5 рд╣рдЬрд╛рд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рд╕рдВрджреЗрд╢, 512 рд╡рд░реНрдгреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рдХреЗ рдореБрдЦреНрдп рдкрд╛рда рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрдбрд╝рд╛ рд╢реАрд░реНрд╖рдХ, URL (рддрдм рд╕рдВрджреЗрд╢ рдХреА рд▓рдВрдмрд╛рдИ рдмрдврд╝рдХрд░ 500 рд╣реЛ рд╕рдХрддреА рд╣реИ) рдФрд░ рдЗрд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ (рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрдард┐рдд рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдЕрдВрддрд░ рд╣реИ)ред рдПрдХ рд╕рдВрджреЗрд╢ рдЪрдпрдирд┐рдд рдЪрдпрдирд┐рдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкрд░ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд╢рд╛рдВрдд" рдШрдВрдЯреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЬрдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рде рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рдЖрдПрдВрдЧреАред
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рдпрд╛ рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдирд╛ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реЗрд╡рд╛ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ


рдкрдВрдЬреАрдХрд░рдг рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╡рд╣ рддреБрд░рдВрдд рдЕрдкрдиреЗ рд╣реИрд╢ рдЯреЛрдХрди рджреЗрдЦрддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬреА рдЬрд╛рдПрдВрдЧреАред
рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЕрдкрдиреЗ рдлреЛрди / рдЯреИрдмрд▓реЗрдЯ / рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдЯреЛрд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред

рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝рдирд╛

рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝рдирд╛ рдХреЛрдИ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рд╕реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ , рдЬрд╣рд╛рдВ рдЙрддреНрдкрд╛рдж рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ:

рдЙрдкрдпреБрдХреНрдд рдлрд╝реАрд▓реНрдб рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЛрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ рдмрд╛рдж рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рд╢реЗрдбреНрдпреВрд▓ рд╣реЛрдЧрд╛ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдЬреЛрдбрд╝рдирд╛

... рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдХреЛрдИ рднреА рдРрдкреНрд▓реАрдХреЗрд╢рди рдХрд┐рд╕реА рднреА рдпреВрдЬрд░ рдХреЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рднреЗрдЬ рд╕рдХрддреА рд╣реИ рдЕрдЧрд░ рдЙрд╕реЗ рдЙрд╕рдХрд╛ рдЯреЛрдХрди рдкрддрд╛ рд╣реИред рдЖрдмрд╛рджреА рд╕реЗ рдЯреЛрдХрди рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдЖрд╡реЗрджрди рдХреА рдЕрдВрддрд░рд╛рддреНрдорд╛ рдХреА рдЖрд╡рд╛рдЬ рдкрд░ рд░рд╣рддреА рд╣реИред рд╕рд╛рде рд╣реА рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░реНрд╕ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ред

рдПрдкреАрдЖрдИ

рдЫреЛрдЯрд╛ , рд╕рдорддрд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдпред POST рдЕрдиреБрд░реЛрдз рдореЗрдВ api.pushover.net/1/messages.json рдпрд╛ api.pushover.net/1/messages.xml рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ рдиреНрдпреВрдирддрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:


рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ json рдпрд╛ xml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬрд┐рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╕реНрдерд┐рддрд┐ рдлрд╝реАрд▓реНрдб рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдиреНрдпрдерд╛, рд╕реНрдерд┐рддрд┐ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣реЛрдЧрд╛, рдФрд░ рддреНрд░реБрдЯрд┐ рдлрд╝реАрд▓реНрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрдЧреАред рдпрд╣рд╛рдБ рд╕рдлрд▓ рдФрд░ рдЕрд╕рдлрд▓ XML рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рд╣реИрдВ:
<?xml version="1.0" encoding="UTF-8"?> <hash> <status type="integer">1</status> </hash> 
рдФрд░
 <?xml version="1.0" encoding="UTF-8"?> <hash> <token>invalid</token> <errors type="array"> <error>application token is invalid</error> </errors> <status type="integer">0</status> </hash> 


рдкреАрдПрдЪрдкреА


рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдФрд░ рдЦрдВрдбреЛрдВ рдореЗрдВ рдлреИрдХреНрд╕ рдореЗрдВ "рджреЗрдЦреЛ рдпрд╣ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ!"
CURL рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЬрд╝рдлреАрдЧрд░рд┐рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛

рдЕрдм рдмрд┐рдирд╛ рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рдХрд╣рд╛рдВ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ рдпрд╛ рддреЛ рд╕рд╣реА / рдЧрд▓рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреВрд░реА рд╢реАрдЯ рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рдВ, рдЖрдо рддреМрд░ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд╕рд╛рдЗрдЯ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдпрд╛ рд╡рд╣ рд╕рдВрджреЗрд╢ рдХреНрдпреЛрдВ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рдХрдХреНрд╖рд╛рдПрдВ рдЧреАрдерд╣рдм рдкрд░ рдЫреЛрдбрд╝ рджреА рд╣реИрдВред
рд╡рд░реНрдЧ PushoverException
 class PushoverException extends Exception { /** * Messages array * @var array */ private $fMessages; /** * Exception constructor * @param array $aMessages An array of messages */ public function __construct(array $aMessages) { parent::__construct('PushoverException exception'); $this->fMessages = $aMessages; } /** * Get messages array * @return array */ public function getMessages() { return empty($this->fMessages) ? array() : $this->fMessages; } } 

рдХрдХреНрд╖рд╛ рдзрдХреНрдХрд╛
 class Pushover { /* * Pushover json api service url */ const C_API_URL = 'https://api.pushover.net/1/messages.json'; /** * Properties storage array * @var array */ private $fProperties; /** * cURL instance */ private $fCurl; //--------------------------------------------------------------------------// /** * Properties getter * @param string $aPropertyName Property name * @return mixed */ public function __get($aPropertyName) { if(array_key_exists($aPropertyName, $this->fProperties)) return $this->fProperties[$aPropertyName]; return null; } /** * Properties setter * @param string $aPropertyName Property name * @param mixed $aValue Property value */ public function __set($aPropertyName, $aValue) { $this->fProperties[$aPropertyName] = $aValue; } //--------------------------------------------------------------------------// /** * Class constructor * @param string $aApplicationToken Application token */ public function __construct($aApplicationToken = null) { if(!empty($aApplicationToken)) $this->applicationToken = $aApplicationToken; $this->fCurl = curl_init(); curl_setopt($this->fCurl, CURLOPT_URL, self::C_API_URL); curl_setopt($this->fCurl, CURLOPT_HEADER, false); curl_setopt($this->fCurl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->fCurl, CURLOPT_SSL_VERIFYPEER, false); } /** * Class destructor */ public function __destruct() { curl_close($this->fCurl); } //--------------------------------------------------------------------------// /** * Throws an exceprion with single message * @param mixed $aMessage * @throws PushoverException */ public function throwMessage($aMessage) { throw new PushoverException(array($aMessage)); } /** * Throws an exceprion with an array of messages * @param array $aMessages * @throws PushoverException */ public function throwMessages(array $aMessages) { throw new PushoverException($aMessages); } //--------------------------------------------------------------------------// /** * Send pushover notification */ public function send() { if(!strlen($this->applicationToken)) $this->throwMessage('Application token is empty'); if(!strlen($this->userToken)) $this->throwMessage('User token is empty'); if(!strlen($this->notificationMessage)) $this->throwMessage('Notification message is empty'); if(intval($this->notificationTimestamp) <= 0) $this->notificationTimestamp = time(); $lSendParams = array( 'token' => $this->applicationToken, 'user' => $this->userToken, 'device' => $this->userDevice, 'title' => $this->notificationTitle, 'message' => $this->notificationMessage, 'priority' => $this->notificationPriority, 'timestamp' => $this->notificationTimestamp, 'url' => $this->notificationUrl, 'url_title' => $this->notificationUrlTitle ); foreach($lSendParams as $lKey => $lParam) if(empty($lParam)) unset($lSendParams[$lKey]); curl_setopt($this->fCurl, CURLOPT_POSTFIELDS, $lSendParams); $lResponseJson = curl_exec($this->fCurl); if($lResponseJson === false) $this->throwMessage('API request error'); $lResponse = json_decode($lResponseJson, true); if(empty($lResponse) || !is_array($lResponse)) $this->throwMessage('Bad API response'); if(!empty($lResponse['errors'])) $this->throwMessages($lResponse['errors']); if(empty($lResponse['status']) || intval($lResponse['status']) != 1) $this->throwMessage('Unknown notification send error'); } } 



рдиреНрдпреВрдирддрдо рд╕рдВрджреЗрд╢ рдЕрдм рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 $lPushover = new Pushover(' '); $lPushover->userToken = ' '; $lPushover->notificationMessage = ' '; try { $lPushover->send(); echo '<font color="green">Message sent</font>', PHP_EOL; } catch (PushoverException $aException) { echo '<font color="red">Error sending messages</font><br>', PHP_EOL; echo '<ul>', PHP_EOL; foreach($aException->getMessages() as $lMessage) echo '<li>', $lMessage, '</li>', PHP_EOL; echo '</ul>', PHP_EOL; } 

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рд╣рдо рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рджреВрд░рд╕реНрде рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ PHP рд╕реЗ рд╕рд╛рдЗрдЯ рдкрд░ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рд╣реИред

Source: https://habr.com/ru/post/In159649/


All Articles