如何在收到通知后立即播放声音?

应用程序A正在将通知推送到应用程序B,如下所示:

NSDictionary *data = @{ @"alert" : @"Purchase Successful! 1 Remove Ads", @"badge" : @"Increment", @"sounds" : @"Bell.caf", }; PFPush *push = [[PFPush alloc] init]; [push setChannels:@[ @"Mets" ]]; [push setData:data]; [push sendPushInBackground]; 

应用程序B接收推送通知,如下所示:

 // // ParseStarterProjectAppDelegate.m // // Copyright 2011-present Parse Inc. All rights reserved. // #import <Parse/Parse.h> // If you want to use any of the UI components, uncomment this line // #import <ParseUI/ParseUI.h> // If you are using Facebook, uncomment this line // #import <ParseFacebookUtils/PFFacebookUtils.h> // If you want to use Crash Reporting - uncomment this line // #import <ParseCrashReporting/ParseCrashReporting.h> #import "ParseStarterProjectAppDelegate.h" #import "ParseStarterProjectViewController.h" @implementation ParseStarterProjectAppDelegate #pragma mark - #pragma mark UIApplicationDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Enable storing and querying data from Local Datastore. Remove this line if you don't want to // use Local Datastore features or want to use cachePolicy. [Parse enableLocalDatastore]; // **************************************************************************** // Uncomment this line if you want to enable Crash Reporting // [ParseCrashReporting enable]; // // Uncomment and fill in with your Parse credentials: [Parse setApplicationId:@"APPIDHERE" clientKey:@"CLIENTKEYHERE"]; // // If you are using Facebook, uncomment and add your FacebookAppID to your bundle's plist as // described here: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/ // [PFFacebookUtils initializeFacebook]; // **************************************************************************** [PFUser enableAutomaticUser]; PFACL *defaultACL = [PFACL ACL]; // If you would like all objects to be private by default, remove this line. [defaultACL setPublicReadAccess:YES]; [PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES]; // Override point for customization after application launch. self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; if (application.applicationState != UIApplicationStateBackground) { // Track an app open here if we launch with a push, unless // "content_available" was used to trigger a background push (introduced in iOS 7). // In that case, we skip tracking here to avoid double counting the app-open. BOOL preBackgroundPush = ![application respondsToSelector:@selector(backgroundRefreshStatus)]; BOOL oldPushHandlerOnly = ![self respondsToSelector:@selector(application:didReceiveRemoteNotification:fetchCompletionHandler:)]; BOOL noPushPayload = ![launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; if (preBackgroundPush || oldPushHandlerOnly || noPushPayload) { [PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions]; } } #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound); UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; [application registerUserNotificationSettings:settings]; [application registerForRemoteNotifications]; } else #endif { [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; } return YES; } #pragma mark Push Notifications - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { PFInstallation *currentInstallation = [PFInstallation currentInstallation]; [currentInstallation setDeviceTokenFromData:deviceToken]; [currentInstallation saveInBackground]; [PFPush subscribeToChannelInBackground:@"Mets" block:^(BOOL succeeded, NSError *error) { if (succeeded) { NSLog(@"ParseStarterProject successfully subscribed to push notifications on the broadcast channel."); } else { NSLog(@"ParseStarterProject failed to subscribe to push notifications on the broadcast channel."); } }]; } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { if (error.code == 3010) { NSLog(@"Push notifications are not supported in the iOS Simulator."); } else { // show some alert or otherwise handle the failure to register. NSLog(@"application:didFailToRegisterForRemoteNotificationsWithError: %@", error); } } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [PFPush handlePush:userInfo]; if (application.applicationState == UIApplicationStateInactive) { [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; } } /////////////////////////////////////////////////////////// // Uncomment this method if you want to use Push Notifications with Background App Refresh /////////////////////////////////////////////////////////// //- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // if (application.applicationState == UIApplicationStateInactive) { // [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; // } //} #pragma mark Facebook SDK Integration /////////////////////////////////////////////////////////// // Uncomment this method if you are using Facebook /////////////////////////////////////////////////////////// //- (BOOL)application:(UIApplication *)application // openURL:(NSURL *)url // sourceApplication:(NSString *)sourceApplication // annotation:(id)annotation { // return [PFFacebookUtils handleOpenURL:url]; //} @end 

当App B收到推送通知时,我怎么听不到任何声音? 当应用程序closures并且出现横幅通知(我想要一个声音)时没有声音播放,当应用程序打开并且通知出现(只是振动,这很奇怪)时没有播放声音。 为什么是这样的,我该如何解决?

像这样做:

  NSDictionary *data = @{ @"alert" : @"you daily milk temp", @"badge" : @"Increment", @"sound" : @"super.caf" }; PFPush *pusher = [[PFPush alloc] init]; [pusher setChannels:@[ @"deviceTemperatureReading" ]]; [pusher setData:data]; [pusher sendPushInBackground]; 

“super.caf”是一个声音文件