使用phonegap 1.7检查用户是否在iPhone上启用了推送通知

时间:2013-08-22 14:55:54

标签: iphone cordova push-notification

我正在尝试确定用户是否使用phonegap(版本1.7)为我的应用启用了推送通知。

到目前为止,我只提出了this插件,该插件没有专门用于检查该问题的方法,但确实有一种方法来注册推送通知,这可能会返回错误,这可能是一个指示用户禁用推送通知。但正如你所看到的,那是非常模糊的。

所以我的问题是 - 是否有插件(或任何其他方式)来确定用户是否为我的应用启用了推送通知?

1 个答案:

答案 0 :(得分:4)

您可以使用以下方法检查是否启用了任何类型的推送通知:

if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone)

设备就绪后,调用一个简单的插件即可访问此状态。

更新:编写插件并在该插件中查看状态并返回javascript

如果您需要将它保存在服务器上,首先需要一个服务器端API和一些本机端代码,在ios上注册推送通知后,有两个回调函数

  1. didFailToRegisterForRemoteNotificationsWithError
  2. didRegisterForRemoteNotificationsWithDeviceToken

    如果成功,您可以使用设备ID或任何唯一ID向您的服务器发送请求,以便保存已注册的设备。

    • (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

      NSString * token = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@“<”withString:@“”] stringByReplacingOccurrencesOfString:@“>” withString:@ “”]                      stringByReplacingOccurrencesOfString:@“”withString:@“”];

      [self postUpdateRequest:token]; //请求到您的服务器

      }

  3. 用于发送POST请求

     NSURL *aUrl = [NSURL URLWithString:uRI];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    
        [request setHTTPMethod:@"POST"];
       NSString *postString =@"Your Data";
         [request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
    
       NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request
                                                                   delegate:self];
      [connection start];
            if(connection) {
           // success
            } else {
           //error
            }
    

    如果注册失败(didFailToRegisterForRemoteNotificationsWithError),您可以向服务器发送带有错误数据的Not resetset。

    设备准备好后,从phonegap端向服务器发送一个ajax请求,并检查您的设备是否已注册。要获得唯一ID,您可以使用简单的插件。要编写简单的插件,请遵循此http://docs.phonegap.com/en/edge/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

    很遗憾,您无法通过应用代码为应用启用或停用推送通知。 check this