【问题标题】:Another way to get push device token ios?获取推送设备令牌 ios 的另一种方法?
【发布时间】:2017-07-23 01:52:49
【问题描述】:

我想知道,没有委托方法- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(nonnull NSData *)deviceToken 是否有另一种方法来获取推送设备令牌 因为我使用了 OneSignal,他们不需要遵循该方法来获取设备令牌。

【问题讨论】:

  • 显示一些额外的代码

标签: ios apple-push-notifications push onesignal devicetoken


【解决方案1】:

OneSignal API 声明 IdsAvailable 是您将使用的方法:

[OneSignal IdsAvailable:^(NSString* userId, NSString* pushToken) {
    NSLog(@"UserId:%@", userId);
    if (pushToken != nil)
        NSLog(@"pushToken:%@", pushToken);
}];

是获取token的方法;提到了here

【讨论】:

  • 你在哪里叫这个
  • @Anbu.Karthik:我很确定它是在 - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 中调用的(参见我链接的页面)。
  • 看到这个[OneSignal registerForPushNotifications];你可以在documentation.onesignal.com/docs/…获得文档
  • @Anbu.Karthik:是的,我已经链接了同一个页面; registerForPushNotifications 不返回token,它允许IdsAvailable 方法返回true
  • @kent2508:因为您正在通过他们的 API,他们在他们的服务器上使用 APN 方法,该方法充当中间人。我不会怀疑他们在他们的后端使用那个确切的方法,然后将令牌翻译成他们自己的,然后你可以使用。
【解决方案2】:

您可以像这样为 OneSignal SDK 获取 推送令牌

 OneSignal.promptForPushNotifications(userResponse: { accepted in
  print("User accepted notifications: \(accepted)")
            
  if let deviceState = OneSignal.getDeviceState() {
    let userId = deviceState.userId
    let pushToken = deviceState.pushToken
    let subscribed = deviceState.isSubscribed
    print("pushToken ====> \(pushToken)") //Here you can get the token
  }
 })

继续编码............ :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多