标签: apple-push-notifications

iOS聊天APNS,套接字或时间间隔

我正在为iPhone制作聊天应用程序,但我不确定对话消息应该如何立即出现.

我已经阅读了关于此主题的大量Google搜索结果.也是曾经的:
- http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
- http://www.raywenderlich.com/3443/苹果推送通知服务教程部分-12

APNS方法:
将一个不可见的通知推送到iPhone,表示准备好读取新消息.因此,该应用程序将发出未读消息的请求.因此,我不会手动轮询新消息,而是让APNS帮忙.但我不确定?

套接字方法:
建立一个可以共享数据的套接字连接.在db中找到新消息时,它会自动将数据发送到应用程序.但是IP范围,防火墙,功耗等等呢?再次,我不确定:(

轮询方法:
制定一个我轮询请求的时间间隔,耗电量是我的敌人.

我的问题:
- 哪种方法最好?
- 其他建议?
- 我真的需要一些有这方面经验的人的利弊和专业人士.

例子总是好的.
谢谢

sockets iphone chat apple-push-notifications ios

22
推荐指数
1
解决办法
6597
查看次数

iOS推送通知设置 - 拒绝权限与权限从未请求

是否有可能区分其中的情况

  1. iOS用户已明确拒绝用户通知权限,并且
  2. 从未提示iOS用户获得许可?

我的情况:过去,我已经提示用户通知权限,但我从未跟踪过请求.后来,我停止尝试注册任何通知设置.现在,我想重新介绍用户通知.

在应用程序中发生重大事件后,我的计划是显示某种UI,以解释选择加入用户通知的好处.但是,如果用户已拒绝,我宁愿显示一个可以将其带入Settings.app的单独UI.

目前,我正在使用-[UIApplication currentUserNotificationSettings]抓取当前设置,但似乎这会返回UIUserNotificationTypeNone上述两种情况.

push-notification apple-push-notifications ios ios-permissions

22
推荐指数
1
解决办法
3521
查看次数

更改推送通知声音

如何使用自定义声音进行推送通知?

根据我的研究和阅读,我发现有效负载应该具有应用程序包中或应用程序数据容器的Library/Sounds文件夹中的文件名.

如何把文件放在那里?

push-notification apple-push-notifications ios

22
推荐指数
2
解决办法
4万
查看次数

适用于iOS的Google Firebase推送通知无法在生产环境中使用

我正在使用Google Firebase云消息传递API(FCM)向我的iOS应用发送推送通知. 当我在具有开发配置文件+开发推送通知(沙盒)证书的设备上测试应用程序时,我可以成功地使用推送通知.

但是我无法让它在生产环境中工作.我使用正确的生产配置文件和生产推送通知证书进行了临时构建.并通过iTunes将IPA文件同步到设备进行测试(不是直接来自xcode).我仍然无法从firebase控制台接收推送通知.

我已经将正确的开发和生产证书(带私钥)上传到firebase.我已经仔细检查过每一个可能出错的步骤,但是仍然无法找到问题.有没有办法解决这个问题?或者是不是可以将生产环境通知发送到AdHoc构建?

xcode apple-push-notifications ios firebase firebase-cloud-messaging

22
推荐指数
2
解决办法
5644
查看次数

获取APNs响应BadDeviceToken或Unregistered的可能原因是什么?

向iOS用户发送通知时,对于其中一些用户,我会收到响应状态码400(BadDeviceToken)或代码410(未注册).

从Apple关于"BadDeviceToken"的文档:

指定的设备令牌很糟糕.验证请求是否包含有效令牌以及令牌是否与环境匹配.

"坏"是什么意思?我知道设备令牌在某些时候是有效的.用户如何使其设备令牌变坏?

从关于"未注册"的文档:

设备令牌对于指定的主题处于非活动状态.

这是否意味着应用程序已被删除?或者这种反应可能还有其他原因.

apple-push-notifications http-headers ios http-status-code-400 http-status-code-410

22
推荐指数
3
解决办法
2万
查看次数

Apple Push Notification 服务服务器证书更新

2021 年 3 月 29 日,与 Apple 推送通知服务的基于令牌和证书的 HTTP/2 连接必须包含新的根证书 (AAACertificateServices 5/12/2020),以取代旧的 GeoTrust Global CA 根证书。为确保无缝过渡并避免推送通知传递失败,请在 3 月 29 日之前验证 HTTP/2 接口的新旧根证书都包含在每个通知服务器的信任存储中。

请注意,此时无需更新 Apple 向您颁发的 Apple Push Notification 服务 SSL 提供商证书。

我收到了关于更新推送通知证书的电子邮件。我已将 FCM (Firebase) 配置为使用 APNs 身份验证密钥发送推送通知。我还没有为推送通知生成任何证书。

我需要改变什么吗?

ssl apple-push-notifications ios firebase firebase-cloud-messaging

22
推荐指数
1
解决办法
3313
查看次数

aps_developer_identity.cer到p12而不必从Key Chain导出?

我有一个棚子负载从iPhone开发者门户网站导出"aps_developer_identity.cer"证书.它们都是使用相同的证书签名请求和(因此)相同的私钥创建的.如果我只从Apple Key Chain导出私钥,那么可以使用私钥和'aps_developer_identity.cer'并使用openssl创建我可以在我的(Windows)服务器上使用的合并的p12/pkcs#12证书.

为了清楚起见,我知道如何通过将私钥和证书一起导出来从密钥链中获取合并的p12,但是如果可以的话,我想删除所有额外的鼠标点击和输入.

openssl pkcs#12 apple-push-notifications

21
推荐指数
1
解决办法
4万
查看次数

推送通知ON或OFF在iOS中检查

如果应用程序正在运行(或从恢复模式打开),我想在iOS设备中检查"推送通知选项".如果选项为OFF,我使用以下代码进行检查:

-(void)PushNotificationServiceChecking
{
    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone)
    {
        NSString *msg = @"Please press ON to enable Push Notification";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Push Notification Service Disable" message:msg delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"ON", nil];
        alert.tag = 2;
        [alert show];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码进入"设置选项卡>>通知中心",以便用户可以手动操作:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 2)
    {
        if (buttonIndex == 0)
        {
            // this is the cancel button
        }
        else if (buttonIndex == 1)
        {
            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];
        }
    }

} …
Run Code Online (Sandbox Code Playgroud)

iphone push-notification apple-push-notifications ipad ios

21
推荐指数
3
解决办法
3万
查看次数

实现PushKit并测试开发行为

我想在我的应用程序(Voip应用程序)中实现PushKit服务,但我有以下疑问:我看到我只能生成生产voip证书,如果我尝试在开发设备上测试voip推送通知服务,它是否有效?

这是我的实施测试:

使用这3行代码,我可以在didUpdatePushCredentials回调中获取push令牌,用于保存到我的服务器中.

PKPushRegistry *pushRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
pushRegistry.delegate = self;
pushRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
Run Code Online (Sandbox Code Playgroud)

服务器端我生成一个只有警报文本的"正常"有效负载推送通知,然后我发送到存储在我服务器中的voip令牌.

我使用带有调试日志的回调,但它们永远不会被调用!

- (void)pushRegistry:(PKPushRegistry *)registry didInvalidatePushTokenForType:(NSString *)type {

          NSLog(@"didInvalidatePushTokenForType");

}

-(void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(NSString *)type {

          NSLog(@"didReceiveIncomingPushWithPayload: %@", payload.description);

}

-(void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(NSString *)type {
     if([credentials.token length] == 0) {
           NSLog(@"voip token NULL");

          return;
     }

      NSLog(@"didUpdatePushCredentials: %@ - Type: %@", credentials.token, type);

}
Run Code Online (Sandbox Code Playgroud)

如果我尝试从我的服务器生成推送通知消息,以便先前上传的voip设备令牌,我从未通知didReceiveIncomingPushWithPayload回调,但是从服务器我得到200 ok消息(消息已成功发送)

apple-push-notifications ios ios-frameworks ios8

21
推荐指数
2
解决办法
3万
查看次数

iOS发送推送与APNs Auth Key:突然"403 Forbidden:{"reason":"InvalidProviderToken"}"

我正在发送带有APNs Auth Key("永不过期")的推送通知,这种通知效果很好,直到我突然得到

403 Forbidden: {"reason":"InvalidProviderToken"}
Run Code Online (Sandbox Code Playgroud)

作为发送推送通知时的响应.当它工作一次并突然间没有失效日期时,可能是什么原因?与此同时,它再次推动了一些推动,但现在我再次得到错误...有没有其他人经历过这个?

编辑

不确定,但似乎这只发生在Ubuntu服务器上,而不是在我的本地(OS X)机器上...

apple-push-notifications

21
推荐指数
3
解决办法
3264
查看次数