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

Posted

技术标签:

【中文标题】检查用户是不是使用 phonegap 1.7 在 iPhone 上启用了推送通知【英文标题】:Checking if user enabled push notification on iPhone using phonegap 1.7检查用户是否使用 phonegap 1.7 在 iPhone 上启用了推送通知 【发布时间】:2013-08-22 14:55:54 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

可以通过在设备准备好后调用一个简单的插件来访问此状态。

更新:编写一个插件并在该插件中检查状态并返回到javascript

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

    didFailToRegisterForRemoteNotificationsWithError

    didRegisterForRemoteNotificationsWithDeviceToken

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

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

    NSString *token = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"" withString:@""] stringByReplacingOccurrencesOfString:@"" withString:@""];

    [自我 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,您可以使用简单的插件。要编写简单的插件,请关注http://docs.phonegap.com/en/edge/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

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

【讨论】:

感谢重播,但我的问题是:我怎么知道用户在他的 iPhone 上为我的应用勾选了“允许推送通知”。这似乎没有回答它(除非我错过了什么)。 我不想通过应用代码为我的应用启用或禁用推送通知。我想知道用户为我的应用选择了什么。如果他为我的应用启用或禁用推送通知。 @OrenA 检查编辑“您可以检查是否启用了任何类型的推送通知:”如果未启用则表示用户禁用! 但这是本机代码,我想用 phonegap 来做!如标题所述:检查用户是否使用 phonegap 1.7 在 iPhone 上启用推送通知 在phonegap中我们可以写插件,只要写一个插件,在插件里面检查状态。docs.phonegap.com/en/edge/…

以上是关于检查用户是不是使用 phonegap 1.7 在 iPhone 上启用了推送通知的主要内容,如果未能解决你的问题,请参考以下文章

检查 Phonegap 应用程序是不是在 iPad 或 iPhone 上运行

检查 facebook 应用程序是不是安装在 phonegap 的“SocialSharing”插件中

如何检查该应用在 PhoneGap Build 上是不是有推送通知?

检查用户设备的 GPS 是不是开启

Phonegap 每 5 分钟在后台唤醒应用程序以检查位置 iOS

检查ios phonegap中的相机是不是存在