0

phonegap を使用して iOS アプリをユーザーに開発しています。アプリのプッシュ通知を行っています。次のチュートリアルに従ってください。

http://devgirl.org/2012/10/19/tutorial-apple-push-notifications-with-phonegap-part-1/

そして、デバイストークンの登録に問題があります.xcodeコードからdeviceTokenをjavascriptに保存したいのですが、phonegapを使用してアプリを開発する理由であるObjective-C言語を知りません.XcodeでdeviceTokenを見つける方法を調査してみます.次に、ここに例を示します

   - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
  {
    NSLog(@"My token is: %@", deviceToken);
  }

deviceToken 文字列変数を javascript に渡すにはどうすればよいですか?それは可能ですか?

4

2 に答える 2

3

私はあなたが使用しているチュートリアルを書きました。実際に PhoneGap で一般的な PushNotification プラグインを使用するgithub のサンプルへのリンクがあります。サンプル コードでは、プラグインを使用してデバイス トークンを返すことで、JavaScript からデバイス トークンを保存できるようになっています。

プラグインを使用するサンプルから、objective-c で参照しているメソッドは次のとおりです。

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    NSLog(@"Calling push notification next, my registered token is: %@", deviceToken);
    // Code for phonegap communication - calls this method in PushNotification.m
    PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"];
    [pushHandler didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

これにより、次の PushNotification プラグイン コードが呼び出されます。

- (void)didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken:%@", deviceToken);
    DLog(@"didRegisterForRemoteNotificationsWithDeviceToken:%@", deviceToken);

    NSString *token = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"   <"withString:@""]
                    stringByReplacingOccurrencesOfString:@">" withString:@""]
                   stringByReplacingOccurrencesOfString: @" " withString: @""];

    NSMutableDictionary *results = [PushNotification getRemoteNotificationStatus];
    [results setValue:token forKey:@"deviceToken"];   
    CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:results];
    [self writeJavascript:[pluginResult toSuccessCallbackString:[self.callbackIds valueForKey:@"registerDevice"]]];

}

次に、JavaScript でコールバックから参照できます。

register: function() {
    var pushNotification = window.plugins.pushNotification;
    pushNotification.registerDevice({alert:true, badge:true, sound:true}, function(status) {
        app.myLog.value+=JSON.stringify(['registerDevice status: ', status])+"\n";
        app.storeToken(status.deviceToken);
    });
},
storeToken: function(token) {
    console.log("Token is " + token);
    ...
}    

詳細については、完全なサンプル コードとチュートリアルをご覧ください。

それが役立つことを願っています:)

于 2012-12-07T11:23:25.583 に答える
0

次の 2 行のコードdidRegisterForRemoteNotificationsWithDeviceTokenAppDelegate.m

NSString* jsString = [NSString stringWithFormat:@"var deviceToken = \"%@\";", deviceToken];
    [self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];

JS ファイルでは、DeviceToken に次のようにアクセスします。

DeviceToken = (typeof deviceToken !== "undefined") ? deviceToken : "";

そして、要件に従って DeviceToken を使用します。

于 2014-11-28T14:30:10.890 に答える