OneSignal不调用didReceiveRemoteNotification [英] OneSignal Not calling didReceiveRemoteNotification

查看:100
本文介绍了OneSignal不调用didReceiveRemoteNotification的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们从UA迁移到One Signal.我们正在从类似云的代码中发送推送

We migrated from UA to One Signal. We are sending push from cloud code like

var pushInfo = {
      "app_id" : "xxxxxx",          
      "data": {
          "objectId": objectId,
          "placeId": placeId,
      },
      "included_segments": ["All Users"],
      "contents": {"en": message}
};
var headers = {
    "Content-Type": "application/json; charset=utf-8",
    "Authorization": "Basic XXXXX"
};

var options = {
 host: "onesignal.com",
 port: 443,
 path: "/api/v1/notifications",
 method: "POST",
 headers: headers,
};

var https = require('https');
var req = https.request(options, function(res) {  
res.on('data', function(data) {
  console.log("Response:");
  console.log(JSON.parse(data));
});
});

req.on('error', function(e) {
console.log("ERROR:");
console.log(e);
 });  
req.write(JSON.stringify(pushInfo));
req.end();

在我的AppDelegate.m中

In my AppDelegate.m I do

[OneSignal initWithLaunchOptions:launchOptions appId:@"XXXXX"];

现在,当收到通知并且用户点击通知时,它曾经用于呼叫

Now earlier when a notification is received and user Taps on it, it used to call

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

问现在没有被调用.我如何使用OneSignal处理它. 问:我需要做些什么来处理无提示通知(没有可见的徽章/横幅等)

Q. This is not getting called now. How do I handle it with OneSignal. Q. What I need to do to handle a silent notification (no visible badge/banner etc)

推荐答案

我假设您正在iOS10设备上测试/运行您的应用,

I Assume you are testing/running your app on an iOS10 device,

我查看了OneSignal SDK代码,我认为当设备上检测到iOS10时,SDK会自动使用新的UserNotifications框架(iOS10中已添加).

I looked at OneSignal SDK Code and I think the SDK automatically uses the new UserNotifications Framework (add in iOS10), when iOS10 is detected on device.

在这种情况下,您上面提到的AppDelegate方法不会被调用,而是

In this case, the AppDelegate method you mentioned above does not get invoked, instead methods in UNUserNotificationCenterDelegate get invoked, which are captured by SDK to record clicks/views.

要解决此问题,请创建一个实现OSUserNotificationCenterDelegate的新类,并使用[OneSignal setNotificationCenterDelegate:yourCustomNotificationCenterDelegateInstance]

To Fix the issue, Create a new class which implements OSUserNotificationCenterDelegate and provide its instance to OneSignal using [OneSignal setNotificationCenterDelegate:yourCustomNotificationCenterDelegateInstance]

请注意,当无声推送通知(内容可用:1)到达时,仍会调用application:didReceiveRemoteNotification:fetchCompletionHandler:,但是如果使用UNUserNotificationCenterDelegate,则用户点击通知时不会调用它.

Please note that application:didReceiveRemoteNotification:fetchCompletionHandler: is still called when a silent push notification (content-available: 1) arrives, but its not called when user taps the notification if UNUserNotificationCenterDelegate is used.

此外,iOS 10.0.X上还有一个问题,其中调用了application:didReceiveRemoteNotification而不是application:didReceiveRemoteNotification:fetchCompletionHandler:,请参见: https://forums.developer.apple.com/thread/54332 ,但我怀疑您是否是这种情况.

Also, there was an issue on iOS 10.0.X where the application:didReceiveRemoteNotification was called instead of application:didReceiveRemoteNotification:fetchCompletionHandler: See: https://forums.developer.apple.com/thread/54332 , but I doubt if this is the case with you.

这篇关于OneSignal不调用didReceiveRemoteNotification的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆