1

私は、iOSアプリケーションでプッシュ通知を処理するUrbanAirshipを使用しています。私はUAPushNotificationDelegateを実装したいと思います。ここで私のコードはappdelegateです。機能のUrbanairship delegate not working

//Appdelegate.m 
UAConfig *config = [UAConfig defaultConfig]; 
[UAirship takeOff:config]; 

[[UAirship push] updateRegistration]; 
[UAirship push].userNotificationTypes = (UIUserNotificationTypeAlert | 
             UIUserNotificationTypeBadge | 
             UIUserNotificationTypeSound); 

[UAirship push].autobadgeEnabled = YES; 
[UAirship push].userPushNotificationsEnabled = YES; 
PushHandler *pushHandlerDelegate = [[PushHandler alloc] init]; 
[UAirship push].pushNotificationDelegate = pushHandlerDelegate; 
ここ

は私PushHandler.hファイルです

// PushHandler.h 
@interface PushHandler : NSObject<UAPushNotificationDelegate> 

@end 

それから私は私の実装ファイルにUrbanAirshipメソッドを実装し

- (void)receivedForegroundNotification:(NSDictionary *)notification fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 
// Call the completion handler 
    completionHandler(UIBackgroundFetchResultNoData); 
} 
- (void)launchedFromNotification:(NSDictionary *)notification fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 
// Call the completion handler 
    completionHandler(UIBackgroundFetchResultNoData); 
} 

- (void)launchedFromNotification:(NSDictionary *)notification actionIdentifier:(NSString *)identifier completionHandler:(void (^)())completionHandler { 
// Call the completion handler 
    completionHandler() 
} 

- (void)receivedBackgroundNotification:(NSDictionary *)notification actionIdentifier:(NSString *)identifier completionHandler:(void (^)())completionHandler { 
// Call the completion handler 
    completionHandler() 
} 

- (void)receivedBackgroundNotification:(NSDictionary *)notification fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 
// Call the completion handler 
    completionHandler(UIBackgroundFetchResultNoData); 
} 

しかし、非、私はプッシュを受けたときに呼び出しています。どこが間違っていますか?

+0

こんにちは。あなたは解決策を見つけましたか? –

答えて

1

UAPushは、デリゲートへの弱い参照のみを格納します。コードのどこかに強い参照を格納する必要があります。

例:

@interface AppDelegate() 
@property(nonatomic, strong) PushHandler *pushHandlerDelegate; 
@end 

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    ... 

    self.pushHandlerDelegate = [[PushHandler alloc] init]; 
    [UAirship push].pushNotificationDelegate = self.pushHandlerDelegate; 
} 
+1

こんにちは..お返事ありがとうございますが、引き続きフォアグラウンド通知のみにアクセスできます。アプリがバックグラウンドにあるときは、プッシュを取得できません。プッシュは受信していますが、「receivedBackgroundNotification:」メソッドを起動していません。 –

+0

コンテンツ利用可能プッシュを送信し、バックグラウンドのリモート通知が有効になっている場合、APNSはアプリを起動させます。また、バックグラウンドのリフレッシュが有効になっていることを確認して、タスクスイッチャーでアプリを強制終了していないことを確認してください。 – ralepinski