【问题标题】:How can I create iOS push notifications that don’t vibrate?如何创建不振动的 iOS 推送通知?
【发布时间】:2014-05-20 07:00:27
【问题描述】:

我知道如何创建无声推送通知(播放无声的声音文件)。 我还想发送一个不振动手机的推送通知。

按照以下建议设置静音文件时,手机在锁定或应用未激活时仍会振动。

我的有效载荷仍在振动:

{
    aps =     {
        alert =         {
            "loc-key" = "SOME_KEY";
        };
        badge = 1;
        sound = "silence.caf";
    };
}

这可能吗?

【问题讨论】:

  • 声音 = "";试试这个:)
  • @DavidR。他问的是“发送不振动手机的推送通知”。
  • 是的,我需要知道如何关闭振动。
  • 是的,我能理解他的问题。同样的事情我想告诉只是把静音的声音。如果有声音,那么设备没有振动
  • sound="" 无法正常工作,手机仍在振动。

标签: ios iphone objective-c push-notification


【解决方案1】:

省略声音键应该可以解决问题:

{"aps":{"alert":{"loc-key":"SOME_KEY"}, "badge":1}

The docs 声明“如果声音文件不存在或将默认值指定为值,则播放默认警报声音。”。他们没有说的是,如果您根本不提供声音键,则不会播放声音。如果没有播放声音,手机也不应该振动。

【讨论】:

  • 确认这对我也有用。我有一个类似的问题,我在注册 pushNotifications 时注册了 Sounds,但在 apns 有效负载中不包括“声音”键。接到通知时,没有任何震动。当我们包含“声音”键但带有空白字符串时,通知会振动手机/苹果手表。希望这对遇到类似问题的人有所帮助!
  • 我想它不再起作用了。我只像这样发送警报正文 {"aps":{"alert":{"loc-key":"SOME_KEY"}} 并且即使没有指定“声音”键,仍然会发生振动。
  • @wildmonkey 这是个不幸的消息。你在哪个版本的 iOS 上得到了这个结果?
  • @TammoFreese 我目前正在 iOS 8.4 上测试
  • @OxenBoxen 我怎样才能设置为无振动只发出声音?我只想要声音没有振动....
【解决方案2】:

我是这样做的:服务器向设备发送一个带有声音文件名的推送,该文件名是无声的。 就是这样。

例子:

来自服务器的传入负载:

{ aps = { "content-available" = 1; sound="silence.mp3" }; data-id = 1234; }

设备在AppDelegate处理它:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    NSInteger data_id= [userInfo[@"data-id"] integerValue];
    NSLog(@"Data-id: %i", data_id);
    //
    //  code...
    //
    // UIBackgroundFetchResultNoData/UIBackgroundFetchResultFailed/UIBackgroundFetchResultNewData
    completionHandler(UIBackgroundFetchResultNewData);
}

【讨论】:

  • 当手机被锁定时它仍然会振动(ios 7.1),因此 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 被执行。
【解决方案3】:

当您注册推送通知时,不要询问声音类型 (UIRemoteNotificationTypeSound)

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

您可以通过手动移除通知设置中的声音权限来测试这一点

【讨论】:

  • 但是,如果我想要某些类型的有声音通知和一些没有声音和振动的通知呢?
【解决方案4】:
[[UIApplication sharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge];

请尝试使用上述代码 AppDelegate 的 applicationDidFinsihLaunching 方法注册远程通知

【讨论】:

    【解决方案5】:

    我遇到了类似的问题。可以通过在项目功能中设置后台获取来修复振动

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多