Java 来自服务器的APNS推送通知

Java 来自服务器的APNS推送通知,java,ios,apple-push-notifications,Java,Ios,Apple Push Notifications,我有一个用JAVA编写的web应用程序,我想从我的服务中推送通知。我无法使用来自浏览器的本地通知,因为我的目标是iOS(平板电脑)。所以我想用APNs。如果我想向设备发送消息,我需要来自此设备的令牌;)。所以我的问题是 我怎样才能得到这个代币 编辑: 我没有确切的一件事。可以在没有任何本机解决方案的情况下获取设备的令牌。例如,平板电脑连接到我们的网站,做一些事情,我们想回答使用通知。以及如何获取发送此消息的令牌。您可以通过此方法获取设备令牌。将此方法放在appdelegate.m类中。确保在真实

我有一个用JAVA编写的web应用程序,我想从我的服务中推送通知。我无法使用来自浏览器的本地通知,因为我的目标是iOS(平板电脑)。所以我想用APNs。如果我想向设备发送消息,我需要来自此设备的令牌;)。所以我的问题是

  • 我怎样才能得到这个代币
  • 编辑:
    我没有确切的一件事。可以在没有任何本机解决方案的情况下获取设备的令牌。例如,平板电脑连接到我们的网站,做一些事情,我们想回答使用通知。以及如何获取发送此消息的令牌。

    您可以通过此方法获取设备令牌。将此方法放在appdelegate.m类中。确保在真实设备中运行iOS应用程序。如果在虚拟设备(模拟器)中运行应用程序,则无法找到设备令牌

    - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
    {
        NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
        token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
        NSLog(@"content---%@", token);
    } 
    
    -(无效)应用程序:(UIApplication*)应用程序注册器用于删除deviceToken:(NSData*)deviceToken
    {
    NSString*标记=[[deviceToken description]stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@”“];
    token=[token StringByReplacingOfString:@“with String:@]”的发生率;
    NSLog(@“内容-%@”,令牌);
    } 
    
    为了获取此设备令牌,ios应用程序必须请求注册推送通知服务,这将导致一个对话框,请求允许此应用程序向您发送通知。如果ios用户说是,则设备将注册推送通知,并将提供一个设备令牌

    ios应用程序开发人员必须将此设备令牌发送到服务器,然后只有服务器才能使用此设备令牌并将其发送到APNS

    要从ios设备注册推送通知,请使用以下方法

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge];
    
    如果ios用户允许,则会调用下面的方法,该方法将为您提供需要发送到服务器以从服务器发布通知的设备令牌

    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
      NSString * deviceTokenstring = [[[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"device token :%@",deviceTokenstring);
    NSURLConnection *urlConnection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:REMOTENOTIFICATION_URL,deviceTokenstring]]] delegate:self];
    [urlConnection start];
    
    }
    
    -(void)应用程序:(UIApplication*)应用程序DIDregisterforRemotionTificationswithDeviceToken:(NSData*)deviceToken
    {
    NSString*DeviceTokennstring=[[deviceToken description]stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@”“]]StringByReplacingOfString:@”“withString:@”“]的发生率;
    NSLog(@“设备令牌:%@”,设备令牌安装);
    NSURLConnection*urlConnection=[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString STRING STRING stringWithFormat:REMOTENOTIFICATION_URL,deviceTokenstring]]委托:self];
    [urlConnection start];
    }
    
    不幸的是,如果iOS设备上没有本机应用程序,就无法使用APNS。推送通知令牌对于每个设备上的每个应用都是唯一的-因此从一个应用获得的令牌不能与同一设备上的另一个应用一起使用(有一个例外,来自同一开发人员的应用可以共享令牌)

    此外,推送通知服务依赖于由开发者使用Apple开发者门户管理的数字证书

    最后,当推送通知发送到iOS设备时,它实际上会被发送到相应的应用程序进行处理——因此,如果设备上没有本机应用程序,那么就没有什么可以处理通知


    您可以在

    O中获得有关APNS编程的详细信息,我没有精确的说明。我必须在没有任何本地解决方案的情况下得到这个。这一切都必须通过浏览器和http来解决。这意味着您不想使用此方法。我认为除了它之外,没有其他方法可以获取设备令牌。因此,不可能让该设备获取令牌并发送到服务器,并且服务器使用该令牌发送通知?而且都没有本机iOS应用程序。APNS需要与iOS设备上的本机应用程序通信。如果没有应用程序,则不需要注册通知,也不需要接收通知。