過去数週間、Phonegap 2 ベース アプリで PushNotification をセットアップしようとしていました。
ここに私が行った手順があります。
PushNotification フォルダーを plugins フォルダーにドラッグします。
(ソース: joelchu.com )ドキュメントごとに次の指示に従ってください
(ソース: joelchu.com )Cordova.plist
プラグイン セクションに PushNotification / PushNotification を追加次を変更し
AppDelegate.m
ます。- (void) dealloc { [super dealloc]; } /* START PUSH MODIFCATION */ #pragma PushNotification delegation - (void)application:(UIApplication*)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"]; [pushHandler didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; } - (void)application:(UIApplication*)app didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"]; [pushHandler didFailToRegisterForRemoteNotificationsWithError:error]; } - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo { PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"]; NSMutableDictionary* mutableUserInfo = [userInfo mutableCopy]; // Get application state for iOS4.x+ devices, otherwise assume active UIApplicationState appState = UIApplicationStateActive; if ([application respondsToSelector:@selector(applicationState)]) { appState = application.applicationState; } [mutableUserInfo setValue:@"0" forKey:@"applicationLaunchNotification"]; if (appState == UIApplicationStateActive) { [mutableUserInfo setValue:@"1" forKey:@"applicationStateActive"]; [pushHandler didReceiveRemoteNotification:mutableUserInfo]; } else { [mutableUserInfo setValue:@"0" forKey:@"applicationStateActive"]; [mutableUserInfo setValue:[NSNumber numberWithDouble: [[NSDate date] timeIntervalSince1970]] forKey:@"timestamp"]; [pushHandler.pendingNotifications addObject:mutableUserInfo]; } } /* END PUSH MODIFICATION */ @end
最初のエラー
不明な型名 PushNotification
したがって、最後のインポートの直後に次の行を追加します。
#import "PushNotification.h"
これで問題は解決します。
次の問題
CDVPlugin.h ファイルが見つかりません
そこで、すべてのビルド設定に、ユーザー ヘッダー検索パスに以下を追加します。
$(CORDOVALIB)/Classes (recursive)
次の問題
その後、20 を超えるエラーがスローされます。
(ソース: joelchu.com )
私は何を間違えましたか?
至る所で上下に検索しています。驚いたことに、誰も問題を抱えていないようです。
私のセットアップの詳細:
- フォンギャップ 2.0
- XCode 4.5 (プレビュー 4)
- iOS 6 ベース (iOS 5 以降のアプリビルド)
誰かが答えてくれることを願っています。ありがとうございました。
(PS Phonegap PushNotification プラグインが壊れている場合は、まだ 4 か月間更新されていません。無料の代替手段はありますか?ありがとうございます)
私は自分のブログで同じ問題を説明しました。
修正済み(今のところ)
修繕
/* START BLOCK */
#pragma PushNotification delegation
- (void) application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"];
[pushHandler didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
- (void) application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"];
[pushHandler didFailToRegisterForRemoteNotificationsWithError:error];
}
- (void) application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"];
NSMutableDictionary* mutableUserInfo = [userInfo mutableCopy];
// Get application state for iOS4.x+ devices, otherwise assume active
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)]) {
appState = application.applicationState;
}
[mutableUserInfo setValue:@"0" forKey:@"applicationLaunchNotification"];
if (appState == UIApplicationStateActive) {
[mutableUserInfo setValue:@"1" forKey:@"applicationStateActive"];
[pushHandler didReceiveRemoteNotification:mutableUserInfo];
} else {
[mutableUserInfo setValue:@"0" forKey:@"applicationStateActive"];
[mutableUserInfo setValue:[NSNumber numberWithDouble: [[NSDate date] timeIntervalSince1970]] forKey:@"timestamp"];
[pushHandler.pendingNotifications addObject:mutableUserInfo];
}
}
/* STOP BLOCK */
私がしたこと - 最初の2つ
- (void)application:(UIApplication*)app
に変更
- (void) application:(UIApplication*)application
そして私は
#import "PushNotification.h"
ブロックの先頭に (変更コードの直前ではなく、@end がコンテキストにない問題を引き起こします)。
私はまだJavaScriptインターフェースを実行していません。しかし、すべてのエラーがなくなりました。
ありがとう。