我正在尝试使用PhoneGap(版本1.7)确定用户是否启用了我的应用程序的推送通知。
到目前为止,我只找到了this插件,它没有专门检查该问题的方法,但确实有一种方法可以注册推送通知,这可能会返回一个错误,这可能表明用户禁用了推送通知。但是,正如您所见,这非常模糊。
因此,我的问题是 - 是否有插件(或任何其他方式)可以确定用户是否启用了我的应用程序的推送通知?
我正在尝试使用PhoneGap(版本1.7)确定用户是否启用了我的应用程序的推送通知。
到目前为止,我只找到了this插件,它没有专门检查该问题的方法,但确实有一种方法可以注册推送通知,这可能会返回一个错误,这可能表明用户禁用了推送通知。但是,正如您所见,这非常模糊。
因此,我的问题是 - 是否有插件(或任何其他方式)可以确定用户是否启用了我的应用程序的推送通知?
您可以使用以下方法检查是否启用了任何类型的推送通知:
if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone)
这个状态可以通过在设备准备好后调用一个简单的插件来访问。
更新:编写一个插件,在该插件中检查状态并返回到javascript
如果您需要先将其保存在服务器上,那么第一件事是您需要一个服务器端API和一些本机端代码,注册iOS推送通知后有两个回调函数
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
}