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

3

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

到目前为止,我只找到了this插件,它没有专门检查该问题的方法,但确实有一种方法可以注册推送通知,这可能会返回一个错误,这可能表明用户禁用了推送通知。但是,正如您所见,这非常模糊。

因此,我的问题是 - 是否有插件(或任何其他方式)可以确定用户是否启用了我的应用程序的推送通知?

1个回答

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]; // 请求到您的服务器

      }

要发送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),您可以向服务器发送带有错误数据的请求,或者不发送请求。
从PhoneGap方面,在设备准备就绪后,向您的服务器发送一个AJAX请求并检查您的设备是否已经注册。为了获取唯一的ID,您可以使用简单的插件。如果要编写简单的插件,请按照此 Plugin Development Guide 进行操作。
不幸的是,您无法通过应用程序代码启用或禁用推送通知。请参阅此处

谢谢回复,但我的问题是:我如何知道用户在他的iPhone上为我的应用程序勾选了“允许推送通知”。这似乎没有回答我的问题(除非我漏掉了什么)。 - Oren A
我不想从应用程序代码中启用或禁用推送通知。我想知道用户为我的应用程序选择了什么。如果他启用或禁用了我的应用程序的推送通知。 - Oren A
@OrenA,请检查编辑内容“您可以检查是否启用了任何类型的推送通知:”,如果未启用表示用户已禁用! - Arjun T Raj
但这是本地代码,我想用PhoneGap做!正如标题所述:使用PhoneGap 1.7检查用户是否在iPhone上启用了推送通知 - Oren A
在PhoneGap中,我们可以编写插件,只需编写一个插件并在插件内部检查状态即可。http://docs.phonegap.com/en/edge/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide - Arjun T Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接