【问题标题】:didFinishLaunchingWithOptions not Showing Initial Alert (PubNub)didFinishLaunchingWithOptions 未显示初始警报 (PubNub)
【发布时间】:2014-08-11 01:41:38
【问题描述】:

我正在尝试创建一个 PushNotification 应用程序,并且正在使用 PubNub。我已经完成了所有必要的步骤:

  • 在我的工作区中包含 PubNub 库
  • 为应用创建正确的配置文件
  • 确保 PushNotification 在配置文件中
  • 为应用创建正确的 SSL 证书
  • 将证书添加到钥匙串访问中
  • 创建正确的 .pem 文件
  • 已将文件上传到 PubNub
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(     NSDictionary *)launchOptions
{
    // #2 Register client for push notifications
    NSLog(@" Options set");

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    [PubNub setDelegate:self];
    return YES;
}

在收到一些初始编译错误后,我能够在我的设备上运行该应用程序。当我在我的设备上运行该应用程序时,我没有收到我认为应该的“...希望发送 Yo Push Notifications”消息。我可以使用 PubNun 控制台发送消息,我看到消息是通过日志收到的,但我没有收到任何通知或横幅。我在didFinishLaunchingWithOptions 方法中放置了一个NSLog,我在日志中看到了显示。

之后,我从设备中删除了应用程序,从设备中删除了配置文件,重新声明了 Xcode,然后再次编译,结果相同。不知道接下来要尝试什么。

【问题讨论】:

    标签: ios objective-c push alert pubnub


    【解决方案1】:

    编辑:您遇到的具体问题与您通过 Xcode 运行应用程序这一事实有关,简而言之,您不能以这种方式测试生产推送通知,您必须使用沙盒推送服务器和证书。如果您想测试产品推送,您需要分发使用 Ad Hoc 配置文件签名的应用程序。我确信有一百万种方法可以做到这一点,但实际上我最喜欢的两个是使用 Testflight 和 Crashlytics 的新 Beta 功能,它允许您基本上使用单行将临时构建分发到设备代码,一旦你归档一个新的构建。我会推荐 Crashlytics,因为它还能自动处理非常有用的分析以及崩溃报告。

    如果您指的是初始推送通知权限弹出窗口,它只会显示一次或应用程序的生命周期。我认为解决此问题的唯一方法是卸载 up 并将其卸载 3 天(我相信这是限制)。

    很遗憾,我不熟悉 PubNub,但在您的应用程序中,您是否注册推送通知并接收设备令牌?

    【讨论】:

    • 是的。我正在收到令牌。我在日志中看到了所有正确的消息。另一件有趣的事情是,当我从 PubNub 控制台发送消息时,“didReceiveRemoteNotification”没有发出警报。由于某种原因,它也永远不会到达此代码,我在 AppDelegate.m 中有此代码。
    • 你如何在设备上运行应用程序,插入 xcode?​​span>
    • 是的。该设备已插入 Xcode。我也尝试在设备断开连接的情况下运行该应用程序。 PubNub 控制台显示成功,但设备上没有任何内容。
    • 那是你的问题,我会稍微更新一下答案 - 但简而言之,当应用程序通过 xcode 运行时,你无法收到推送通知,你需要在 ad hoc 上对其进行测试构建。
    • 在使用开发配置文件和应用 ID 和我的设备时创建了一个 AdHoc 配置文件。仍然没有运气。我将尝试使用 Crashlytics 产品,看看我是否忘记了配置文件或实现中的其他内容。
    【解决方案2】:

    凯文,

    如果这就是您尝试做的所有事情,使用 PubNub 服务接收通知,那是不够的。 收到设备推送通知令牌后,需要将其传递给 PubNub 客户端库,例如默认配置如下:

    - (BOOL)            application:(UIApplication *)application 
      didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        // Initialise PubNub client.
        // Warning, you should use pub/sub/secret keys for your account (at admin.pubnub.com) to 
        // which you uploaded your development push notification certificate (in .pem file).
        [PubNub setupWithConfiguration:[PNConfiguration defaultConfiguration] andDelegate:self];
        [PubNub connect];
    
        UIRemoteNotificationType type = (UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound);
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:type];
    
        return YES;
    }
    
    - (void)                               application:(UIApplication *)application 
      didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    
        [PubNub enablePushNotificationsOnChannel:[PNChannel channelWithName:@"my-test-channe-for-push-notifications"] 
                             withDevicePushToken:deviceToken];
    }
    
    // Observe for some PubNub delegate methods related to push notification observation (or use completion block enabled version of API):
    - (void)pubnubClient:(PubNub *)client didEnablePushNotificationsOnChannels:(NSArray *)channels {
    
        NSLog(@"PubNub client enabled push notifications on channels: %@", channels);
    }
    
    - (void)pubnubClient:(PubNub *)client pushNotificationEnableDidFailWithError:(PNError *)error {
    
        NSLog(@"PubNub client failed push notification enable because of error: %@", error);
    }
    

    如果您看到推送通知启用已成功,请使用 http://pubnub.com/console 和您帐户 http://admin.pubnub.com 中的 pub/sub/secret 密钥 将消息发送到频道(在我们的案例 "aps" 有效载荷应发送到名称为 "my-test-channe-for-push-notifications" 的频道。

    【讨论】:

    • 你是救生员。我在所有指南中都没有看到必须运行一个名为 enablePushNotifications 的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多