如何创建不振动的 iOS 推送通知?

问题描述 投票:0回答:6

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

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

我的有效负载仍然振动:

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

这可能吗?

ios iphone objective-c push-notification
6个回答
12
投票

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

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

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


0
投票

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

示例:

来自服务器的传入负载:

{ 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);
}

0
投票

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

UIRemoteNotificationTypeSound
)

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

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


0
投票
[[UIApplication sharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge];

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


0
投票

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


0
投票

我必须添加 AppDelegate :

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    NotificationCenter.default.post(name: Notification.Name.init("didReceiveRemoteNotification"), object: completionHandler, userInfo: userInfo)
}

并检查“后台模式”功能中的“远程通知”。

然后我发送一条仅包含数据的通知:

device.send_message(
                    messaging.Message(
                        data = data,
                ), app = FCMApp)
© www.soinside.com 2019 - 2024. All rights reserved.