Can we send push notification to APNs from iOS dev

2019-01-20 10:00发布

问题:

I want to send push notification from a iOS device to another iOS device without using backend server. Is it possible for an iOS device to act like a server and send push notification to APNs server?. Thanks in advance.

回答1:

Theoretically you can send Apple Push Notifications from a device directly to another device. All you need are the push certificate of the app, the device token of the device you are sending the notification to, and code that establishes a secure TLS connection to the APNS servers.

However, there are several practical problems that make the use of a server almost mandatory :

  1. You need a single place where all the device tokens of all the devices that installed your app will be sent to and persisted in. The best such place would be a server. Without a server, how would device A send its device token to other devices that want to send it push notifications?

  2. Apple require that you keep connections with the APNS server open for as long as possible and use the same connection for sending many notifications. If you open a connection to APNS server on your device, it will probably be short lived (since devices switch networks frequently, and don't stay connected to the internet all the time). Therefore, if you try to send many notifications frequently, and each time use a new connection to APNS, you will probably be banned (since Apple would treat this as DDoS attack).

  3. If you store the push certificate in each device that installs your app (to allow it to send push notifications to other devices directly), aside from the security issue of storing the certificate is many places, you'll have to publish a new version of your app each time the push certificate expired (once a year), and push notifications would stop working for users who don't upgrade to the new version.



回答2:

Try NWPusher.

It has an iOS framework for sending pushes and has an iOS demo application that sends push notifications from iOS to iOS.



回答3:

You also need to consider Server costs (other than maintenance and development time if you code your own server).

By sending the push directly from the app device:
- you obtain a much better scalability (since you don't have to centralize everything on your server)
- you don't have to pay for server cost or other service's cost

You can use for iOS: - https://github.com/noodlewerk/NWPusher Pusher

And for Android: - Send push notification GCM by java