我正在尝试确定用户是否使用 phonegap(1.7 版)为我的应用启用了推送通知。
到目前为止,我只提出了这个插件,它没有专门检查该问题的方法,但确实有注册推送通知的方法,这可能会返回错误,这可能是用户禁用推送通知的指示。但正如你所看到的,这是非常模糊的。
所以我的问题是 - 是否有插件(或任何其他方式)来确定用户是否为我的应用启用了推送通知?
我正在尝试确定用户是否使用 phonegap(1.7 版)为我的应用启用了推送通知。
到目前为止,我只提出了这个插件,它没有专门检查该问题的方法,但确实有注册推送通知的方法,这可能会返回错误,这可能是用户禁用推送通知的指示。但正如你所看到的,这是非常模糊的。
所以我的问题是 - 是否有插件(或任何其他方式)来确定用户是否为我的应用启用了推送通知?
您可以使用以下方法检查是否启用了任何类型的推送通知:
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:@""];
[自我 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
遗憾的是,您无法通过应用代码为您的应用启用或禁用推送通知。 检查这个