2012-05-02 251 views
5

是否可以向特定设备发送iOS推送通知?我已经构建了一个论坛类型的应用程序,用户可以创建一个问题,其他人可以回答。我需要发送一个iOS推送通知给特定用户,通知他们问题已回答。这可能通过PHP或其他方法完成吗?iOS推送通知给特定用户?

回答

9

是的,你绝对可以发送推送通知给特定的设备。

首先你需要询问设备是否允许接收推送通知:

[[UIApplication sharedApplication] 
registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | 
            UIRemoteNotificationTypeSound | 
            UIRemoteNotificationTypeAlert)]; 

然后,如果用户接受,您将收到委托消息didRegisterForRemoteNotificationsWithDeviceToken。然后,您将该deviceToken传递到您的服务器,并使用来自您的应用的用户标识来标识论坛中的用户。事情是这样的:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)_deviceToken { 

    NSString* deviceToken = [[[[_deviceToken description] 
          stringByReplacingOccurrencesOfString: @"<" withString: @""] 
          stringByReplacingOccurrencesOfString: @">" withString: @""] 
          stringByReplacingOccurrencesOfString: @" " withString: @""]; 

    //send deviceToken and your userId to your server to associate the two together 
} 

然后,你需要建立它发送的通知,我不会进入这里有一吨的文档的在线为,这是相当复杂的推送服务器。您也可以为此使用第三方服务,例如Urban Airship和StackMob。

+1

+1。等等,你依赖于' - [NSData description]'的格式?撤销upvote。 – 2012-10-03 20:30:37

2

当您发送推送通知时,设备会获取您用于发送给Apple的唯一ID,以告知他们将消息发送给谁。 当你得到这个唯一的ID时,你将它发送到你的服务器,当你这样做时,你可以包括任何其他数据,如用户名,参考等。
更多的是服务器端问题,而不是iOS问题。

2

马特乌斯,

TL;博士:是的,可以。

由于您的论坛应用程序是用PHP编写的,这里有一些框架,可能对你有用:如果你最终使用Easy APNS

: 您可以使用一组用户标识符将消息发送给单个用户(如您的示例中),或发送给一组用户(可能是每个“监视”该线程的用户)。有不少例子可以在这里找到:https://github.com/manifestinteractive/easyapns/blob/master/src/php/samples.php

1

当然,也有很多免费的推送通知服务器 - 例如QuickBlox 你不需要任何服务器代码,QuickBlox已经写了一切为您。

只需看看Push Notifications iOS sample - 此示例使您能够通过API或易于使用的管理面板随时向特定用户或用户组发送通知和警报。 只需下载它,将一些代码从它移动到您的应用程序 - 并享受它。