从Python代码发送Apple的推送通知

时间:2012-01-22 11:40:32

标签: python django cocoa-touch apple-push-notifications udid

我想从Python代码(Django应用程序)向客户端的手机发送推送通知。

我找到了几个实现,其中一个是:http://leepa.github.com/django-iphone-push/

我的问题是 - 如何识别我要向其发送通知的设备?我应该使用手机的UDID吗?我担心它已经在iOS5中被弃用了,所以我想知道如何在Django服务器中将用户与手机联系起来?

2 个答案:

答案 0 :(得分:2)

Apple只允许您向安装了iOS应用程序的设备发送通知,并且用户已允许您的应用向其设备发送通知。您可以在this developer document中找到有关Apple如何处理(推送)通知的更多信息。

如果您没有iOS应用程序但仍希望向用户发送通知,则可以考虑使用Prowl,Notifio或Boxcar。这些应用程序允许您使用其API将通知发送到用户设备。对于大多数这些服务,它们都是可用的Python包。

答案 1 :(得分:1)

来自文档:

  

注意:设备令牌与UIDevice的uniqueIdentifier属性返回的设备UDID不同。

通过在应用程序中注册远程通知来获取使用的令牌:didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ...
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    // ...
}

如果注册成功,您的应用代表将收到应用:didRegisterForRemoteNotificationsWithDeviceToken:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *deviceTokenStr = [[[[deviceToken description]
                                  stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                                 stringByReplacingOccurrencesOfString: @">" withString: @""] 
                                stringByReplacingOccurrencesOfString: @" " withString: @""];
    NSLog(@"%@", deviceTokenStr);
}

这是您用来发送推送通知的令牌。

P.S。:django-iphone-push last commit是3年前。您可以尝试我的名为django-ios-push的分叉。