我正在尝试确定用户是否使用phonegap(版本1.7)为我的应用启用了推送通知。
到目前为止,我只提出了this插件,该插件没有专门用于检查该问题的方法,但确实有一种方法来注册推送通知,这可能会返回错误,这可能是一个指示用户禁用推送通知。但正如你所看到的,那是非常模糊的。
所以我的问题是 - 是否有插件(或任何其他方式)来确定用户是否为我的应用启用了推送通知?
答案 0 :(得分:4)
您可以使用以下方法检查是否启用了任何类型的推送通知:
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
}
如果注册失败(didFailToRegisterForRemoteNotificationsWithError),您可以向服务器发送带有错误数据的Not resetset。
设备准备好后,从phonegap端向服务器发送一个ajax请求,并检查您的设备是否已注册。要获得唯一ID,您可以使用简单的插件。要编写简单的插件,请遵循此http://docs.phonegap.com/en/edge/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide很遗憾,您无法通过应用代码为应用启用或停用推送通知。 check this