检查用户是不是使用 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 上是不是有推送通知?