2017-02-23 17 views
0

私のフレームワークのコードの下で自分のフレームワークを素早く作成しました。 フレームワークでApiID、ApiKey、ApiSecretの値を渡すとうまく動作しますが、私の素早いプロジェクトで値を渡したいのですが、そうすると動作しません。迅速なプロジェクトで価値を渡し、独自のフレームワーク機能を迅速に作成する方法

public class PushNotification: NSObject { 

var ApiID:Int? 
var ApiKey:String? 
var ApiSecret:String? 

public func didRegisterForRemoteNotificationsWithDeviceToken(deviceToken: Data,apiKey:String,apiSecret:String,apiId:Int) 
{ 
    // Convert Device Token into String 
    let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}) 
      print(deviceTokenString) 

    ApiKey = apiKey 
    ApiSecret = apiSecret 
    ApiID = apiId 
    let AppId = Bundle.main.bundleIdentifier! 

    // Get Unique Device ID 
    let oNSUUID: UUID = UIDevice.current.identifierForVendor! 

    let post: String = "appid=\(AppId)&deviceid=\(deviceTokenString)&ApiID=\(ApiID)&ApiKey=\(ApiKey)&ApiSecret=\(ApiSecret)&os=\("ios")&regId=\(oNSUUID.uuidString)" 

    let postData:Data = post.data(using: String.Encoding.ascii)! 
    let postLength:NSString = String(postData.count) as NSString 
    let urlstring = "https://www.abc.php" 
    let url = URL(string: urlstring) 
    var request = URLRequest(url: url!) 
    request.httpMethod = "POST" 
    request.httpBody = postData 
    request.setValue(postLength as String, forHTTPHeaderField: "Content-Length") 
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
    let connection: NSURLConnection = NSURLConnection(request: request as URLRequest, delegate: self)! 
    connection.start() 
} 

私のプロジェクトコードは、以下の機能のアプリケーションデリゲートクラスとアクセスで値を渡しました。

var APIKEY = "00000" 
var APISECRET = "000000" 
var APIID = 40 

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
print("Device Token \(deviceToken)") 

    let appdetails = PushNotification.init() 
appdetails.didRegisterForRemoteNotificationsWithDeviceToken(deviceToken: deviceToken, apiKey: APIKEY , apiSecret: APISECRET, apiId: APIID) 
} 
+0

トライTOUの使用 'プロパティpublic varをこのコードを貼り付け+アイコンをクリックし、[新しいランタイムスクリプトをクリックして、ターゲットを選択...' – PiterPan

+0

私はプロパティpublic varが、その動作していないを試してみました@ピターパン –

答えて

0

私は上記の解決策を得ました。非常にシンプルな編集スキーマ>アーカイブ>ポストアクションです。ちょうどそのボックスに

set -e 
BUILD_INTERMEDIATES="${OBJROOT}" 
BUILD_PRODUCTS="${SYMROOT}/../../../../Products" 
DEVICE_BIN="${BUILD_INTERMEDIATES}/UninstalledProducts/iphoneos/${TARGET_NAME}.framework" 
SIMULATOR_BIN="${BUILD_PRODUCTS}/Debug-iphonesimulator/${TARGET_NAME}.framework" 

ARCHIVE_PATH="${SRCROOT}/_Archive" 
rm -rf "${ARCHIVE_PATH}" 
mkdir "${ARCHIVE_PATH}" 

if [ "${CONFIGURATION}" = "Release" ]; then 
if [ -d "${DEVICE_BIN}" ]; then 
DEVICE_PATH="${ARCHIVE_PATH}/Release" 
mkdir "${DEVICE_PATH}" 
cp -r "${DEVICE_BIN}" "${DEVICE_PATH}" 
fi 

if [ -d "${SIMULATOR_BIN}" ]; then 
SIMULATOR_PATH="${ARCHIVE_PATH}/Debug" 
mkdir "${SIMULATOR_PATH}" 
cp -r "${SIMULATOR_BIN}" "${SIMULATOR_PATH}" 
lipo -create "${DEVICE_BIN}/${TARGET_NAME}" "${SIMULATOR_BIN}/${TARGET_NAME}" -output "${SIMULATOR_PATH}/${TARGET_NAME}.framework/${TARGET_NAME}" 
fi 
fi 

exit 0;