【问题标题】: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 插件,它没有专门检查该问题的方法,但确实有注册推送通知的方法,这可能会返回错误,这可能是对用户禁用推送通知。但正如您所见,这是非常模糊的。

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

【问题讨论】:

    标签: iphone cordova push-notification


    【解决方案1】:

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

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

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

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

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

    1. didFailToRegisterForRemoteNotificationsWithError
    2. 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/…
    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多