UrbanAirship pushNotificationDelegate永远不会被召唤

时间:2014-03-17 10:30:20

标签: ios urbanairship.com

我使用UrbanAirship管理iOS应用中的通知。 我想在如何管理通知时添加一些特定的行为,因此我决定在自定义处理程序上实现协议UAPushNotificationDelegate

在这个协议中,我只是在这两个函数中添加一些NSLog用于测试目的。

- (void)displayNotificationAlert:(NSString *)alertMessage{
    NSLog(@"Foreground Alert");
}

- (void)launchedFromNotification:(NSDictionary *)notification{
   ....Here I added code to present an alert view...
}

然后在AppDelegate方法中didFinishLaunchingWithOptions我添加了UrbanAirship配置:

// UrbanAirship data
UAConfig *config = [UAConfig defaultConfig];
[UAirship takeOff:config];

// THE DELEGATE!
UANotificationDelegate *pushDelegate = [[UANotificationDelegate alloc]init];
[UAPush shared].pushNotificationDelegate = pushDelegate;

[UAPush shared].notificationTypes = (UIRemoteNotificationTypeBadge |
                                     UIRemoteNotificationTypeSound |
                                     UIRemoteNotificationTypeAlert );

这是我用来测试代码的测试curl调用。

   curl -X POST -u "_APPKEY_:_MASTERKEY_" \
   -H "Content-Type: application/json" \
   --data '{"device_tokens": ["_THETOKEN_"], 
   "aps": {"alert": "Hello!"}}' \
   https://go.urbanairship.com/api/push/

我的设备收到通知,但我的自定义方法永远不会被调用。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

pushNotificationDelegate属性很弱,所以没有什么能阻止你的pushDelegate进入垃圾收集。您希望自己在某处存储pushDelegate变量,以确保它不会被解除分配。