Pushwoosh sdk不适用于Nativescript ios应用程序

时间:2017-06-18 12:21:58

标签: ios typescript nativescript pushwoosh

我尝试在我的Nativescript(angular with typescript)项目中使用PushWoosh SDK(http://docs.pushwoosh.com/docs/native-ios-sdk)。 因此我做了以下事情:

  1. 扩展UIApplicationDelegate(下面的代码)
  2. 添加了nativescript-entitlments插件。使用aps-environment(尝试开发和生产价值)。
  3. 在info.plist中添加了所需的道具(甚至包括Pushwoosh_APPID_dev),并向UIBackgroundModes添加了远程通知
  4. 创建并将我的证书上传到两个不同的pushwoosh应用程序(一个用于dev,一个用于prod)。并让我的AppId允许推送通知
  5. 创建并安装了pushwoosh插件。其中包括一个podfile。 (我甚至尝试在该podfile中添加' use_frameworks!'。
  6. 我试过通过本地"运行ios"并且还通过TestFlight
  7. 在设备上运行的结果:

    1. 委托运行,SDK方法被调用而没有错误。该应用程序要求我在打开时允许推送通知。
    2. 在Pushwoosh门户网站中,我可以看到我的IOS设备数量有所变化,但没有一个设备是"推送启用" (这是什么意思?)
    3. 在Pushwoosh统计数据中,我可以看到" app open"来自IOS的活动。
    4. application.currentUserNotificationSettings似乎没问题
    5. application.registeredForRemoteNotifications返回True。
    6. PushWoosh静态方法' PushNotificationManager.getRemoteNotificationStatus'返回值为1的所有内容(启用,声音等)。
    7. 在调试模式下,我可以看到Pushwoosh很好地读取了AppCode(以及名称和hwid)属性。
    8. 当我在设备上运行时,我发现控制台中没有Pushwoosh日志记录。即使我在info.plist中使用了Pushwoosh_LOG_LEVEL VERBOSE。 但如果我在模拟器上运行它,我可以看到Pushwoosh日志事件和传出请求。 为什么?日志很重要,模拟器和设备之间有什么不同?我尝试了很多东西来解决这个问题。 可以做些什么?
    9. 似乎一切都很好,但是没有调用注册回调,如果我尝试调用" getPushToken" in" applicationDidBecomeActive"它是空的,正如我所说 - 没有"推动启用" Pushwoosh门户网站中的设备。

      AppDelegate.ios.ts:

      import * as application from "application";
      import "@zapsod/ns-pushwoosh" // My PW Plugin
      import { ios } from "application";
      import {platformCommon} from "./platform-common"
      
      declare var PushNotificationManager;
      declare var PushNotificationDelegate;
      declare interface PushNotificationDelegate{
      
      onPushAccepted(pushManager, withNotification, onStart);
      
      didRegisterForRemoteNotificationsWithDeviceToken(deviceToken);
      
      didFailToRegisterForRemoteNotificationsWithError(error);
      
      didReceiveRemoteNotification(userInfo, completionHandler);
      }
      var pushManager =PushNotificationManager.pushManager();
      
      //var PushNotificationManager = <any>pw.PushNotificationManager;
      
      export class MyDelegate extends UIResponder implements 
      UIApplicationDelegate, PushNotificationDelegate{
      public static ObjCProtocols = [UIApplicationDelegate, 
      PushNotificationDelegate];
      
      applicationDidFinishLaunchingWithOptions(application: UIApplication, 
      launchOptions): boolean {
          console.profile();
          console.log("applicationWillFinishLaunchingWithOptions: ", this)
          pushManager.delegate = this;
          UNUserNotificationCenter.currentNotificationCenter().delegate = 
          pushManager.notificationCenterDelegate;
          pushManager.sendAppOpen();
          console.log(application.currentUserNotificationSettings);
          pushManager.registerForPushNotifications();
      
          return true;
      }
      
      applicationDidBecomeActive(application: UIApplication): void {
          console.log("applicationDidBecomeActive:  " + application)
      
          console.log("is registered", 
      application.registeredForRemoteNotifications)
      }
      
      onPushAccepted(pushManager, withNotification, onStart){
          console.log("pushaccepted", withNotification)
      }
      
      didRegisterForRemoteNotificationsWithDeviceToken(deviceToken) {
          console.info("registered for pushed token ", platformCommon)
          platformCommon.pushToken = deviceToken;
          pushManager.handlePushRegistration(deviceToken);
      }
      
      didFailToRegisterForRemoteNotificationsWithError(error){
          console.error("failed to register push ", error)
          pushManager.handlePushRegistrationFailure(error)
      }
      
      didReceiveRemoteNotification(userInfo, completionHandler){
          pushManager.handlePushReceived(userInfo);
          completionHandler(UIBackgroundFetchResult.NoData);
      }
      }
      application.ios.delegate = MyDelegate;
      

0 个答案:

没有答案